PIC24Fのタイマ モジュールの使い方


【PIC24Fのタイマモジュール】

 IC24Fファミリには、どのデバイスにもタイマ1からタイマ5の5組の16ビットタイマが
内蔵されています。
5個のタイマの基本的な構成は同じですが、少し異なる部分があってA、B、Cの
3タイプに分けられます。
  タイプA : タイマ1
  タイプB : タイマ2、タイマ4
  タイプC : タイマ3、タイマ5

【タイプA タイマ】

 タイプA タイマであるタイマ1はつぎのような独自の機能をもっています。

 ・低電力32kHz水晶発振子用の発振回路を持つ
 ・外部クロック源による非同期モードで動作可能

 これらのタイマ1の独自機能は、リアルタイムクロック(RTC)を作りたい場合や、
高速パルスをカウントしたい場合に便利なようになっています。

 タイマ1の内部構成は下図のようになっています。タイマ1の本体は16ビットのカウンタ
であるTMR1で、このカウンタはアップカウンタとなっていてパルス入力ごとに+1されます。
 このとき常にコンパレータによりPR1レジスタの値と比較されていて、値が一致すると
割り込みが発生し、同時にTMR1の内容が0にクリアされます。

 従って、TMR1は常に0からPR1レジスタの値の間を繰り返しカウントすることになり、
パルス入力が一定周波数であれば、常に一定時間ごとに割り込みが発生することになります。

 外部クロックには、直接パルスを入力するか、独立の発振回路を使った専用のクロックを
使うことができます。この発振回路は32.768kHzの水晶発振子用となっていてリアルタイム
クロックを前提にしています。つまりこの周波数とすると、PR1に32767を設定すれば、1秒周期
のリアルタイムの時間で割り込みを発生させることができます。




 これらの動作モードの設定は、タイマ制御レジスタ(TxCON)で行いますが、このレジスタ内容は、
下図のようになっています。タイマ1の場合はx=1ですので、T1CONレジスタとなります。




【タイプB タイマ】

 タイマ2とタイマ4がタイプBのタイマに相当し、以下の独自の機能をもっています。

 ・タイプC タイマを上位に連結して32ビットタイマを構成可能
 ・タイプB タイマは常にクロック同期で非同期にはできない
 
 内部構成は下図のようになっています。タイマ本体、コンパレータ、比較レジスタ(PRx)、
などはタイプAと同じですが、入力クロック用の発振回路がありません。
 したがって入力は、内部クロックか、外部パルス、外部パルスでゲートされた内部クロック
ということになり、常に内部クロックと同期を取るようになっています。




【タイプC タイマ】

 タイマ3、タイマ5がタイプCタイマに相当し、以下の独自の機能をもっています。

 ・タイプB タイマを下位に連結して32ビットタイマとして構成可能
 ・A/D変換をトリガする機能をもつ

 内部構成は下図のようになっています。タイマ本体、コンパレータ、比較レジスタ(PRx)、
入力パルス回路などはタイプAやBと同じですが、外部パルス入力に直接同期回路が
接続されています。
 このため外部パルスの最小パルス幅が2クロック分必要となります。また、PRxレジスタ
との一致でA/D変換のトリガをかける機能があり、A/Dコンバータを自動起動します。
これを使うと、一定間隔でアナログ信号をサンプリングすることができます。




【タイマの使い方】

各タイマモジュールは以下のモードのうちの1つで動作します。

  ・タイマモード
  ・同期カウンタモード
  ・ゲート積算モード
  ・非同期カウンタモード (タイプA タイマのみ)

 それぞれの使い方を説明します。

(1) タイマモード
 すべてのタイマがタイマモードの機能を持っています。タイマモードに設定するには
次のようにします。 
 ・タイマへの入力クロックを内部システムクロック(Fosc/2)とする
 ・TCS 制御ビット(TxCON<1>) をクリアする
 ・同期モード制御ビットTSYNC(T1CON<2>) は影響なし
 ・タイマ時間は下記で決まる

 したがって例えばクロック周波数32MHz、つまりTcy=1/16usec、分周比1/256のとき
100msec周期のタイマとするにはPRxを下記で求めます。100msecは100000usecですから
次の式でPRxの設定値が求められます。

  100000÷((1/16)×256) - 1 = 6249

 このときタイマの本体TMRxレジスタは、下図のような動作をすることになります。
まずTMRxは0からカウントアップを始め、PRxの値の6249と等しくなると0に戻り、
再度カウント動作をやり直します。このとき割り込みを発生します。
これでTMRxは常に一定周期でカウント値が0に戻り割り込みを発生することになります。




(2) 同期/非同期カウンタモード
 外部パルス入力を選択した場合には、カウンタモードとなります。タイプBとCの場合は
常にクロックに同期した同期カウンタとなりますが、タイプAの場合には、
TSYNC制御ビット(TxCON<2>)により同期と非同期を指定できます。
外部クロックで動作させて非同期にした場合には、スリープ中でクロックが停止していても
カウント動作を継続できます。

(3) ゲート積算モード
 このモードのときは、外部信号がHighの期間だけ、内部クロックがカウンタTMRxの入力
パルス信号として供給されます。
そしてPRxレジスタとTMRxが一致するか、外部パルスがLowになるまでカウントを継続します。
したがって、外部パルスのHighの時間の測定をしていることになります。
外部パルスがLowになったときの立下りで割り込みを発生しますが、PRxレジスタとの一致
では割り込みを発生しません。
 このモードにするには、TGATE制御ビット(TxCON<6>)を1にセット、TCSビット(TxCON<1>)
ビットを0にする必要があります。

(4) 32ビットタイマモード
 タイプBとタイプCのタイマを直列接続して32ビットのタイマとして使うことができます。
この場合タイプBが下位、タイプCが上位となり、全体としての制御は、タイプB側(タイマ2または
タイマ4)のSFRレジスタで行います。



   目次ページへ