パルス発振器機能 |
周波数 |
1kHz |
デューティ |
30% |
|
周波数カウンタ機能 |
周波数表示 |
約1秒毎に表示 |
デューティ表示 |
約1秒毎に表示 | |
表示 |
PCのTerminal soft画面 |
|
COM PORT パラメータ |
115200bps 8bit odd-parity |
|
周波数表示インジケータ |
LED |
TIM1 |
周期測定回路 |
外部ピンのアサインはSTM8S105C6のハードウエア的に次のように決められています. TIM1_CH1 PC1 (26pin) (CN2-2) へ測定したい信号を入力する. (実験的に TIM1_CH2 PC2 (27pin) (CN2-3) でも試してみる) | 割り込みあり |
TIM2 |
パルス発振器回路 |
外部ピンのアサインはSTM8S105C6のハードウエア的に次のように決められています. TIM2_CH1 PD4 (45pin) (CN4-9) 正出力 TIM2_CH2 PD3 (44pin) (CN4-8) 負出力 | |
TIM3 |
PCのTerminal画面へ表示するインターバル |
割り込みあり | |
UART |
PCとの通信用 |
外部ピンのアサインはSTM8S105C6のハードウエア的に次のように決められています. UART2_RX PD6 (47pin) UART2_TX PD5 (46pin) | 割り込みあり |
clock |
内部16MHzを使用(HSI) |
16MHz |
TIM1 input capture割り込み |
12番 |
外部ピンに入力されるパルス信号の周期をカウントする. パルス信号の1周期ごとに割り込みをかける. TIM1を利用するので、16bitカウンタで、クロックは16MHzである. 測定値は、1周期の長さと、HIGH区間の長さである. 割り込みがかかるごとに、測定結果をTIM1_ICvalueという名の変数に格納する. __________|~~~~~~~|_______________|~~~~~~~|__________ <-----------------------> TIM1_ICvalue1 <-------> TIM1_ICvalue2 |
TIM3 update割り込み |
15番 |
PC上のterminal画面へ表示するインターバルを発生させる約1秒のタイマ. ここでは、16MHz÷1024÷10000=1.54Hz の割り込みを発生させる. |
UART受信割り込み |
21番 |
UARTが文字を受信したら割り込みをかける. |
第1引数 | TIM1_CH1を入力ピンに設定しています |
第2引数 | positiveエッジでカウント開始に設定しています |
第3引数 | InputCapture1とInputCapture2を逆転させるような機能ですが、TIM1_ICSELECTION_DIRECTTI だけ憶えておけばいいでしょう |
第4引数 | 割り込み頻度を下げたいときに使います. 周期測定をするときは、たいてい1周期毎に割り込みをかけます. すると、TIM1_CH1に入力される信号が100Hzだったら10mSecごとに割り込みが発生しますが、10kHzだったら100uSecごとに割り込みが発生します. しかし、100uSecごとに割り込み処理するのは無理です.STM8Sがそんなに高速に処理出来っこありません. なので、TIM1_CH1に入力される信号を間引けば割り込み間隔も長くなって助かるわけです. こういう処理の遅さはソフトウエアで処理する場合には避けようがありません. どうしても100kHzの1周期毎にきっちりと測定したいなら、FPGAを使って純hardware処理するしかないでしょう. さて、この引数の選択肢は、こうなっています.この引数は重要です. TIM1_ICPSC_DIV1 間引きなし TIM1_ICPSC_DIV2 1つ間引き (2分周ではないので注意しましょう) TIM1_ICPSC_DIV4 3つ間引き TIM1_ICPSC_DIV8 7つ間引き |
第5引数 | 外部ピンから入力した信号にはノイズが乗っていることがあるので、誤動作を避けるためにフィルタを挿入する場合にこの引数で設定します 0: フィルタなし 1: fMASTERで2クロック後に再チェック 2: fMASTERで4クロック後に再チェック 3: fMASTERで8クロック後に再チェック 4: fMASTER/2で6クロック後に再チェック 5: fMASTER/2で8クロック後に再チェック 6: fMASTER/4で6クロック後に再チェック 7: fMASTER/4で8クロック後に再チェック 8: fMASTER/8で6クロック後に再チェック 9: fMASTER/8で8クロック後に再チェック 10: fMASTER/16で5クロック後に再チェック 11: fMASTER/16で6クロック後に再チェック 12: fMASTER/16で8クロック後に再チェック 13: fMASTER/32で5クロック後に再チェック 14: fMASTER/32で6クロック後に再チェック 15: fMASTER/32で8クロック後に再チェック |