12. タイマ

12. タイマ

12.1 Timer0/1

Timer0/1は2つの16ビットタイマ/カウンタです。TCONとTMODは、Timer0とTimer1を構成するために使用されます。TCONは、タイマ/カウンタT0とT1の起動制御とオーバーフロー割り込みと外部割り込み制御に使用されます。各タイマは、2つの8ビットレジスタからなる16ビットのタイミングユニットです。Timer0の上位バイトカウンタはTH0、下位バイトはTL0です。Timer1の上位バイトカウンタはTH1、下位バイトはTL1です。Timer1はUART0のボーレートジェネレータとしても使用できます。

表12.1.1 Timer0/1関連レジスタ一覧

名前アドレス概要リセット値
TH1 8Dh Timer1カウント上位バイト xxh
TH0 8Ch Timer0カウント上位バイト xxh
TL1 8Bh Timer1カウント下位バイトxxh
TL0 8Ah Timer0カウント下位バイトxxh
TMOD 89hTimer0/1モードレジスタ00h
TCON 88hTimer0/1制御レジスタ00h

Timer/Counter 0/1制御レジスタ(TCON):

ビット名前アクセス概要リセット値
7 TF1 RW Timer1オーバーフロー割り込みフラグビットです。Timer1割り込みに入ると自動的にクリアされます。 0
6 TR1 RW Timer1のスタート/ストップビットです。1に設定して、ソフトウェアで開始、設定、またはクリアします。 0
5 TF0 RW Timer0オーバーフロー割り込みフラグビットです。Timer0割り込みに入ると自動的にクリアされます。 0
4 TR0 RW Timer0のスタート/ストップビットです。1に設定して、ソフトウェアで開始、設定、またはクリアします。 0
3 IE1 RW INT1外部割込み1の割込み要求フラグビットです。割り込みに入ると自動的にクリアされます。 0
2 IT1 RW INT1外部割込み1トリガモード制御ビットです。
0: LOWレベルでトリガする外部割込みを選択します。
1: 立下りエッジでトリガする外部割込みを選択します。
0
1 IE0 RW INT0外部割込み0の割込み要求フラグです。割り込みに入ると自動的にクリアされます。 0
0 IT0 RW INT0外部割込み0トリガモード制御ビットです。
0: LOWレベルでトリガする外部割込みを選択します。
0

Timer/Counter 0/1 モードレジスタ(TMOD):

ビット名前アクセス概要リセット値
7 bT1_GATE RWゲート許可ビットは、タイマ1の起動が外部割込み信号INT1の影響を受けるかどうかを制御します。
0: Timer/Counter1が起動するかどうかはINT1とは関係ありません。
1: INT1ピンがHIGHでTR1が1の時にのみ起動できます。
0
6 bT1_CT RW タイミングモードまたはカウントモード選択ビットです。T1ピンの立ち下がりエッジをクロックとし、カウントモードで動作する場合は1となります。0
5 bT1_M1 RW Timer/Counter1モード選択上位 0
4 bT1_M0 RW Timer/Counter1モード選択下位 0
3 bT0_GATERW ゲーティング許可ビットは、Timer0の起動が外部割込み信号INT0の影響を受けるかどうかを制御します。
0: INT0に関係なくTimer/Counter0が起動します。
1: INT0ピンのみがHIGHになり、TR0を起動することができます。
0
2 bT0_CT RW タイミングモードまたはカウントモード選択ビット。
0: タイミングモードになります。
1: T0ピンの立ち下がりエッジをクロックとして使用し、カウントモードで動作します。
0
1 bT0_M1 RW Timer/Counter0モード選択上位 0
0 bT0_M0 RW Timer/Counter0モード選択下位 0

表12.1.2 bTn_M1, bTn_M0はTimernの動作モードを選択します(n = 0, 1)

bTn_M1bTn_M0Timern working mode (n = 0, 1)
0 0モード0: 13ビットTimer/Counter n。計数単位は、TLnの下位5ビットとTHnで構成されています。TLnの上位3ビットは無効です。カウントが全13ビットからオール0に変化した場合、オーバーフローフラグTFnがセットされ、初期値をリセットする必要があります。
0 1モード1: 16ビットTimer/Counter n。カウント単位はTLnとTHnで構成されています。カウントが全16ビットからオール0に変化すると、オーバーフローフラグTFnがセットされ、初期値をリセットする必要があります。
1 0モード2: 8ビットリロードTimer/Counter nの場合、リロードカウント単位としてTLn, THnを使用します。カウントが8ビットからオール0に変化すると、オーバーフローフラグTFnがセットされ、初期値が自動的にTHnからロードされます。
1 1モード3: Timer/Counter0である場合、TL0とTH0に分割され、TL0は8ビットTimer/Counterとして使用され、Timer0のすべての制御ビットを占有しています。TH0は別の8ビットタイマとして機能し、Timer1のTR1、TF1と割り込みリソースを占有しています。Timer1はこの時点でも使用可能ですが、スタート制御ビットTR1とオーバーフローフラグビットTF1は使用できません。
Timer/Counter1の場合、モード3に入るとTimer/Counter1は停止します。

Timernカウント下位バイト(TLn) (n = 0, 1):

ビット名前アクセス概要リセット値
[7:0]TLnRWTimernカウント下位バイトxxh

Timernカウント上位バイト(THn) (n = 0, 1):

ビット名前アクセス概要リセット値
[7:0]TLnRWTimernカウント上位バイトxxh

12.2 Timer2

Timer2は16ビットのオートリロードTimer/Counterです。T2CON, T2MODレジスタで設定します。Timer2の上位バイトカウンタはTH2、下位バイトはTL2です。Timer2はUART0のボーレート発生器として使用できます。また、2つの信号レベルのキャプチャ機能を持っています。キャプチャカウントはRCAP2レジスタとT2CAP1レジスタに格納されます。

表12.2.1 Timer2関連レジスタ一覧

名前アドレス概要リセット値
TH2 CDhTimer2カウンター上位バイト 00h
TL2 CChTimer2カウンター下位バイト 00h
T2COUNT CChTL2とTH2は16ビットSFRを形成します。 0000h
T2CAP1H CDhTimer2キャプチャ1データ上位バイト(読み出し専用) xxh
T2CAP1L CChTimer2キャプチャ1データ下位バイト(読み出し専用) xxh
T2CAP1 CChT2CAP1LとT2CAP1Hは、16ビットSFRを形成します。 xxxxh
RCAP2H CBhカウントリロード/キャプチャ2データレジスタ上位バイト 00h
RCAP2L CAhカウントリロード/キャプチャ2データレジスタ下位バイト 00h
RCAP2 CAhRCAP2LとRCAP2Hは16ビットSFRを形成します。 0000h
T2MOD C9hTimer2モードレジスタ 00h
T2CON C8hTimer2制御レジスタ 00h

Timer/Counter2制御レジスタ(T2CON):

ビット名前アクセス概要リセット値
7 TF2 RWbT2_CAP1_EN = 0の場合。Timer2のオーバーフロー割り込みフラグです。Timer2の16ビットからのカウントが全て1からオール0になる場合、オーバーフローフラグを1に設定するにはソフトウェアでクリアする必要があります。
RCLK = 1またはTCLK = 1の時は、本ビットは1にセットされません。
0
7CAP1FRWbT2_CAP1_EN = 1 の場合。Timer2キャプチャ1割り込みフラグです。T2の有効エッジによってトリガされ、ソフトウェアによってクリアされる必要があります。 0
6EXF2 RWTimer2外部トリガフラグです。EXEN2 = 1の時、T2EX有効エッジトリガで設定される。ソフトウェアでクリアする必要があります。 0
5RCLK RWUART0の受信クロックを選択します。
0: Timer1のオーバーフローで発生するボーレートを選択します。
1: Timer2のオーバーフローで発生するボーレートを選択します。
0
4TCLK RWUART0の送信クロックを選択します。
0: Timer1のオーバーフローで発生するボーレートを選択します。
1: Timer2のオーバーフローで発生するボーレートを選択します。
0
3EXEN2RWT2EXトリガ許可ビット
0: T2EXを無視します。
1: T2EXエッジでのリロードまたはキャプチャのトリガを有効にします。
0
2 TR2 RWTimer2のスタート/ストップビットです。1に設定して開始します。ソフトで設定、解除が必要。 0
1 C_T2RWTimer2クロックソース選択ビット
0: 内部クロックを使用します。
1: T2ピンの立下りエッジに基づくエッジカウントを使用します。
0
0CP_RL2RWTimer2機能選択ビットです。RCLKまたはTCLKが1の場合、本ビットは強制的に0になります。
0: Timer2はTimer/Counterとして使用され、カウンタがオーバーフローした時やT2EXレベルが変化した時に自動的に初期カウント値をリロードします。
1: Timer2のキャプチャ2機能を有効にし、T2EXの有効エッジをキャプチャします。
0

Timer/Counter2モードレジスタ(T2MOD):

ビット名前アクセス概要リセット値
7bTMR_CLKRW高速クロックのT0/T1/T2タイマの高速クロックモード許可が選択されています。
1: 周波数分割のないシステムクロックFsysがカウントクロックとして使用されます。
0: 分周クロックが使用されます。
このビットは、標準クロックを選択するタイマには影響しません。
0
6bT2_CLKRWTimer2内部クロック周波数選択ビットです。
0: 標準クロックを選択します。タイミング/カウントモードはFsys/12です。UART0のクロックモードはFsys/4です。
1: 高速クロックを選択します。(bTMR_CLK = 0)またはFsys(bTMR_CLK = 1)を選択します。UART0のクロックモードはFsys/2(bTMR_CLK = 0)またはFsys(bTMR_CLK = 1)です。
0
5bT1_CLKRWTimer1の内部クロック周波数選択ビットです。
0: 標準クロックFsys/12を選択します。
1: 高速クロックFsys/4(bTMR_CLK = 0)またはFsys(bTMR_CLK = 1)を選択します。
0
4bT0_CLKRWTimer0内部クロック周波数選択ビットです。
0: 標準クロックFsys/12です。
1: 高速クロックFsys/4(bTMR_CLK = 0)またはFsys(bTMR_CLK = 1)です。
0
3bT2_CAP_M1RWTimer2キャプチャモード上位

キャプチャモードの選択:
X0: 立下りエッジから立下りエッジ
01: 任意のエッジから任意のエッジ、つまりレベル変化
11: 立上がりエッジから立上がりエッジ

0
2bT2_CAP_M0RWTimer2キャプチャモード下位0
1T2OERWTimer2クロック出力許可ビット
0: 出力を無効にします。
1: T2ピンの出力クロックを有効にします。周波数はTimer2のオーバーフローレートの半分です。
0
0bT2_CAP1_ENRWキャプチャ1モードは、RCLK = 0、TCLK = 0、CP_RL2 = 1、C_T2 = 0、T2OE = 0 のときに有効になります。
1: T2の有効エッジをキャプチャするためのキャプチャ1機能を有効にします。
0: キャプチャ1を無効にする。
0

カウントリロード/キャプチャ2データレジスタ(RCAP2):

ビット名前アクセス概要リセット値
[7:0]RCAP2HRWタイマー/カウンタモードでのリロード値の上位バイト。キャプチャモードでCAP2がキャプチャしたタイマーの上位バイト00h
[7:0]RCAP2LRWタイマー/カウンタモードでのリロード値の下位バイト。キャプチャモードでCAP2がキャプチャしたタイマーの下位バイト00h

Timer2カウンタ(T2COUNT), bT2_CAP1_EN = 0の時有効:

ビット名前アクセス概要リセット値
[7:0]TH2RWカレントカウンタの上位バイト00h
[7:0]TL2RWカレントカウンタの下位バイト00h

Timer2キャプチャ1データ(T2CAP1), bT2_CAP1_EN = 1の時有効:

ビット名前アクセス概要リセット値
[7:0]T2CAP1HRWCAP1でキャプチャされたタイマの上位バイトxxh
[7:0]T2CAP1LRWCAP1でキャプチャされたタイマの下位バイトxxh

12.3 Timer3

表12.3.1 Timer33関連レジスタ一覧

名前アドレス概要リセット値
T3_FIFO_H AFhTimer3のFIFO上位バイト xxh
T3_FIFO_L AEhTimer3のFIFO下位バイト xxh
T3_FIFO AEhT3_FIFO_LとT3_FIFO_Hは16ビットのSFRを形成します xxxxh
T3_DMA_AH ADhDMAカレントバッファアドレス上位バイト 0xh
T3_DMA_AL AChDMAカレントバッファアドレス下位バイト xxh
T3_DMA AChT3_DMA_ALとT3_DMA_AHは16ビットのSFRを形成します0xxxh
T3_DMA_CN ABhDMA残量レジスタ00h
T3_CTRL AAhTimer3制御レジスタ02h
T3_STAT A9hTimer3状態レジスタ00h
T3_END_H A7hTimer3カウント終了上位バイトxxh
T3_END_L A6hTimer3カウント終了下位バイトxxh
T3_END A6hT3_END_LとT3_END_Hは16ビットのSFRを形成するxxxxh
T3_COUNT_H A5hTimer3カレントカウント上位バイト(読み出し専用)00h
T3_COUNT_L A4hTimer3カレントカウント下位バイト(読み出し専用)00h
T3_COUNT A4hT3_COUNT_LとT3_COUNT_Hは16ビットのSFRを形成する0000h
T3_CK_SE_H A5hTimer3クロック分周設定上位バイト00h
T3_CK_SE_L A4hTimer3クロック分周設定下位バイト20h
T3_CK_SE A4hT3_CK_SE_LとT3_CK_SE_Hは16ビットのSFRを形成する0020h
T3_SETUP A3hTimer3設定レジスタ04h

Timer3セットアップレジスタ(T3_SETUP):

ビット名前アクセス概要リセット値
7bT3_IE_ENDRW1: キャプチャモードカウントタイムアウト割り込みまたはPWMモード終了割り込みを有効にします。
0: 無効にします。
0
6bT3_IE_FIFO_OVRW1: FIFOオーバーフロー割り込みを有効にします。
0: FIFOオーバーフロー割り込みを無効にします。
0
5bT3_IE_FIFO_REQRW1: キャプチャモードFIFO>=4割り込みまたはPWMモードFIFO<=3割り込みを有効にします。
0: 無効にします。
0
4bT3_IE_ACTRW1: キャプチャモード入力信号割り込みまたはPWMモード出たトリガー割り込みを有効にします。
0: 無効にします。
0
3reserveR0予約0
2bT3_CAP_INR0ノイズフィルタリング後のカレントキャプチャピンの入力レベル1
1bT3_CAP_CLKRW最小パルス幅の制限なしに入力キャプチャを有効にします。T3_CK_SE が 1 の時のみ有効です。高速信号のキャプチャに使用します。
1: 有効にします。
0: 無効にします。
0
0bT3_EN_CK_SERW1: クロック分周器設定レジスタへのアクセスを有効にします。
0: カレントカウントレジスタへのアクセスを有効にします。
0

Timer3カレントカウント(T3_COUNT), bT3_EN_CK_SE = 0の時有効:

ビット名前アクセス概要リセット値
[7:0]T3_COUNT_HROTimer3カレントカウント上位バイト00h
[7:0]T3_COUNT_LROTimer3カレントカウント下位バイト00h

Timer3クロック分周設定レジスタ(T3_CK_SE), bT3_EN_CK_SE = 1の時有効:

ビット名前アクセス概要リセット値
[7:0]T3_CK_SE_HRWTimer3クロック分周器の上位バイト。下位4ビットのみが有効です。上位4ビットは0固定00h
[7:0]T3_CK_SE_LRWTimer3クロック分周器の下位バイト20h

Timer3カウント終了値レジスタ(T3_END):

ビット名前アクセス概要リセット値
[7:0]T3_END_HRWTimer3カウント終了上位バイトxxh
[7:0]T3_END_LRWTimer3カウント終了下位バイトxxh

Timer3状態レジスタ(T3_STAT):

ビット名前アクセス概要リセット値
7bT3_IF_DMA_ENDRWDMA終了割り込みフラグ。
1: 割り込みを示します。
0: 割り込み無しを示します。1を書き込んでクリアされるか、T3_DMA_CNでクリアされます。
0
6bT3_IF_FIFO_OVRW1: FIFOオーバーフロー割り込みを示します。
0: 割り込みが発生していないことを示します。1を書き込んでクリア
0
5bT3_IF_FIFO_REQRW1: FIFOデータ割り込みフラグが要求されていることを示します。キャプチャモードではFIFO>=4でトリガされ、PWMモードではFIFO <=3でトリガされます。
0: 割り込みはありません。1を書き込んでクリア
0
4bT3_IF_ACTRW1: bT3_IE_ACT = 1の時、キャプチャモード入力信号により割り込みが発生するか、PWMモードデータにより割り込みが発生することを示します。
0: 割り込みが発生していないことを示します。1を書き込みでクリアされるか、FIFOアクセス時にクリアされます。
0
4bT3_IF_ENDRW1: bT3_IE_ACT = 0の時、キャプチャモードのカウントタイムアウト割り込みまたはPWMモードのサイクルエンド割り込みを示します。
0: 割り込みはありません。1を書き込みクリア
0
[3:0]MASK_T3_FIFO_CNTR0Timer3の現在FIFOカウント0000b

Timer3制御レジスタ(T3_CTRL):

ビット名前アクセス概要リセット値
7bT3_CAP_M1RWTimer3キャプチャエッジモード上位ビット。PWMデータリピートモード上位ビット0
6bT3_CAP_M0RWTimer3キャプチャエッジモード下位ビット。PWMデータリピートモード下位ビット0
5bT3_PWM_POLARRWPWMモード時のPWM出力極性制御ビットです。
0: デフォルトはLOWレベルで、アクティブHIGHです。
1: デフォルトはHIGHレベルで、アクティブLOWです。
0
5bT3_CAP_WIDTHRWキャプチャモードでは、キャプチャパルス幅の最小値設定ビットです。このビットが0の場合、最低4分周クロックサイクルが有効です。0
4bT3_DMA_ENRW1: Timer3のDMA、DMA割り込みを有効にします。
0: 無効になります。
0
3bT3_OUT_ENRW1: Timer3のPWM出力を有効にします。
0: 無効になります。
0
2bT3_CNT_ENRW1: Timer3のカウントを有効にします。
0: カウントを停止します。
0
1bT3_CLR_ALLRW1: Timer3のカウントとFIFOをクリアします。ソフトでクリアする必要があります1
0bT3_MOD_CAPRWTimer3のモード選択ビットです。
0: Timer3はTimer/CountまたはPWMモードで動作します。
1: キャプチャモードで動作します。
0

キャプチャモードでは、bT3_CAP_M1、bT3_CAP_M0はキャプチャエッジを選択します。
00: キャプチャモードはオフまたはサスペンドになります。
01: エッジは任意のエッジ、すなわちレベルの変化によってアクティブになり、キャプチャは任意のエッジから任意のエッジまでである。
10: 立ち下がりエッジによってアクティブになり、立ち下がりエッジから立ち下がりエッジへのキャプチャ。
11: 立ち上がりエッジでアクティブになり、立ち上がりエッジから立ち上がりエッジへのキャプチャ。

PWMモードでは、bT3_CAP_M1、bT3_CAP_M0は、データの繰り返し回数を選択します。
00: データは再利用されず、PWMサイクルごとに新しいデータが使用されます。
01: 4回データを再利用し、連続4回のPWMサイクルで同じデータを使用します。
10: 8回データを再利用します。
11: 16回データを再使用します。

DMA残量レジスタ(T3_DMA_CN):

ビット名前アクセス概要リセット値
[7:0]T3_DMA_CNRW初期値にプリセット可能で、DMA動作後に自動的に減算される現在のDMA残量00h

DMAカレントバッファアドレス(T3_DMA):

ビット名前アクセス概要リセット値
[7:0]T3_DMA_AHRW現在のDMAアドレスの上位バイト。初期値にプリセットすることができます。DMA後に自動的に増加します。下位4ビットのみ有効です。上位4ビットは0に固定されます。xRAMの最初の4Kのみサポートしています。0xh
[7:0]T3_DMA_ALRW現在のDMAアドレスの下位バイト。初期値にプリセットすることができます。DMA後に自動的に増加します。上位7ビットのみ有効です。最下位ビットは0に固定されます。偶数アドレスのみサポートしています。xxh

FIFOポート(T3_FIFO):

ビット名前アクセス概要リセット値
[7:0]T3_FIFO_HRWTimer3のFIFO上位バイトxxh
[7:0]T3_FIFO_LRWTimer3のFIFO下位バイトxxh

12.4 PWM機能

CH559のTimer3は16ビットのPWM機能を有している。この他に8ビットのPWMが2つあります。PWMは、デフォルトの出力極性をLOWまたはHIGHに選択することができます。PWM出力のデューティサイクルを動的に変更することができます。単純なRC抵抗とコンデンサで積分ローパスフィルタリングを行った後、様々な出力電圧を得ることができ、これは低速デジタル-アナログ変換DACに相当する。

PWM3出力のデューティサイクル = T3_FIFO / T3_END。値が0%から100%までの範囲をサポートしています。T3_FIFOの値がT3_ENDより大きい場合は100%として扱われます。

PWM1出力のデューティサイクル = PWM_DATA / PWM_CYCLE。値が0%から100%までの範囲をサポートしています。PWM_DATAの値がPWM_CYCLEよりも大きい場合は100%として扱われます。

PWM2出力のデューティサイクル = PWM_DATA2 / PWM_CYCLE。値が0%から100%までの範囲をサポートしています。PWM_DATA2の値がPWM_CYCLEよりも大きい場合は100%として扱われます。

実用的な用途では、PWMピンの出力を許可し、PWM出力ピンをプッシュプル出力モードに設定することを推奨します。

12.4.1 PWM1とPWM2

表12.4.1 PWM1、PWM2関連レジスタ一覧

名前アドレス概要リセット値
PWM_CYCLE9Fh3xxh
PWM_CK_SE9Eh300h
PWM_CTRL9Dh302h
PWM_DATA9Ch3xxh
PWM_DATA29Bh3xxh

PWM2データレジスタ(PWM_DATA2):

ビット名前アクセス概要リセット値
[7:0]PWM_DATA2RWPWM2の現在データを格納します。PWM2出力アクティブレベルのデューティサイクル = PWM_DATA2 / PWM_CYCLExxh

PWM1 data register (PWM_DATA):

ビット名前アクセス概要リセット値
[7:0]PWM_DATARWPWM1の現在データを格納します。 PWM1出力アクティブレベルのデューティサイクル = PWM_DATA / PWM_CYCLExxh

PWM制御レジスタ(PWM_CTRL):

ビット名前アクセス概要リセット値
7bPWM_IE_ENDRW1: PWM終了またはMFMバッファエンプティ割り込みを有効にします。0
6bPWM2_POLARRWbPWM_MOD_MFM = 0の場合、PWM2の出力極性を制御します。
0: デフォルトLOW、アクティブHIGH
1: デフォルトHIGH、アクティブLOW
0
6bMFM_BUF_EMPTYR01: bPWM_MOD_MFM = 1の場合、MFMバッファが空であることを示します0
5bPWM_POLARRWPWM1出力の極性を制御します。
0: デフォルトLOW、アクティブHIGH
1: デフォルトHIGH、アクティブLOW
0
4bPWM_IF_ENDRWPWMサイクル終了割り込みフラグビット
1: 割り込みが発生していることを示します。1の書き込みでクリア、またはPWM_CYCLEの書き込みでクリア、またはデータのリロード時にクリア
0
3bPWM_OUT_ENRWPWM1出力許可です。
1: PWM1出力を有効にします。
0
2bPWM2_OUT_ENRW1: bPWM_MOD_MFM = 0のとき。PWM2出力を有効にします。0
2bMFM_BIT_CNT2R0bPWM_MOD_MFM = 1の場合、現在のMFMエンコードの進行状況を示します。
0: 下位4ビットが処理中であることを示します。
1: 上位4ビットが処理中であることを示します。
0
1bPWM_CLR_ALLRW1: PWM1とPWM2のカウントとFIFOをクリアするためのもので、ソフトウェアでクリアする必要があります。1
0bPWM_MOD_MFMRWMFMエンコードモード
0: PWMモード
1: MFMモード
0

PWMクロック分周設定レジスタ(PWM_CK_SE):

ビット名前アクセス概要リセット値
[7:0]PWM_CK_SERWPWMクロック分周器の設定00h

PWMPWM周期レジスタ(PWM_CYCLE):

ビット名前アクセス概要リセット値
[7:0]PWM_CYCLERWPWM周期を設定します。値が00hの場合、100hを意味します。xxh

12.5 タイマ機能

12.5.1 Timer0/1

  1. タイマの内部クロック周波数を選択するためにT2MODを設定します。bTn_CLK(n = 0/1)が0の場合、Timer0/1に対応するクロックはFsys/12となります。bTn_CLK が1の場合は、bTMR_CLK = 0または1でFsysを選択します。クロックとして/4またはFsysを選択します。
  2. TMODを設定してタイマーの動作モードを設定します。
  3. タイマ/カウンタの初期値TLn, THn(n = 0/1)を設定します。
  4. TCONのビットTRn(n = 0/1)を設定することで、タイマ/カウンタの起動/停止を行います。ビットTFn(n = 0/1)で問い合わせるか、割り込みモードで検出します。

モード0: 13ビットタイマ/カウンタ

Timer_Mode_0

図12.5.1.1 Timer0/1モード0

モード1: 16ビットタイマ/カウンタ

Timer_Mode_1

図12.5.1.2 Timer0/1モード1

モード2: 自動リロード8ビットタイマ/カウンタ

Timer_Mode_2

図12.5.1.3 Timer0/1モード2

モード3: Timer0は、独立した2つの8ビットのタイマとカウンタに分解され、Timer1のTR1制御ビットが借用される。

Timer1は、借用されたTR1制御ビットをモード3を開始するか否かで置き換え、Timer1はモード3に入り、Timer1の動作を停止する。

Timer_Mode_3

図12.5.1.4 Timer0モード3

12.5.2 Timer2

Timer2 16ビットリロードタイマ/カウンタモード:

  1. T2CONのRCLK, TCLKビットを0に設定し、非シリアルポートのボーレート生成モードを選択します。
  2. T2CONのビットC_T2を0に設定します。内部クロックを使用する場合は(3)に進みます。また、T2ピンの立ち下がりエッジをカウントクロックとして使用する場合は、ステップ(3)をスキップして1に設定することもできます。
  3. T2MODを設定して、タイマの内部クロック周波数を選択します。bT2_CLKが0の場合、Timer2のクロックはFsys / 12となります。bT2_CLKが1の場合は、T.R_CLK=0または1でクロックとしてFsys / 4またはFsysを選択します。
  4. T2CONのCP_RL2ビットを0に設定し、Timer2の 16ビットリロードタイマ/カウンタ機能を選択します。
  5. タイマーオーバーフロー後のリロード値に RCAP2L,RCAP2H を設定します。タイマの初期値にTL2, TH2を設定し(一般的にはRCAP2L, RCAP2Hと同じ)、TR2を1に設定し、t.rt Timer2を設定します。
  6. 現在のタイマ/カウンタの状態は、TF2またはTimer2割り込みを問い合わせることで取得できます。

Timer2_16bit

図12.5.2.1 Timer2 16ビットリロードタイマ/カウンタ

Timer2のクロック出力モード:

16ビットリロードタイマ/カウンタモードを参照してください。T2MODのT2OEビットを1に設定することで、T2ピンからのTF2分周クロックの出力を有効にします。

Timer2シリアルポート0ボーレート生成モード:

  1. T2CONのビットC_T2を0に設定して内部クロックを使用するか、1に設定してT2ピンの立ち下がりエッジをクロックとして選択します。T2CONのRCLK, TCLKを1またはh.mのいずれかに設定します。ボーレートジェネレータのモードを選択します。
  2. タイマの内部クロック周波数を選択するためにT2MODを設定します。bT2_CLKが0の場合、Timer2のクロックはFsys / 4となります。bT2_CLKが1の場合は、bTMR_CLK=0または1でFsys / 2またはFsysをクロックとして選択します。
  3. タイマオーバーフロー後のリロード値にRCAP2L, RCAP2Hを設定し、TR2を1に設定してTimer2を起動します。

Timer2_baud_gen

図12.5.2.2 Timer2 UART0ボーレートジェネレータ

Timer2デュアルチャネルキャプチャモード:

  1. T2CONのRCLK, TCLKビットを0に設定し、非シリアルポートのボーレート生成モードを選択します。
  2. T2CONのビットC_T2を0に設定します。内部クロックを使用するように選択し、ステップ(3)に進みます。また、T2ピンの立ち下がりエッジをカウントクロックとして選択するように設定し、ステップ(3)をスキップします。
  3. T2MODを設定して、タイマの内部クロック周波数を選択します。bT2_CLKが0の場合、Timer2のクロックはFsys/12となります。bT2_CLKが1の場合は、T.R_CLK=0または1でクロックとしてFsys/4またはFsysを選択します。
  4. T2MODのbT2_CAP_M1, bT2_CAP_M0を設定し、対応するエッジキャプチャモードを選択します。
  5. T2CONのCP_RL2ビットを1に設定し、Timer2によるT2EXピンのキャプチャ機能を選択します。
  6. TL2, TH2をタイマの初期値に設定し、TR2を1に設定してTimer2をスタートさせます。
  7. CAP2のキャプチャが完了すると、RCAP2LとRCAP2Hは現在のTL2とTH2のカウント値を保存し、EXF2を設定して割り込みを発生させます。次のキャプチャされたRCAP2LとRCAP2H i.lは、最後にキャプチャされたRCAP2LとRCAP2Hの間になり、その差は2つの有効なエッジ間の信号幅となります。
  8. T2CONのビットC_T2が0、T2MODのビットbT2_CAP1_ENが1の場合、T2ピンのTimer2のキャプチャ機能が同時に有効になります。CAP1のキャプチャが完了すると、T2CAP1LとT2CAP1Hは現在のTL2とTH2を保存し、CAP1Fビットがセットされて割り込みを発生させます。

tim2_capture_mode

図12.5.2.3 Timer2キャプチャモード

12.5.3 Timer3

  1. T3_SETUPのビットbT3_EN_CK_SEを1に設定し、Timer3のクロック分周設定レジスタT3_CK_SEを有効にして分周係数を設定し、クロックをFsys / T3_CK_SEにカウントします。設定完了後、T._EN_CK_SEをクリアします。
  2. T3_ENDのカウント終了値またはPWMの総回数を設定します。
  3. 必要に応じてT3_SETUPで割り込み許可をONにします。
  4. T3_CTRLに各制御ビットをセットしてモードを選択し、bT3_CLR_ALLをクリアし、bT3_CNT_ENをセットしてTimer3をスタートさせる。
  5. 必要に応じてT3_DMA_ALとT3_DMA_AHとT3_DMA_CNを設定し、bT3_DMA_ENを設定してDMA機能を有効にする。

tim3_16bit_tpc

図12.5.3.1 Timer3 16ビット タイマ/PWM/キャプチャ

Timer3のキャプチャされたデータ形式:

Timer3は、信号の有効な2つのエッジ間の幅をキャプチャするために使用することができます。キャプチャ中またはキャプチャ後に、DMAまたはFIFOを直接読み込んで幅データを取得することができます。データは16ビットです。最上位ビットは識別ビットで、下位15ビットは幅カウントです。信号キャプチャが有効になった後は、有効なエッジが検出されるたび、またはタイマーがオーバーフローするたびにデータが生成されます。最初の有効エッジで生成されるデータは、シグナルキャプチャが有効になった時点からの幅であり、2つの有効エッジの幅ではないので、通常は最初にキャプチャされたデータは破棄されます。

(1). bT3_CAP_M1とbT3_CAP_M0が11

立ち上がりエッジが有効であり、立ち上がりエッジから立ち上がりエッジまでの信号幅を捕捉していること、すなわち立ち上がりエッジが有効になっていることを意味する。データの最上位ビットが1であれば、信号幅がカウント終了値をオーバーしたことを意味し、つまり、タイミングがT3_ENDを超えて次の立ち上がりエッジが見つからない場合には、最上位ビットが0である次のデータの幅に幅値を加算しなければならない。最上位ビットが0であるということは、ある立ち上がりエッジの終了間の幅であり、ある前のデータの最上位ビットが1であるかどうかによって下位15ビットが前方に累積されるかどうかが決まるということである。このモードでは、超広幅信号や特殊用途の終了信号を検出するためにT3_ENDを設定し、通常の信号はオーバーフローしないようにすることが望ましい。

例えば、T3_ENDが4000hに設定され、収集された生データのシーケンスは以下のようになります。

1234h, 2345h, 0456h, C000h, C000h, 1035h, 3579h, C000h, 2468h, 0987h を組み合わせて、各立ち上がりエッジ間の間隔を求めます。: 1234h, 2345h, 0456h, 9035h, 3579h, 6468h, 0987h

(2). bT3_CAP_M1とbT3_CAP_M0が10

上記と同じですが、立上りエッジから立下りエッジまでの信号幅を捉えた立下りエッジが有効、つまり立下りエッジが有効となります。

(3). bT3_CAP_M1とbT3_CAP_M0が01

任意のエッジは有効であり、任意のエッジから任意のエッジまでの信号幅をキャプチャし、すなわち、レベル変化が有効化されます。データの最上位ビットが1の場合、幅はハイレベル幅、つまり立ち上がりエッジから立ち下がりエッジまでの幅となります。データの最上位ビットが0の場合、幅はローレベル幅、すなわち立下りエッジから立上りエッジまでの幅となる。最上位ビットをマスキングした後の下位15ビットは、分割クロックでカウントされた幅値となります。このモードでは、タイミングオーバーフローを避けるために、T3_ENDをより大きな値に設定することが推奨されますが、有効データの15桁を超えてはいけません。