PICマイコンのタイマーを使用し、500ms間隔でLEDの点灯と消灯を切り替えます。
回路は前回作成したものと同じでプログラムだけ変更します。
次のようなステップになります。
- 前回作成した回路を用意する
- MPLABのプロジェクトを作成する
- C言語でプログラムを作成する
- MPLAB X IDEでプログラムをPICに書き込む
- PICをブレッドボードに取り付けてLEDを点灯させる
1. 前回作成した回路を用意する
省略
2. MPLABのプロジェクトを作成する
前回と同様にプロジェクトを作成します
名前は、pic_0002_led_timer
とします。
3. C言語でプログラムを作成する
まずは、タイマー割り込みの間隔を決定します。タイマーの割り込み間隔は以下の式で決定します。
タイマーの割り込み間隔[s] = 1 / (タイマクロック[Hz] / プリスケーラーレート / タイマカウント値)
タイマクロックはシステムクロック(FOSC)の4分の1の値(FOSC/4)です。
プリスケーラーレートが取りうる値は、2~256です。
タイマカウント値が取りうる値は、8bitタイマーなので1~256です。
この条件を満たすようにそれぞれの値を決定します。なお、現在の回路のシステムクロックは20[MHz]
なので、タイマクロックは5[MHz]
です。
タイマーの割り込み間隔によっては、複数の組み合わせが存在します。例えば、
- タイマーの割り込み間隔を
10[ms]
にしたい場合- プリスケーラーレートは256、タイマカウント値は195
- 195 = 10[ms] * 5[MHz] / 256
- プリスケーラーレートは256、タイマカウント値は195
- タイマーの割り込み間隔を
2[ms]
にしたい場合- プリスケーラーレートは128、タイマカウント値は78
- 78 = 2[ms] * 5[MHz] / 128
- プリスケーラーレートは64、タイマカウント値は156
- 156 = 2[ms] * 5[MHz] / 64
- プリスケーラーレートは128、タイマカウント値は78
タイマの割り込み間隔は10[ms]
間隔とし、前回と同様にソースファイルをプロジェクトに追加します。
Source code
1 |
|
解説
割り込み間隔は10[ms]
なので、50回
割り込みが発生すると500[ms]
経過していることになります。
50回割り込みが発生したらPORTBbits.RB0
を反転します。
これでLEDが500[ms]間隔で点滅します。
4. MPLAB X IDEでプログラムをPICに書き込む
省略
5. PICをブレッドボードに取り付けてLEDを点滅させる
省略