PIC(2)-タイマー割り込み機能

本日は、PICを使用したタイマー割り込み機能です。タイマー割り込み機能は、一定周期で処理をしたい場合などに使用します。下記のコードは、タイマー機能を使用して、50ms毎にLEDランプが点灯、消灯を繰り返す機能になります。

タイマーのカウント数について考えていきます。今回、クロックは4MHzに設定しています。内部クロックの場合、カウンタは4周期に1カウントするので、今回は1000000カウントできることになります。この場合、LEDの点灯、消灯は1μsecになります。今回は、50msecという設定なので、500000カウントすれば良い事になります。ただし、タイマーのカウントは8bitしか用意されていません。ようするに、256回までしかカウントできません。

そこで、プリスケーラを活用します。プリスケーラは8bit用意されているので、これを活用すると256×256で65536カウントできます。これなら50000カウントできるので、50msecの周期をつくれそうです。50000カウンタをプリスケーラ値256で割ると、約195カウンタになります

タイマーのMAX値の256カウントから195カウントを引いた値をタイマーの初期値にすることで、50msec後にタイマー0割り込みが発生するような機能が構築できます。TMR0にカウンタの初期値を入力するので、TMR0=0x3Dとなっております。このカウンタ値の設定は、メイン関数の部分の他にも、タイマー0割り込み関数でも設定しております。

それでは、コーディングしていきたいと思います。タイマー機能を使用して、50ms毎にLEDランプが点灯、消灯を繰り返す機能のソースコードは下記のようになります。

RX(2)-タイマーLED点滅

今回はRXマイコンを使用して、タイマ-LEDの点滅機能を構築します。使用するマイコンは、「RX66T」になります。「RX66T」CPUボードを使用します。

まずは、新規プロジェクトを作成します。[ファイル]→[新規作成]→[新しいプロジェクトを作成]を選択します。下記のページを参考にしてください。

RX(1)-スイッチによるLED点灯

新規プロジェクトが作成できましたら、プロジェクトツリーのスマート・コンフィグレータをダブルクリックします。スマート・コンフィグレータが起動したら、コンポーネントタブから追加していきます。コンポーネントの追加方法は下記のページを参考にして下さい。

RX(1)-スイッチによるLED点灯

まずは、入出力ポートを追加しました。RX66T CPUボードのLED1は、PORTEのP3になりますので、PORTEにチェックを入れます。

PORTEタブを選択して、P03を出力に設定して、1を出力のチェックボックスをONにします。Highが消灯、Lowが点灯のためです。

次にタイマのコンポーネントを追加します。今回は、16bitタイマを追加します。コンポーネントの追加ボタンを押して、コンポーネントの追加ダイアログを表示します。8bitタイマを選択して、次へボタンを押します。

カウントモードを16 ビットにして終了ボタンを押します。