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 | 89h | Timer0/1モードレジスタ | 00h |
TCON | 88h | Timer0/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_GATE | RW | ゲーティング許可ビットは、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_M1 | bTn_M0 | Timern 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] | TLn | RW | Timernカウント下位バイト | xxh |
Timernカウント上位バイト(THn) (n = 0, 1):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | TLn | RW | Timernカウント上位バイト | xxh |
12.2 Timer2
Timer2は16ビットのオートリロードTimer/Counterです。T2CON, T2MODレジスタで設定します。Timer2の上位バイトカウンタはTH2、下位バイトはTL2です。Timer2はUART0のボーレート発生器として使用できます。また、2つの信号レベルのキャプチャ機能を持っています。キャプチャカウントはRCAP2レジスタとT2CAP1レジスタに格納されます。
表12.2.1 Timer2関連レジスタ一覧
名前 | アドレス | 概要 | リセット値 |
---|---|---|---|
TH2 | CDh | Timer2カウンター上位バイト | 00h |
TL2 | CCh | Timer2カウンター下位バイト | 00h |
T2COUNT | CCh | TL2とTH2は16ビットSFRを形成します。 | 0000h |
T2CAP1H | CDh | Timer2キャプチャ1データ上位バイト(読み出し専用) | xxh |
T2CAP1L | CCh | Timer2キャプチャ1データ下位バイト(読み出し専用) | xxh |
T2CAP1 | CCh | T2CAP1LとT2CAP1Hは、16ビットSFRを形成します。 | xxxxh |
RCAP2H | CBh | カウントリロード/キャプチャ2データレジスタ上位バイト | 00h |
RCAP2L | CAh | カウントリロード/キャプチャ2データレジスタ下位バイト | 00h |
RCAP2 | CAh | RCAP2LとRCAP2Hは16ビットSFRを形成します。 | 0000h |
T2MOD | C9h | Timer2モードレジスタ | 00h |
T2CON | C8h | Timer2制御レジスタ | 00h |
Timer/Counter2制御レジスタ(T2CON):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
7 | TF2 | RW | bT2_CAP1_EN = 0の場合。Timer2のオーバーフロー割り込みフラグです。Timer2の16ビットからのカウントが全て1からオール0になる場合、オーバーフローフラグを1に設定するにはソフトウェアでクリアする必要があります。 RCLK = 1またはTCLK = 1の時は、本ビットは1にセットされません。 | 0 |
7 | CAP1F | RW | bT2_CAP1_EN = 1 の場合。Timer2キャプチャ1割り込みフラグです。T2の有効エッジによってトリガされ、ソフトウェアによってクリアされる必要があります。 | 0 |
6 | EXF2 | RW | Timer2外部トリガフラグです。EXEN2 = 1の時、T2EX有効エッジトリガで設定される。ソフトウェアでクリアする必要があります。 | 0 |
5 | RCLK | RW | UART0の受信クロックを選択します。 0: Timer1のオーバーフローで発生するボーレートを選択します。 1: Timer2のオーバーフローで発生するボーレートを選択します。 | 0 |
4 | TCLK | RW | UART0の送信クロックを選択します。 0: Timer1のオーバーフローで発生するボーレートを選択します。 1: Timer2のオーバーフローで発生するボーレートを選択します。 | 0 |
3 | EXEN2 | RW | T2EXトリガ許可ビット 0: T2EXを無視します。 1: T2EXエッジでのリロードまたはキャプチャのトリガを有効にします。 | 0 |
2 | TR2 | RW | Timer2のスタート/ストップビットです。1に設定して開始します。ソフトで設定、解除が必要。 | 0 |
1 | C_T2 | RW | Timer2クロックソース選択ビット 0: 内部クロックを使用します。 1: T2ピンの立下りエッジに基づくエッジカウントを使用します。 | 0 |
0 | CP_RL2 | RW | Timer2機能選択ビットです。RCLKまたはTCLKが1の場合、本ビットは強制的に0になります。 0: Timer2はTimer/Counterとして使用され、カウンタがオーバーフローした時やT2EXレベルが変化した時に自動的に初期カウント値をリロードします。 1: Timer2のキャプチャ2機能を有効にし、T2EXの有効エッジをキャプチャします。 | 0 |
Timer/Counter2モードレジスタ(T2MOD):
ビット | 名前 | アクセス | 概要 | リセット値 | |
---|---|---|---|---|---|
7 | bTMR_CLK | RW | 高速クロックのT0/T1/T2タイマの高速クロックモード許可が選択されています。 1: 周波数分割のないシステムクロックFsysがカウントクロックとして使用されます。 0: 分周クロックが使用されます。 このビットは、標準クロックを選択するタイマには影響しません。 | 0 | |
6 | bT2_CLK | RW | Timer2内部クロック周波数選択ビットです。 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 | |
5 | bT1_CLK | RW | Timer1の内部クロック周波数選択ビットです。 0: 標準クロックFsys/12を選択します。 1: 高速クロックFsys/4(bTMR_CLK = 0)またはFsys(bTMR_CLK = 1)を選択します。 | 0 | |
4 | bT0_CLK | RW | Timer0内部クロック周波数選択ビットです。 0: 標準クロックFsys/12です。 1: 高速クロックFsys/4(bTMR_CLK = 0)またはFsys(bTMR_CLK = 1)です。 | 0 | |
3 | bT2_CAP_M1 | RW | Timer2キャプチャモード上位 | キャプチャモードの選択: | 0 |
2 | bT2_CAP_M0 | RW | Timer2キャプチャモード下位 | 0 | |
1 | T2OE | RW | Timer2クロック出力許可ビット 0: 出力を無効にします。 1: T2ピンの出力クロックを有効にします。周波数はTimer2のオーバーフローレートの半分です。 | 0 | |
0 | bT2_CAP1_EN | RW | キャプチャ1モードは、RCLK = 0、TCLK = 0、CP_RL2 = 1、C_T2 = 0、T2OE = 0 のときに有効になります。 1: T2の有効エッジをキャプチャするためのキャプチャ1機能を有効にします。 0: キャプチャ1を無効にする。 | 0 |
カウントリロード/キャプチャ2データレジスタ(RCAP2):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | RCAP2H | RW | タイマー/カウンタモードでのリロード値の上位バイト。キャプチャモードでCAP2がキャプチャしたタイマーの上位バイト | 00h |
[7:0] | RCAP2L | RW | タイマー/カウンタモードでのリロード値の下位バイト。キャプチャモードでCAP2がキャプチャしたタイマーの下位バイト | 00h |
Timer2カウンタ(T2COUNT), bT2_CAP1_EN = 0の時有効:
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | TH2 | RW | カレントカウンタの上位バイト | 00h |
[7:0] | TL2 | RW | カレントカウンタの下位バイト | 00h |
Timer2キャプチャ1データ(T2CAP1), bT2_CAP1_EN = 1の時有効:
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | T2CAP1H | RW | CAP1でキャプチャされたタイマの上位バイト | xxh |
[7:0] | T2CAP1L | RW | CAP1でキャプチャされたタイマの下位バイト | xxh |
12.3 Timer3
表12.3.1 Timer33関連レジスタ一覧
名前 | アドレス | 概要 | リセット値 |
---|---|---|---|
T3_FIFO_H | AFh | Timer3のFIFO上位バイト | xxh |
T3_FIFO_L | AEh | Timer3のFIFO下位バイト | xxh |
T3_FIFO | AEh | T3_FIFO_LとT3_FIFO_Hは16ビットのSFRを形成します | xxxxh |
T3_DMA_AH | ADh | DMAカレントバッファアドレス上位バイト | 0xh |
T3_DMA_AL | ACh | DMAカレントバッファアドレス下位バイト | xxh |
T3_DMA | ACh | T3_DMA_ALとT3_DMA_AHは16ビットのSFRを形成します | 0xxxh |
T3_DMA_CN | ABh | DMA残量レジスタ | 00h |
T3_CTRL | AAh | Timer3制御レジスタ | 02h |
T3_STAT | A9h | Timer3状態レジスタ | 00h |
T3_END_H | A7h | Timer3カウント終了上位バイト | xxh |
T3_END_L | A6h | Timer3カウント終了下位バイト | xxh |
T3_END | A6h | T3_END_LとT3_END_Hは16ビットのSFRを形成する | xxxxh |
T3_COUNT_H | A5h | Timer3カレントカウント上位バイト(読み出し専用) | 00h |
T3_COUNT_L | A4h | Timer3カレントカウント下位バイト(読み出し専用) | 00h |
T3_COUNT | A4h | T3_COUNT_LとT3_COUNT_Hは16ビットのSFRを形成する | 0000h |
T3_CK_SE_H | A5h | Timer3クロック分周設定上位バイト | 00h |
T3_CK_SE_L | A4h | Timer3クロック分周設定下位バイト | 20h |
T3_CK_SE | A4h | T3_CK_SE_LとT3_CK_SE_Hは16ビットのSFRを形成する | 0020h |
T3_SETUP | A3h | Timer3設定レジスタ | 04h |
Timer3セットアップレジスタ(T3_SETUP):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
7 | bT3_IE_END | RW | 1: キャプチャモードカウントタイムアウト割り込みまたはPWMモード終了割り込みを有効にします。 0: 無効にします。 | 0 |
6 | bT3_IE_FIFO_OV | RW | 1: FIFOオーバーフロー割り込みを有効にします。 0: FIFOオーバーフロー割り込みを無効にします。 | 0 |
5 | bT3_IE_FIFO_REQ | RW | 1: キャプチャモードFIFO>=4割り込みまたはPWMモードFIFO<=3割り込みを有効にします。 0: 無効にします。 | 0 |
4 | bT3_IE_ACT | RW | 1: キャプチャモード入力信号割り込みまたはPWMモード出たトリガー割り込みを有効にします。 0: 無効にします。 | 0 |
3 | reserve | R0 | 予約 | 0 |
2 | bT3_CAP_IN | R0 | ノイズフィルタリング後のカレントキャプチャピンの入力レベル | 1 |
1 | bT3_CAP_CLK | RW | 最小パルス幅の制限なしに入力キャプチャを有効にします。T3_CK_SE が 1 の時のみ有効です。高速信号のキャプチャに使用します。 1: 有効にします。 0: 無効にします。 | 0 |
0 | bT3_EN_CK_SE | RW | 1: クロック分周器設定レジスタへのアクセスを有効にします。 0: カレントカウントレジスタへのアクセスを有効にします。 | 0 |
Timer3カレントカウント(T3_COUNT), bT3_EN_CK_SE = 0の時有効:
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | T3_COUNT_H | RO | Timer3カレントカウント上位バイト | 00h |
[7:0] | T3_COUNT_L | RO | Timer3カレントカウント下位バイト | 00h |
Timer3クロック分周設定レジスタ(T3_CK_SE), bT3_EN_CK_SE = 1の時有効:
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | T3_CK_SE_H | RW | Timer3クロック分周器の上位バイト。下位4ビットのみが有効です。上位4ビットは0固定 | 00h |
[7:0] | T3_CK_SE_L | RW | Timer3クロック分周器の下位バイト | 20h |
Timer3カウント終了値レジスタ(T3_END):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | T3_END_H | RW | Timer3カウント終了上位バイト | xxh |
[7:0] | T3_END_L | RW | Timer3カウント終了下位バイト | xxh |
Timer3状態レジスタ(T3_STAT):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
7 | bT3_IF_DMA_END | RW | DMA終了割り込みフラグ。 1: 割り込みを示します。 0: 割り込み無しを示します。1を書き込んでクリアされるか、T3_DMA_CNでクリアされます。 | 0 |
6 | bT3_IF_FIFO_OV | RW | 1: FIFOオーバーフロー割り込みを示します。 0: 割り込みが発生していないことを示します。1を書き込んでクリア | 0 |
5 | bT3_IF_FIFO_REQ | RW | 1: FIFOデータ割り込みフラグが要求されていることを示します。キャプチャモードではFIFO>=4でトリガされ、PWMモードではFIFO <=3でトリガされます。 0: 割り込みはありません。1を書き込んでクリア | 0 |
4 | bT3_IF_ACT | RW | 1: bT3_IE_ACT = 1の時、キャプチャモード入力信号により割り込みが発生するか、PWMモードデータにより割り込みが発生することを示します。 0: 割り込みが発生していないことを示します。1を書き込みでクリアされるか、FIFOアクセス時にクリアされます。 | 0 |
4 | bT3_IF_END | RW | 1: bT3_IE_ACT = 0の時、キャプチャモードのカウントタイムアウト割り込みまたはPWMモードのサイクルエンド割り込みを示します。 0: 割り込みはありません。1を書き込みクリア | 0 |
[3:0] | MASK_T3_FIFO_CNT | R0 | Timer3の現在FIFOカウント | 0000b |
Timer3制御レジスタ(T3_CTRL):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
7 | bT3_CAP_M1 | RW | Timer3キャプチャエッジモード上位ビット。PWMデータリピートモード上位ビット | 0 |
6 | bT3_CAP_M0 | RW | Timer3キャプチャエッジモード下位ビット。PWMデータリピートモード下位ビット | 0 |
5 | bT3_PWM_POLAR | RW | PWMモード時のPWM出力極性制御ビットです。 0: デフォルトはLOWレベルで、アクティブHIGHです。 1: デフォルトはHIGHレベルで、アクティブLOWです。 | 0 |
5 | bT3_CAP_WIDTH | RW | キャプチャモードでは、キャプチャパルス幅の最小値設定ビットです。このビットが0の場合、最低4分周クロックサイクルが有効です。 | 0 |
4 | bT3_DMA_EN | RW | 1: Timer3のDMA、DMA割り込みを有効にします。 0: 無効になります。 | 0 |
3 | bT3_OUT_EN | RW | 1: Timer3のPWM出力を有効にします。 0: 無効になります。 | 0 |
2 | bT3_CNT_EN | RW | 1: Timer3のカウントを有効にします。 0: カウントを停止します。 | 0 |
1 | bT3_CLR_ALL | RW | 1: Timer3のカウントとFIFOをクリアします。ソフトでクリアする必要があります | 1 |
0 | bT3_MOD_CAP | RW | Timer3のモード選択ビットです。 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_CN | RW | 初期値にプリセット可能で、DMA動作後に自動的に減算される現在のDMA残量 | 00h |
DMAカレントバッファアドレス(T3_DMA):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | T3_DMA_AH | RW | 現在のDMAアドレスの上位バイト。初期値にプリセットすることができます。DMA後に自動的に増加します。下位4ビットのみ有効です。上位4ビットは0に固定されます。xRAMの最初の4Kのみサポートしています。 | 0xh |
[7:0] | T3_DMA_AL | RW | 現在のDMAアドレスの下位バイト。初期値にプリセットすることができます。DMA後に自動的に増加します。上位7ビットのみ有効です。最下位ビットは0に固定されます。偶数アドレスのみサポートしています。 | xxh |
FIFOポート(T3_FIFO):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | T3_FIFO_H | RW | Timer3のFIFO上位バイト | xxh |
[7:0] | T3_FIFO_L | RW | Timer3の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_CYCLE | 9Fh | 3 | xxh |
PWM_CK_SE | 9Eh | 3 | 00h |
PWM_CTRL | 9Dh | 3 | 02h |
PWM_DATA | 9Ch | 3 | xxh |
PWM_DATA2 | 9Bh | 3 | xxh |
PWM2データレジスタ(PWM_DATA2):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | PWM_DATA2 | RW | PWM2の現在データを格納します。PWM2出力アクティブレベルのデューティサイクル = PWM_DATA2 / PWM_CYCLE | xxh |
PWM1 data register (PWM_DATA):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | PWM_DATA | RW | PWM1の現在データを格納します。 PWM1出力アクティブレベルのデューティサイクル = PWM_DATA / PWM_CYCLE | xxh |
PWM制御レジスタ(PWM_CTRL):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
7 | bPWM_IE_END | RW | 1: PWM終了またはMFMバッファエンプティ割り込みを有効にします。 | 0 |
6 | bPWM2_POLAR | RW | bPWM_MOD_MFM = 0の場合、PWM2の出力極性を制御します。 0: デフォルトLOW、アクティブHIGH 1: デフォルトHIGH、アクティブLOW | 0 |
6 | bMFM_BUF_EMPTY | R0 | 1: bPWM_MOD_MFM = 1の場合、MFMバッファが空であることを示します | 0 |
5 | bPWM_POLAR | RW | PWM1出力の極性を制御します。 0: デフォルトLOW、アクティブHIGH 1: デフォルトHIGH、アクティブLOW | 0 |
4 | bPWM_IF_END | RW | PWMサイクル終了割り込みフラグビット 1: 割り込みが発生していることを示します。1の書き込みでクリア、またはPWM_CYCLEの書き込みでクリア、またはデータのリロード時にクリア | 0 |
3 | bPWM_OUT_EN | RW | PWM1出力許可です。 1: PWM1出力を有効にします。 | 0 |
2 | bPWM2_OUT_EN | RW | 1: bPWM_MOD_MFM = 0のとき。PWM2出力を有効にします。 | 0 |
2 | bMFM_BIT_CNT2 | R0 | bPWM_MOD_MFM = 1の場合、現在のMFMエンコードの進行状況を示します。 0: 下位4ビットが処理中であることを示します。 1: 上位4ビットが処理中であることを示します。 | 0 |
1 | bPWM_CLR_ALL | RW | 1: PWM1とPWM2のカウントとFIFOをクリアするためのもので、ソフトウェアでクリアする必要があります。 | 1 |
0 | bPWM_MOD_MFM | RW | MFMエンコードモード 0: PWMモード 1: MFMモード | 0 |
PWMクロック分周設定レジスタ(PWM_CK_SE):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | PWM_CK_SE | RW | PWMクロック分周器の設定 | 00h |
PWMPWM周期レジスタ(PWM_CYCLE):
ビット | 名前 | アクセス | 概要 | リセット値 |
---|---|---|---|---|
[7:0] | PWM_CYCLE | RW | PWM周期を設定します。値が00hの場合、100hを意味します。 | xxh |
12.5 タイマ機能
12.5.1 Timer0/1
- タイマの内部クロック周波数を選択するためにT2MODを設定します。bTn_CLK(n = 0/1)が0の場合、Timer0/1に対応するクロックはFsys/12となります。bTn_CLK が1の場合は、bTMR_CLK = 0または1でFsysを選択します。クロックとして/4またはFsysを選択します。
- TMODを設定してタイマーの動作モードを設定します。
- タイマ/カウンタの初期値TLn, THn(n = 0/1)を設定します。
- TCONのビットTRn(n = 0/1)を設定することで、タイマ/カウンタの起動/停止を行います。ビットTFn(n = 0/1)で問い合わせるか、割り込みモードで検出します。
モード0: 13ビットタイマ/カウンタ
図12.5.1.1 Timer0/1モード0
モード1: 16ビットタイマ/カウンタ
図12.5.1.2 Timer0/1モード1
モード2: 自動リロード8ビットタイマ/カウンタ
図12.5.1.3 Timer0/1モード2
モード3: Timer0は、独立した2つの8ビットのタイマとカウンタに分解され、Timer1のTR1制御ビットが借用される。
Timer1は、借用されたTR1制御ビットをモード3を開始するか否かで置き換え、Timer1はモード3に入り、Timer1の動作を停止する。
図12.5.1.4 Timer0モード3
12.5.2 Timer2
Timer2 16ビットリロードタイマ/カウンタモード:
- T2CONのRCLK, TCLKビットを0に設定し、非シリアルポートのボーレート生成モードを選択します。
- T2CONのビットC_T2を0に設定します。内部クロックを使用する場合は(3)に進みます。また、T2ピンの立ち下がりエッジをカウントクロックとして使用する場合は、ステップ(3)をスキップして1に設定することもできます。
- T2MODを設定して、タイマの内部クロック周波数を選択します。bT2_CLKが0の場合、Timer2のクロックはFsys / 12となります。bT2_CLKが1の場合は、T.R_CLK=0または1でクロックとしてFsys / 4またはFsysを選択します。
- T2CONのCP_RL2ビットを0に設定し、Timer2の 16ビットリロードタイマ/カウンタ機能を選択します。
- タイマーオーバーフロー後のリロード値に RCAP2L,RCAP2H を設定します。タイマの初期値にTL2, TH2を設定し(一般的にはRCAP2L, RCAP2Hと同じ)、TR2を1に設定し、t.rt Timer2を設定します。
- 現在のタイマ/カウンタの状態は、TF2またはTimer2割り込みを問い合わせることで取得できます。
図12.5.2.1 Timer2 16ビットリロードタイマ/カウンタ
Timer2のクロック出力モード:
16ビットリロードタイマ/カウンタモードを参照してください。T2MODのT2OEビットを1に設定することで、T2ピンからのTF2分周クロックの出力を有効にします。
Timer2シリアルポート0ボーレート生成モード:
- T2CONのビットC_T2を0に設定して内部クロックを使用するか、1に設定してT2ピンの立ち下がりエッジをクロックとして選択します。T2CONのRCLK, TCLKを1またはh.mのいずれかに設定します。ボーレートジェネレータのモードを選択します。
- タイマの内部クロック周波数を選択するためにT2MODを設定します。bT2_CLKが0の場合、Timer2のクロックはFsys / 4となります。bT2_CLKが1の場合は、bTMR_CLK=0または1でFsys / 2またはFsysをクロックとして選択します。
- タイマオーバーフロー後のリロード値にRCAP2L, RCAP2Hを設定し、TR2を1に設定してTimer2を起動します。
図12.5.2.2 Timer2 UART0ボーレートジェネレータ
Timer2デュアルチャネルキャプチャモード:
- T2CONのRCLK, TCLKビットを0に設定し、非シリアルポートのボーレート生成モードを選択します。
- T2CONのビットC_T2を0に設定します。内部クロックを使用するように選択し、ステップ(3)に進みます。また、T2ピンの立ち下がりエッジをカウントクロックとして選択するように設定し、ステップ(3)をスキップします。
- T2MODを設定して、タイマの内部クロック周波数を選択します。bT2_CLKが0の場合、Timer2のクロックはFsys/12となります。bT2_CLKが1の場合は、T.R_CLK=0または1でクロックとしてFsys/4またはFsysを選択します。
- T2MODのbT2_CAP_M1, bT2_CAP_M0を設定し、対応するエッジキャプチャモードを選択します。
- T2CONのCP_RL2ビットを1に設定し、Timer2によるT2EXピンのキャプチャ機能を選択します。
- TL2, TH2をタイマの初期値に設定し、TR2を1に設定してTimer2をスタートさせます。
- CAP2のキャプチャが完了すると、RCAP2LとRCAP2Hは現在のTL2とTH2のカウント値を保存し、EXF2を設定して割り込みを発生させます。次のキャプチャされたRCAP2LとRCAP2H i.lは、最後にキャプチャされたRCAP2LとRCAP2Hの間になり、その差は2つの有効なエッジ間の信号幅となります。
- T2CONのビットC_T2が0、T2MODのビットbT2_CAP1_ENが1の場合、T2ピンのTimer2のキャプチャ機能が同時に有効になります。CAP1のキャプチャが完了すると、T2CAP1LとT2CAP1Hは現在のTL2とTH2を保存し、CAP1Fビットがセットされて割り込みを発生させます。
図12.5.2.3 Timer2キャプチャモード
12.5.3 Timer3
- T3_SETUPのビットbT3_EN_CK_SEを1に設定し、Timer3のクロック分周設定レジスタT3_CK_SEを有効にして分周係数を設定し、クロックをFsys / T3_CK_SEにカウントします。設定完了後、T._EN_CK_SEをクリアします。
- T3_ENDのカウント終了値またはPWMの総回数を設定します。
- 必要に応じてT3_SETUPで割り込み許可をONにします。
- T3_CTRLに各制御ビットをセットしてモードを選択し、bT3_CLR_ALLをクリアし、bT3_CNT_ENをセットしてTimer3をスタートさせる。
- 必要に応じてT3_DMA_ALとT3_DMA_AHとT3_DMA_CNを設定し、bT3_DMA_ENを設定してDMA機能を有効にする。
図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桁を超えてはいけません。