MSP430G2553 - タイマ
概要
MSP430G2553マイコンには、3つのタイマモジュールが搭載されている。
- Timer_A3
- 16ビットのタイマ / カウンタ
キャプチャ / 比較レジスタを3つ備えている。 - Timer_A3モジュールは、3つのキャプチャ/比較レジスタ (CCR0、CCR1、CCR2) を備えている。
- 16ビットのタイマ / カウンタ
- Timer_A2
- 16ビットのタイマ / カウンタ
キャプチャ / 比較レジスタを2つ備えている。
- 16ビットのタイマ / カウンタ
- Watchdog Timer+
- ウォッチドッグタイマとして機能する16ビットのタイマ
インターバルタイマとしても使用可能である。
- ウォッチドッグタイマとして機能する16ビットのタイマ
これらのタイマは、時間管理、イベントのスケジューリング、パルス幅変調 (PWM) の生成、外部信号のキャプチャ等、様々な用途に使用されている。
タイマの主な仕組みを以下に示す。
- カウント動作
- タイマはクロック信号に同期してカウント値を増加または減少させる。
- クロックソースは、内部クロック (SMCLK、ACLK)、外部クロック (TACLK) から選択できる。
- 動作モード
- タイマは、連続モード (カウンタが最大値に達すると0に戻る)、アップモード (カウンタが最大値に達すると停止)、アップ / ダウンモード (カウンタが最大値と0の間で増減を繰り返す) 等の動作モードを選択できる。
- 割り込み
- タイマは、カウンタが特定の値に達した場合や、キャプチャ / 比較イベントが発生した場合にに割り込みを生成することができる。
- これにより、CPU負荷を最小限に抑えながらタイミングイベントを処理できる。
- キャプチャ / 比較機能
- タイマのキャプチャ / 比較レジスタを使用すると、外部信号のエッジ (立ち上がりまたは立ち下がり) を検出したり、PWM信号を生成したりすることができる。
- ウォッチドッグ機能
- ウォッチドッグタイマは、システムの異常動作を検出して、リセットを行うために使用される。
- 定期的にウォッチドッグタイマをリセットしないと、システムがリセットされる。
MSP430G2553マイコンのタイマは、低消費電力動作とシンプルな設定が特徴である。
タイマの設定は、制御レジスタ (TACTLレジスタ、TACCTLxレジスタ) を通じて行う。
これらのレジスタを適切に設定することにより、目的に応じたタイマの動作を実現することができる。
Timer_A3モジュール
Timer_A3モジュールとは
MSP430G2553マイコンには、Timer_A3という16ビットのタイマ / カウンタモジュールが搭載されている。
このTimer_A3モジュールは、3つのキャプチャ / 比較レジスタ (CCR0、CCR1、CCR2) を備えており、それぞれがタイマA0、タイマA1、タイマA2として機能する。
複数の割り込みソース
- TA0CCR0
- タイマA0のカウンタが、TA0CCR0レジスタの値に達した場合に発生する割り込み
- TA0CCR1
- タイマA0のカウンタが、TA0CCR1レジスタの値に達した場合に発生する割り込み
- TA0CCR2
- タイマA0のカウンタが、TA0CCR2レジスタの値に達した場合に発生する割り込み
- TA0IFG
- タイマA0の上記以外の割り込みフラグが設定された場合に発生する割り込み
TA0IVレジスタの値と対応する割り込みソースを、以下に示す。
- 0x00
- 割り込みなし
- 0x02
- TA0CCR1
- 0x04
- TA0CCR2
- 0x0A
- TA0IFG (カウンタオーバーフロー等)
- 0x0E
- TA0IFG (カウンタクリア等)
PWM動作モードでは、TA0CCR0の値がPWM周期を決定、TA0CCR1の値がデューティ比を決定する。
TA0CCR1に関連する割り込みは、PWM周期ごとに発生する。
例えば、TA0IVレジスタの値が0x02
になる場合は、PWM周期ごとにTA0CCR1に関連する割り込みが発生していることを示す。
この割り込みを利用して、PWMのデューティ比を動的に変更することもできる。
タイマA0
動作モード
- アップモード
- カウンタが
0
からTACCR0レジスタに設定した値まで増加して、TACCR0レジスタに設定した値に達するとカウンタが0
に戻る。
- カウンタが
- 連続モード
- カウンタが
0
からFFFFh
まで増加して、FFFFh
に達すると<ode>0に戻る。
- カウンタが
- アップ / ダウンモード
- カウンタが
0
からTACCR0レジスタに設定した値まで増加して、TACCR0レジスタに設定した値に達するとTACCR0レジスタの値から0
まで減少する。
- カウンタが
クロックソース
- TACLK
- 外部クロック信号を使用する。
- ACLK
- 補助クロック (32.768[kHz]) を使用する。
- SMCLK
- サブメインクロック (最大16[MHz]) を使用する。
- INCLK
- 内部クロック (DCOCLK) を使用する。
クロック分周
1
、2
、4
、8
分周が可能である。
割り込み
- TACCR0と比較一致割り込み (CCIFG)
- カウンタオーバーフロー割り込み (TAIFG)
出力モード
- 比較モード
- TACCR0レジスタとの比較一致に基づいて出力信号の状態を変更する。
- セットアップモード
- TACCR0レジスタとの比較一致でセット、カウンタの再スタートでリセットする。
- トグルモード
- TACCR0レジスタとの比較一致で出力信号をトグルする。
- リセットモード
- TACCR0レジスタとの比較一致でリセット、カウンタの再スタートでセットする。
タイマA1
タイマA1の設定
- TACTL
- タイマAの制御レジスタ
- TACCTL1
- キャプチャ / 比較制御レジスタ1
- TACCR1
- キャプチャ / 比較レジスタ1
これらのレジスタを適切に設定することにより、目的に応じたタイマA1の動作を実現できる。
タイマA1は、PWM信号の生成、外部信号のエッジ検出とキャプチャ、一定間隔でのイベント処理等、様々な用途に使用できる。
特に、キャプチャモードを利用することにより、外部信号の周期やパルス幅を測定することができる。
動作モード
- アップモード
- カウンタが
0
からTACCR1レジスタに設定した値まで増加して、TACCR1レジスタに設定した値に達するとカウンタが0
に戻る。
- カウンタが
- 連続モード
- カウンタが
0
からFFFFh
まで増加して、FFFFh
に達すると0
に戻る。
- カウンタが
- アップ / ダウンモード
- カウンタが
0
からTACCR1レジスタに設定した値まで増加して、TACCR1レジスタに設定した値に達するとTACCR1レジスタから0
まで減少する。
- カウンタが
クロックソース
- TACLK
- 外部クロック信号を使用
- ACLK
- 補助クロック (32.768[kHz]) を使用
- SMCLK
- サブメインクロック (最大16[MHz]) を使用
- INCLK
- 内部クロック (DCOCLK) を使用
クロック分周
1
、2
、4
、8
分周が可能である。
割り込み
- TACCR1と比較一致割り込み (CCIFG)
- キャプチャ割り込み (CCIFG)
出力モード
- 比較モード
- TACCR1レジスタとの比較一致に基づいて出力信号の状態を変更する。
- セットアップモード
- TACCR1との比較一致でセット、カウンタの再スタートでリセットする。
- トグルモード
- TACCR1レジスタとの比較一致で出力信号をトグルする。
- リセットモード
- TACCR1レジスタとの比較一致でリセット、カウンタの再スタートでセットする。
キャプチャモード
- 立ち上がりエッジ
- 入力信号の立ち上がりエッジでキャプチャする。
- 立ち下がりエッジ
- 入力信号の立ち下がりエッジでキャプチャする。
- 両エッジ
- 入力信号の両エッジでキャプチャする。