P16F1619には、3種のタイマーがあります。タイマー2は、8ビットタイマーカウンター(TMR2)と8ビットピリオドレジスター(PR2)から構成されています。それら2本のレジスターの値を常時比較しており、一致するとTMR2をリセットします。さらに、外部信号と組み合わせて、ワンショットおよび単安定動作モードで、タイマーの開始、実行、停止、およびリセット制御することができます。また、CCPと連携しPWM(Pulse Width Modulation)を行うことが特徴です。TMR2の前段と後段には、最大64分周のプリスケラー、最大16分周のポストスケラーが使用できます。
Hardware Limit Timer (HLT)機能を備えたこのタイマは、今までの Timer2 モジュールに非同期外部リセット機能とワンショット機能を追加した拡張バージョンです。リセット信号は、外部入力ピンまたは内部のコアから独立した周辺モジュール (CLCやゼロクロス検出(ZCD)モジュール等)から供給でき、外部イベントに基づいてタイマーを開始/停止/リセットすることができます。予期していたイベントが発生しなかった時に割り込み信号を生成することもできます。
タイマーの機能は次のとおりです。
HLTは複数の動作モードを備え、多様なクロック源が選択できるため、柔軟な設計が可能です。動作モードは、TxHLT レジスタの MODE ビットにより制御し、Timer2/4/6モジュールは、開始、実行、フリーズ、およびリセットを制御する外部信号と組み合わせて動作できる8ビットタイマーです。
クロック周波数とタイムアップ周期
PS | Fosc/4 | ||
---|---|---|---|
31k | 1M | 32M | |
1:1 | 33mS | 1024μS | 32μS |
1:4 | 131mS | 4.1mS | 128μS |
1:16 | 524mS | 16.4mS | 512μS |
1:64 | 2.1 S | 66mS | 2048uS |
Timer2は、次の3つの主要なモードで動作します。
各モードには、開始、停止、およびリセットのオプションがあります。表23-1に、オプションを示します。
すべてのモードで、TMR2カウントレジスタは、プログラム可能なプリスケーラからのクロック信号の立上りエッジでインクリメントされます。TMR2がT2PRと等しい場合、Highレベルがポストスケーラーカウンターに出力されます。TMR2は、次のクロック入力でクリアされます。
ハードウェアからの外部信号を設定して、タイマー動作をゲートしたり、TMR2カウントを強制的にリセットしたりすることもできます。ゲートモードでは、ゲートが無効になるとカウンタが停止し、ゲートが有効になるとカウンタが再開します。リセットモードでは、TMR2カウントは、外部ソースからのレベルまたはエッジのいずれかでリセットされます。
TMR2レジスタは、直接読み取りおよび書き込みが可能です。TMR2レジスタは、デバイスのリセット時にクリアされます。T2PRレジスタはダブルバッファリングされ、デバイスのリセット時に0xFFに初期化されます。SFRは直接読み取りおよび書き込み可能ですが、実際の周期バッファーは、次のイベントが発生した場合にのみSFR値で更新されます。
プリスケーラとポストスケーラの両方のカウンタは、次のイベントでクリアされます。
*注意* T2CONに書き込みをしても、TMR2 はクリアされません。
TMR2の値は、各クロックサイクルで周期レジスタT2PRの値と比較されます。2つの値が一致すると、コンパレータは次のサイクルでTMR2の値を00hにリセットし、出力ポストスケーラカウンタをインクリメントします。ポストスケーラカウントがTMRxCON1レジスタのOUTPS <4:0>ビットの値と等しい場合 TMR2_postscaled 出力に1クロック周期幅のパルスが発生し、ポストスケーラカウントがクリアされます。
最新のTimer2は、機能が豊富になったため設定するレジスターの数が多くなり初期設定に注意が必要です。ただ、よく使われる基本的(伝統的)な使い方であるフリーラン機能は、Reset後のデフォルトのままで、多くの設定が完了しています。下右表に各プリスケラー設定値に対するTMR2 Outputの周期を示します。入力は、システムクロック(Fosc/4)の他、外部入力など多彩な信号をカウントすることができます。
Power ON Reset後の動作 | Power ON Reset後のレジスター設定 |
---|---|
|
|
ワンショットモードは、ONビットがクリアされ、TMR2がT2PRと一致するとタイマーが停止し、T2ONビットがオフとオンを繰り返すまで再起動しないこと以外は、フリーランニング周期モードと同じです。0 以外のポストスケーラOUTPS <4:0>値は、タイマーが最初の周期イベントで停止し、タイマーが再起動されるとポストスケーラがリセットされるため、このモードでは意味がありません。
単安定モードは、ONビットがクリアされず、外部リセットイベントによってタイマーを再起動できることを除いて、ワンショットモードに似ています。
Mode | MODE | 出力動作 | 動作 | Timer 制御 | <4:3> | <2:0> | Start | Reset | Stop |
---|---|---|---|---|---|---|---|
フリーラン | 00 | 000 | 周期パルス | ソフトウエア制御 (図23-4) | ON = 1 | — | ON = 0 |
001 | ハード制御, 正論理 (図23-5) | ON = 1 and TMRx_ers = 1 | — | ON = 0 or TMRx_ers = 0 | |||
010 | ハード制御, 負論理 | ON = 1 and TMRx_ers = 0 | — | ON = 0 or TMRx_ers = 1 | |||
011 | 周期パルス with ハードリセット | 両エッジ リセット | ON = 1 | TMRx_ers ↕ | ON = 0 | ||
100 | 立上り リセット (図23-6) | TMRx_ers ↑ | |||||
101 | 立下り リセット | TMRx_ers ↓ | |||||
110 | "0" レベル リセット | TMRx_ers = 0 | ON = 0 or TMRx_ers = 0 | ||||
111 | "1" レベル リセット (図23-7) | TMRx_ers = 1 | ON = 0 or TMRx_ers = 1 | ||||
ワンショット | 01 | 000 | ワンショット | ソフトウエア制御 (図23-8) | ON = 1 | — | ON = 0 or TMRx = PRx の次のclock (Note 2) |
001 | エッジトリガ スタート (Note 1) | 立上りスタート (図23-9) | ON = 1 and TMRx_ers ↑ | — | |||
010 | 立下りスタート | ON = 1 and TMRx_ers ↓ | — | ||||
011 | 両エッジスタート | ON = 1 and TMRx_ers ↕ | — | ||||
100 | エッジトリガ スタート and ハードリセット (Note 1) | 立上りスタート and 立上りリセット (図23-10) | ON = 1 and TMRx_ers ↑ | TMRx_ers ↑ | |||
101 | 立下りスタート and 立下り リセット | ON = 1 and TMRx_ers ↓ | TMRx_ers ↓ | ||||
110 | 立上りスタート and "0" レベル リセット (図23-11) | ON = 1 and TMRx_ers ↑ | TMRx_ers = 0 | ||||
111 | 立下りスタート and "1" レベル リセット | ON = 1 and TMRx_ers ↓ | TMRx_ers = 1 | ||||
単安定 | 10 | 000 | Reserved | ||||
001 | エッジトリガ スタート (Note 1) | 立上りスタート (図23-12) | ON = 1 and TMRx_ers ↑ | — | ON = 0 or TMRx = PRx の次のclock (Note 3) | ||
010 | 立下りスタート | ON = 1 and TMRx_ers ↓ | — | ||||
011 | 両エッジスタート | ON = 1 and TMRx_ers ↕ | — | ||||
Reserved | 100 | Reserved | |||||
Reserved | 101 | Reserved | |||||
ワンショット | 110 | レベルトリガ スタート and ハードリセット | "1" レベル スタート & "0" レベル リセット | ON = 1 and TMRx_ers = 1 | TMRx_ers = 0 | ON = 0 or Held in Reset (Note 2) | |
111 | "0" レベル スタート & "1" レベル リセット | ON = 1 and TMRx_ers = 0 | TMRx_ers = 1 | ||||
Reserved | 11 | - - - | Reserved |
Note 1: ON = 0の場合、ON = 1の後にタイマーを再起動するためのTMRx_ersエッジが必要です。
Note 2: TMRx = PRxの場合、次のクロックでONをクリアし、00hでTMRxを停止します。
Note 3: TMRx = PRxの場合、次のクロックは00hでTMRxを停止しますが、ONはクリアしません。
PRx周期レジスタはダブルバッファリングされています。ソフトウェアはPRxレジスタの読み取りと書き込みを行います。ただし、タイマーはバッファリングされたPRxレジスタを使用して動作します。ソフトウェアは、バッファリングされたPRxレジスタに直接アクセスできません。PRxレジスタの内容は、次のいずれかのイベントによってバッファに転送されます。
Timer2モジュールのプライマリ出力は TMR2_postscaledであり、ポストスケーラカウンタが TMR2xCONレジスタのOUTPSビットの値と一致すると、単一のTMR2_clk周期分のパルスを出力します。T2PRポストスケーラは、TMR2値がT2PR値と一致するたびにインクリメントされ、この信号は、他のいくつかの入力モジュールへの入力として選択できます。
さらに、Timer2は、PWMモードでのパルス生成のためにCCPモジュールによっても使用されます。実際のTMR2値と他の内部信号の両方がCCPモジュールに送信され、PWM信号の周期とパルス幅の両方を適切にクロックします。CCPで使用するTimer2の設定の詳細については、「CCP/PWMのページ」を参照してください。
クロックソースに加えて、Timer2は外部リセットソースも取り込みます。この外部リセットソースは、Timer2、Timer4、およびTimer6に対してそれぞれT2RST、T4RST、およびT6RSTレジスタで選択されています。このソースは、タイマーがどのモードにあるかに応じて、タイマーの開始と停止、およびタイマーのリセットを制御します。タイマーのモードは、TMRxHLTレジスタのMODE <4:0>ビットによって制御されます。エッジトリガーモードでは、外部トリガー間に6つのタイマークロック周期が必要です。レベルトリガーモードでは、トリガーレベルが少なくとも3タイマークロック周期分の長さである必要があります。デバッグフリーズモードでは、外部トリガーは無視されます。
Timer2はデバイス割り込みを生成することもできます。割り込みは、ポストスケーラカウンタがT2CONレジスタのポストスケーラ制御ビットOUTPS <3:0>で選択された16のポストスケールオプション(1:1から1:16)と一致したときに生成されます。割り込みは、PIE1レジスタのTMR2IE割り込みイネーブルビットをセットすることで有効になります。割り込みタイミングを図23-3に示します。
図23-3:TIMER2のプリスケーラ、ポストスケーラ、および割り込みタイミング図
TMRxIF
注1:2:
(1)(2)(1)
割り込みフラグの設定は、命令クロックと同期しています。同期には2命令サイクルかかる場合がありますソフトウェアによってクリアされます。
特に指定のない限り、次の注は次のタイミング図に適用されます。
-prescaleとpostscalerの両方が1:1(TxCONレジスタのCKPSビットとOUTPSビットの両方がクリアされます)。
-Fosc/4を除く任意のクロックの図は、ONとTimer2_ersの両方で少なくともクロック2つ分の同期遅延を示しています。Fosc/4を使用する場合、クロック同期遅延は、Timer2_ersの少なくとも命令周期1つ分です。ONは次の命令周期に適用されます。
-PWMDutyCycleとPWM出力は、セクション26.4「CCP/PWMクロックの選択」で説明されているようにタイマーがCCPモジュールのPWM機能に使用されると仮定して示されています。信号はTimer2モジュールの一部ではありません。
このモードは、従来のTimer2操作に対応します。タイマーは、ON = 1の場合はクロック入力ごとにインクリメントし、ON = 0の場合はインクリメントしません。TMRxカウントがPRx周期カウントと等しい場合、タイマーは次のクロックでリセットされ、0からカウントを継続します。図23-4に示されています。PRx = 5の場合、カウンタはTMRx = 5まで進み、次のクロックでゼロになります。
図23-4:ソフトウェアゲートモードのタイミング図(モード= 00000)
注1 : BSFおよびBCFは、TxCONのONビットをセットまたはクリアするためにCPUによって実行されるBit-SetFileおよびBit-ClearFile命令を表します。CPUの実行は、タイマークロック入力と非同期です。
ハードウェアゲートモードは、TMRx_ers外部信号がタイマーをゲートできることを除いて、ソフトウェアゲートモードと同じように動作します。CCPとともに使用すると、ゲーティングはPWM周期を延長します。PWM出力がハイのときにタイマーが停止すると、デューティサイクルも延長されます。
MODE <4:0> = 00001の場合、外部信号がハイになるとタイマーが停止します。MODE <4:0> = 00010の場合、外部信号がローになるとタイマーが停止します。
図23-5は、MODE <4:0> = 00001のハードウェアゲーティングモードを示しています。このモードでは、High入力レベルでカウントが開始されます。
図23-5:ハードウェアゲートモードのタイミング図(モード= 00001)
ハードウェア制限モードでは、タイマーが周期カウントに達する前に、TMRx_ers外部信号によってタイマーをリセットできます。3種類のリセットが可能です。
タイマーをPWMモードのCCPと組み合わせて使用すると、早期リセットにより周期が短縮され、2クロックの遅延後にPWMパルスが再開されます。図23-6を参照してください。
図23-6:エッジトリガーハードウェア制限モードのタイミング図(モード= 00100)
注1 : BSFおよびBCFは、TxCONのONビットをセットまたはクリアするためにCPUによって実行されるBit-SetFileおよびBit-ClearFile命令を表します。CPUの実行は、タイマークロック入力と非同期です。
レベルトリガーハードウェア制限タイマーモードでは、図23-7に示すように、カウンターは外部信号TMRx_ersのHighレベルまたはLowレベルによってリセットされます。
MODE <4:0> = 00110を選択すると、タイマーはLowレベルの外部信号でリセットされます。MODE <4:0> = 00111を選択すると、タイマーはHighレベルの外部信号でリセットされます。
この例では、TMRx_ers = 1のときにカウンターがリセットされます。ONは、BSFおよびBCF命令によって制御されます。ON = 0の場合、外部信号は無視されます。
CCPがタイマーをPWMタイムベースとして使用する場合、タイマーがカウントを開始するとPWM出力がハイに設定され、タイマーカウントがCCPRx値と一致する場合にのみローに設定されます。タイマーは、タイマーカウントがPRx値と一致するか、外部リセット信号が真になって真のままになってから2クロック周期後にリセットされます。
PRxが一致した後のクロック、または外部リセット信号がリセットを放棄した後の2クロックのいずれかで、タイマーがカウントを開始し、PWM出力がハイに設定されます。PWM出力は、タイマーがCCPRxパルス幅値と一致するようにカウントアップするまでハイのままになります。PWM出力がハイのときに外部リセット信号が真になると、リセット信号が解放されるまでPWM出力はハイのままになり、タイマーがCCPRx値に一致するようにカウントアップできるようになります。
図23-7:レベルトリガーハードウェア制限モードのタイミング図(モード= 00111)
注1 : BSFおよびBCFは、TxCONのONビットをセットまたはクリアするためにCPUによって実行されるBit-SetFileおよびBit-ClearFile命令を表します。CPUの実行は、タイマークロック入力と非同期です。
ワンショットモードでは、タイマーがリセットされ、タイマー値がPRx周期値と一致すると ONビットがクリアされます。別のタイマーサイクルを開始するには、ソフトウェアで ONビットをセットする必要があります。
MODE <4:0> = 01000に設定すると、図23-8に示すワンショットモードが選択されます。この例では、ONはBSFおよびBCF命令によって制御されます。最初のケースでは、BSF命令がオンに設定され、カウンターが完了まで実行され、オンがクリアされます。2番目のケースでは、BSF命令がサイクルを開始し、BCF/BSF命令がサイクル中にカウンターをオフおよびオンにしてから、実行して完了します。
ワンショットモードをCCPPWM動作と組み合わせて使用すると、PWMパルスドライブはONビットのセットと同時に開始します。PWMドライブがアクティブなときにONビットをクリアすると、PWMドライブが拡張されます。PWMドライブは、タイマー値がCCPRxパルス幅値と一致すると終了します。ソフトウェアがONビットをセットして別のサイクルを開始するまで、PWMドライブはオフのままになります。ソフトウェアがCCPRxの一致後、PRxの一致前にONビットをクリアすると、PWMドライブはONビットがクリアされたままの時間だけ延長されます。別のタイミングサイクルは、PRx周期カウントの一致によってクリアされた後にONビットをセットすることによってのみ開始できます。
図23-8:ソフトウェア開始ワンショットモードのタイミング図(モード= 01000)
注1 : BSFおよびBCFは、TxCONのONビットをセットまたはクリアするためにCPUによって実行されるBit-SetFileおよびBit-ClearFile命令を表します。CPUの実行は、タイマークロック入力と非同期です。
エッジトリガーワンショットモードは、ONビットがセットされた後、外部信号入力からのエッジでタイマーを開始し、タイマーがPRx周期値と一致したときにONビットをクリアします。次のエッジがタイマーを開始します。
ONビットをクリアしてタイマーを停止した場合、カウントを再開するようにONビットをセットした後、別のTMRx_ersエッジが必要になります。図23-9に、立上りエッジのワンショットモードでの動作を示します。
エッジトリガーワンショットモードをCCPと組み合わせて使用すると、エッジトリガーはPWMドライブをアクティブにし、タイマーがCCPRxパルス幅値と一致するとPWMドライブは非アクティブになり、タイマーがで停止すると非アクティブのままになります。 PRx周期のカウントマッチ。
図23-9:エッジトリガーワンショットモードのタイミング図(モード= 01001)
注1 : BSFおよびBCFは、TxCONのONビットをセットまたはクリアするためにCPUによって実行されるBit-SetFileおよびBit-ClearFile命令を表します。CPUの実行は、タイマークロック入力と非同期です。
3
BSFおよびBCFは、CPUによって実行されるBit-SetFileおよびBit-ClearFile命令を表します。
エッジトリガーハードウェア制限ワンショットモードでは、タイマーはONビットがセットされた後、最初の外部信号エッジでカウントを開始し、後続のすべてのエッジでリセットされます。タイマーを開始するには、ONビットがセットされた後の最初のエッジのみが必要です。カウンタは、後続のすべての外部リセットエッジでは、2クロック後に、自動的にカウントを再開します。エッジトリガーは次のとおりです。
タイマ値がPRx周期値と一致すると、タイマはリセットされ、ONビットをクリアします。ソフトウェアがONビットをセットするまで、外部信号エッジは効果がありません。図23-10は、立上りエッジのハードウェア制限のワンショット操作を示しています。
このモードをCCPと組み合わせて使用すると、最初の開始エッジトリガー、および後続のすべてのリセットエッジがPWMドライブをアクティブにします。PWMドライブは、タイマーがCCPRxパルス幅値と一致すると非アクティブになり、一致が発生する前に外部信号エッジがタイマーをリセットしない限り、タイマーがPRx周期の一致で停止するまで非アクティブのままになります。
図23-10:エッジトリガーハードウェア制限ワンショットモードタイミング図(モード= 01100)
注意1:BSFおよびBCFは、TxCONのONビットをセットまたはクリアするためにCPUによって実行されるBit-SetFileおよびBit-ClearFile命令を表します。CPUの実行は、タイマークロック入力と非同期です。
レベルトリガーワンショットモードでは、タイマーカウントは外部信号レベルでリセットされ、ONビットがセットされている間、リセットレベルからアクティブレベルへの遷移の立上り/立下りエッジでカウントを開始します。リセットレベルは次のように選択されます。
タイマカウントがPRx周期カウントと一致すると、タイマがリセットされ、ONビットがクリアされます。PRx一致またはソフトウェア制御のいずれかによってONビットがクリアされると、ONビットがカウンタを開始するようにセットされた後に、新しい外部信号エッジが必要になります。
レベルトリガーリセットワンショットモードをCCPPWM動作と組み合わせて使用すると、PWMドライブはタイマーを開始する外部信号エッジでアクティブになります。タイマーカウントがCCPRxパルス幅カウントと等しくなると、PWMドライブは非アクティブになります。PRx周期カウントの一致でタイマーカウントがクリアされると、PWMドライブはアクティブになりません。
図23-11:Lowレベルリセット、エッジトリガーハードウェア制限ワンショットモードタイミング図(モード= 01110)
注1 : BSFおよびBCFは、TxCONのONビットをセットまたはクリアするためにCPUによって実行されるBit-SetFileおよびBit-ClearFile命令を表します。CPUの実行は、タイマークロック入力と非同期です。
エッジトリガー単安定モードは、ONビットがセットされた後、外部リセット信号入力からのエッジでタイマーを開始し、タイマーがPRx周期値と一致するとタイマーのインクリメントを停止します。次のエッジがタイマーを開始します。
エッジトリガー単安定モードをCCPPWM動作と組み合わせて使用すると、PWMドライブはタイマーを開始する外部リセット信号エッジでアクティブになりますが、タイマーがPRx値と一致するとアクティブになりません。タイマーがインクリメントしている間、外部リセット信号の追加のエッジはCCPPWMに影響を与えません。
図23-12:立上りエッジでトリガーされるモノスタブルモードのタイミング図(モード= 10001)
注1 : BSFおよびBCFは、TxCONのONビットをセットまたはクリアするためにCPUによって実行されるBit-SetFileおよびBit-ClearFile命令を表します。CPUの実行は、タイマークロック入力と非同期です。
レベルトリガーハードウェア制限ワンショットモードは、タイマーを外部リセットレベルのリセットに保持し、ONビットがセットされて外部信号がリセットレベルにないときにカウントを開始します。外部信号のいずれかがリセットされていないか、ONビットがセットされている場合、設定/アクティブ化されているもう一方の信号がタイマーを開始します。リセットレベルは次のように選択されます。
タイマカウントがPRx周期カウントと一致すると、タイマがリセットされ、ONビットがクリアされます。PRx一致またはソフトウェア制御のいずれかによってONビットがクリアされると、ONビットがセットされ、外部信号がリセットレベルにならなくなるまで、タイマーはリセットのままになります。
レベルトリガーハードウェア制限ワンショットモードをCCPPWM動作と組み合わせて使用すると、PWMドライブは外部信号エッジまたはONビットのセットのいずれかでアクティブになり、どちらかがタイマーを開始します。
図23-13:レベルトリガーハードウェア制限ワンショットモードタイミング図(モード= 10110)
注意1:BSFおよびBCFは、TxCONのONビットをセットまたはクリアするためにCPUによって実行されるBit-SetFileおよびBit-ClearFile命令を表します。CPUの実行は、タイマークロック入力と非同期です。
PSYNC = 1の場合、プロセッサがスリープモードのときはTimer2を操作できません。プロセッサがスリープモードになっている間、TMR2およびT2PRレジスタの内容は変更されません。
PSYNC = 0の場合、選択したクロックソースも実行されている限り、Timer2はスリープ状態で動作します。LFINTOSC、MFINTOSC、またはHFINTOSCオシレータをタイマークロックソースとして選択すると、選択したオシレータがスリープ中に動作し続けます。
ここで示しているレジスターのビット名の多くは、いわゆる Short Bit Name です。
タイマー名 | Bit Name Prefix |
---|---|
タイマー2 | T2 |
タイマー4 | T4 |
タイマー6 | T6 |
プログラミングでこれらのビットを指定するためには、レジスター名も指定する必要があります。例えば、T2CONレジスターの ONビットをセットするには、T2CONbits.ON = 1 と指定します。
第2の指定方法として、Short Bit Name に、Bit Name Prefix を付けるとレジスター名を省略することができます。例えば、T2CONレジスターの ONビットは。T2ON = 1 と指定します。
CS<3:0> Timer Clock Sourcss | |||
---|---|---|---|
1011 | AT1_perclk | 0101 | MFINTOSC 31.25 kHz |
1010 | LC4_out | 0100 | ZCD1_output |
1001 | LC3_out | 0011 | LFINTOSC |
1000 | LC2_out | 0010 | HFINTOSC 16 MHz |
0111 | LC1_out | 0001 | Fosc |
0110 | Pin T2INPPS | 0000 | Fosc/4 |
RSEL<3:0> External Rest Sourcss | |||
---|---|---|---|
1111 | Reserved | 0111 | TMR6_postscaled |
1110 | PWM4_out | 0110 | TMR4_postscaled |
1101 | PWM3_out | 0101 | Reserved |
1100 | LC4_out | 0100 | CCP2_out |
1011 | LC3_out | 0011 | CCP1_out |
1010 | LC2_out | 0010 | C2OUT_sync |
1001 | LC1_out | 0001 | C1OUT_sync |
1000 | ZCD1_out | 0000 | Pin T2INPPS |
Mode | MODE | 出力動作 | 動作 | Timer 制御 | <4:3> | <2:0> | Start | Reset | Stop |
---|---|---|---|---|---|---|---|
Free Running Period | 00 | 000 | Period Pulse | Software gate (図23-4) | ON = 1 | — | ON = 0 |
001 | Hardware gate, active-high (図23-5) | ON = 1 and TMRx_ers=1 | — | ON = 0 or TMRx_ers=0 | |||
010 | Hardware gate, active-low | ON = 1 and TMRx_ers=0 | — | ON = 0 or TMRx_ers=1 | |||
011 | Period Pulse with Hardware Reset | Rising or falling edge Reset | ON = 1 | TMRx_ers ↕ | ON = 0 | ||
100 | 立上りリセット (図23-6) | TMRx_ers ↑ | |||||
101 | Falling edge Reset | TMRx_ers ↓ | |||||
110 | Low level Reset | TMRx_ers=0 | ON = 0 or TMRx_ers=0 | ||||
111 | High level Reset (図23-7) | TMRx_ers=1 | ON = 0 or TMRx_ers=1 | ||||
One-shot | 01 | 000 | One-shot | Software start (図23-8) | ON = 1 | — | ON = 0 or Next clock after TMRx = PRx (Note 2) |
001 | Edge triggered start (Note 1) | Rising edge start (図23-9) | ON = 1 and TMRx_ers ↑ | — | |||
010 | Falling edge start | ON = 1 and TMRx_ers ↓ | — | ||||
011 | Any edge start | ON = 1 and TMRx_ers ↕ | — | ||||
100 | Edge triggered start and hardware Reset (Note 1) | Rising edge start and Rising edge Reset (図23-10) | ON = 1 and TMRx_ers ↑ | TMRx_ers ↑ | |||
101 | Falling edge start and Falling edge Reset | ON = 1 and TMRx_ers ↓ | TMRx_ers ↓ | ||||
110 | Rising edge start and Low level Reset (図23-11) | ON = 1 and TMRx_ers ↑ | TMRx_ers=0 | ||||
111 | Falling edge start and High level Reset | ON = 1 and TMRx_ers ↓ | TMRx_ers=1 | ||||
Mono-stable | 10 | 000 | Reserved | ||||
001 | Edge triggered start (Note 1) | Rising edge start (図23-12) | ON = 1 and TMRx_ers ↑ | — | ON = 0 or Next clock after TMRx = PRx (Note 3) | ||
010 | Falling edge start | ON = 1 and TMRx_ers ↓ | — | ||||
011 | Any edge start | ON = 1 and TMRx_ers ↕ | — | ||||
Reserved | 100 | Reserved | |||||
Reserved | 101 | Reserved | |||||
One-shot | 110 | Level triggered start and hardware Reset | Hight level start & Low level Reset | ON = 1 and TMRx_ers=1 | TMRx_ers=0 | ON = 0 or Held in Reset (Note 2) | |
111 | Low level start & High level Reset | ON = 1 and TMRx_ers=0 | TMRx_ers=1 | ||||
Reserved | 11 | xxx | Reserved |
レジスタ | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
---|---|---|---|---|---|---|---|---|
INTCON | GIE | PEIE | TMR0IE | INTE | IOCIE | TMR0IF | INTF | IOCIF |
PIE1 | TMR1GIE | ADIE | RCIE | TXIE | SSP1IE | CCP1IE | TMR2IE | TMR1IE |
PIR1 | TMR1GIF | ADIF | RCIF | TXIF | SSP1IF | CCP1IF | TMR2IF | TMR1IF |
PIE2 | OSFIE | C2IE | C1IE | — | BCL1IE | TMR6IE | TMR4IE | CCP2IE |
PIR2 | OSFIF | C2IF | C1IF | — | BCL1IF | TMR6IF | TMR4IF | CCP2IF |
TMR2 | TMR2 Count | |||||||
PR2 | Timer2 の Period Register | |||||||
T2CON | ON | CKPS<2:0> | OUTPS<3:0> | |||||
T2CLKCON | — | — | — | — | CS<3:0> | |||
T2RST | — | — | — | — | RSEL<3:0> | |||
T2HLT | PSYNC | CKPOL | CKSYNC | MODE<4:0> |
レジスタ | BIT | 名 | 説明 | 1 | 0 | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
INTCON | 7 | GIE | 全インタラプトの使用許可 | 許可 | 否 | |||||||||||
6 | PEIE | 周辺機能インタラプトの使用許可 | 許可 | 否 | ||||||||||||
PIE1 | 1 | TMR2IE | タイマー2のインタラプト許可 | 許可 | 否 | |||||||||||
PIR1 | 1 | TMR2IF | タイマー2 オーバーフロー発生フラグ | 発生 | 未発生 | |||||||||||
PIE2 | 2 | TMR6IE | タイマー6のインタラプト許可 | 許可 | 否 | |||||||||||
1 | TMR4IE | タイマー4のインタラプト許可 | 許可 | 否 | ||||||||||||
PIR2 | 2 | TMR6IF | タイマー6 オーバーフロー発生フラグ | 発生 | 未発生 | |||||||||||
1 | TMR4IF | タイマー4 オーバーフロー発生フラグ | 発生 | 未発生 | ||||||||||||
T2CON | 7 | ON | タイマー2 ON/OFF | ON | OFF | |||||||||||
6 | CKPS1 | プリスケラー比率 000=1:1 (既定)
|
1 | 0 | ||||||||||||
5 | CKPS0 | 1 | 0 | |||||||||||||
4 | CKPS0 | 1 | 0 | |||||||||||||
3 | OUTPS3 | ポストスケラー分周比率 (規定値 0000)
|
1 | 0 | ||||||||||||
2 | OUTPS2 | 1 | 0 | |||||||||||||
1 | OUTPS1 | 1 | 0 | |||||||||||||
0 | OUTPS0 | 1 | 0 | |||||||||||||
T2CLKCON | <3:0> | CS | Clock選択 上表参照 | |||||||||||||
T2RST | <3:0> | RSEL | 外部リセット信号選択 上表参照 | |||||||||||||
T2HLT | 7 | PSYNC | プリスケラー同期 | 同期 | 非同期 | |||||||||||
6 | CKPOL | クロックの極性 | 負論理 | 正論理 | ||||||||||||
5 | CKSYNC | ON/OFF信号の同期 | 同期 | 非同期 | ||||||||||||
<4:0> | MODE | MODE選択 上表参照 |
PortC - RC2 に接続されたLEDが点灯するプログラムを作成しました。
<回路図>
<プログラム>
/********************************************************************* * File name: Timer 2 * Notes: 1MHz内部クロック PLLはOFF * LED RC5 * PIC16F1619 MPLAB X IDE with XC8 * 2020-4-4 * Copyright (c) 2017 iwamoto All Rights Reserved * *******************************************************************/ #include <xc.h> #define _XTAL_FREQ 1000000 #define LED LATC5 // CONFIG #pragma config FOSC = INTOSC, PWRTE = OFF, MCLRE = ON, CP = OFF #pragma config BOREN = ON, CLKOUTEN = OFF, IESO = ON, FCMEN = ON #pragma config WRT = OFF, PPS1WAY = ON, ZCD = OFF, PLLEN = OFF #pragma config STVREN = ON, BORV = LO, LPBOR = OFF, LVP = ON #pragma config WDTCPS = WDTCPS1F, WDTE = OFF, WDTCWS = WDTCWSSW, WDTCCS = SWC /********************************************************* Main application *********************************************************/ void main(void) { OSCCON = 0b01011000; // PLL disabled; 1MHz_HF; FOSC; TRISC5 = 0; // Outputs RC5 // -------------------------------------------- // Timer2 は、Fosc/4を // PreScalerで 1/64 8bit(1/256)でカウント // さらに、PostScalerで 1/2してTMR2IFが「1」になる // TMR2IFを常時モニタしLED(RC0)を131mSごとに反転 // -------------------------------------------- T2CON = 0b01100001; // Timer2 Post1/2 Pre1/64設定 PR2 = 0xFF; // Timer2 Period Register設定 T2CLKCON = 0x00; // クロックはFosc/4 T2HLT = 0x00; // Free Runモード T2RST = 0x00; // Free Runなので該当せず T2ON = 1; // Timer2 ON while(1){ if(TMR2IF){ // Timer1ウントアップを待つ TMR2IF=0; LED = !LED; // LEDを反転 } } }