📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
概要
電力モードは、マイコンの消費電力を管理するための仕組みである。
アプリケーションの要件に応じて、適切な電力モードを選択することにより、バッテリー駆動のデバイスにおける動作時間を延ばすことができる。
- アクティブモード
- マイコンがフル機能で動作しているモードである。
- 全てのクロックが動作し、CPUと周辺モジュールは通常の速度で動作する。
- 消費電力が最も高くなる。
- 低電力モード
- マイコンの一部の機能を停止または低速化することで、消費電力を抑えるモードである。
- 低電力モードにはいくつかのレベルがあり、停止する機能によって分類される。
- 一般的に、低電力モードのレベルが上がるほど、消費電力は低くなるが、復帰に時間がかかる場合がある。
- スリープモード
- CPUを停止して、いくつかの周辺モジュールも停止するモードである。
- 割り込みやリセットにより、スリープモードから復帰する。
- 低電力モードの一種と考えることができる。
- ディープスリープモード
- ほとんどの機能を停止して、最小限の消費電力で動作するモードである。
- 外部割り込みやリセットにより、ディープスリープモードから復帰する。
- 復帰時に、メモリの内容が失われる場合がある。
- 遷移と復帰
- 電力モード間の遷移は、レジスタの設定や特定の命令で行う。
- 割り込みやリセットにより、低電力モードからアクティブモードに復帰する。
- 復帰時に、停止していた機能を再初期化する必要がある場合がある。
電力モードを効果的に使用するには、アプリケーションの要件を分析、および、必要な機能と応答時間を考慮して、適切なモードを選択する必要がある。
また、割り込みや周辺モジュールの設定を適切に行い、復帰時の処理を正しく実装することが重要である。
MSP430F149の電力モード
- アクティブモード (AM)
- CPUと全てのクロックが動作しているモードである。
- MCLK、SMCLK、ACLKが動作し、全ての周辺モジュールが使用可能である。
- 消費電力が最も高くなる。
- 低電力モード0 (LPM0)
- CPUとMCLKが停止する。
- SMCLK、ACLK、DCOは動作し続ける。
- 周辺モジュールがSMCLKまたはACLKを使用する場合に適している。
- 低電力モード1 (LPM1)
- CPU、MCLKが停止する。
- DCOのループ制御も無効化される。
- SMCLK、ACLKは動作し続ける。
- 低電力モード2 (LPM2)
- CPU、MCLK、SMCLKが停止する。
- DCOも停止するが、DCジェネレータは動作し続ける。
- ACLKは動作し続ける。
- 低電力モード3 (LPM3)
- CPU、MCLK、SMCLK、DCO、DCジェネレータが停止する。
- ACLKのみ動作し続ける。
- リアルタイムクロックやタイマーをACLKでクロッキングする場合に最適。
- 消費電力は約0.8µA程度となる。
- 低電力モード4 (LPM4)
- CPUと全てのクロックが停止する。
- 全てのオシレータ(LFXT1、XT2、DCO)が停止する。
- 消費電力が最も低くなり、約0.1µA程度となる。
- 外部割り込みやリセットでのみ復帰可能。
MSP430F149のクロックシステム
MSP430F149は、Basic Clock Module (BCS)を搭載しており、3種類のクロック信号と3種類のオシレータを提供する。
クロック信号
- MCLK (Master Clock)
- CPUとシステムで使用される主クロック。
- LFXT1CLK、XT2CLK、DCOCLKから選択可能。
- 1、2、4、8の分周が可能。
- SMCLK (Sub-Main Clock)
- 周辺モジュールで使用されるサブシステムクロック。
- DCOCLK、XT2CLKから選択可能。
- 1、2、4、8の分周が可能。
- ACLK (Auxiliary Clock)
- 補助クロック。主に低消費電力動作用。
- LFXT1CLKから供給される。(通常は、32768[Hz])
- 1、2、4、8の分周が可能。
オシレータ
- LFXT1 (Low Frequency / High Frequency Crystal Oscillator 1)
- 低周波モード:32768[Hz]のウォッチクリスタルを接続。
- 高周波モード:450[kHz]〜8[MHz]のクリスタルを接続可能。
- ACLKのソースとして使用される。
- XT2 (High Frequency Crystal Oscillator 2)
- 450kHz〜8MHzのクリスタルまたはレゾネータを接続。
- MCLK、SMCLKのソースとして選択可能。
- 高速動作が必要な場合に使用。
- DCO (Digitally Controlled Oscillator)
- 内蔵デジタル制御発振器。
- 外部部品不要で動作。
- 起動時間が約6µs以下と非常に高速。
- 消費電力と起動時間のバランスが良い。
- キャリブレーションデータによりソフトウェアで周波数調整が可能。
電力モードの設定
状態レジスタ (SR) を使用する場合
状態レジスタ (Status Register, SR) は、マイコンの現在の状態を示すレジスタである。
MSP430マイコン全般では、SRは16ビットのレジスタであり、各ビットが特定の状態を表している。
電力モードに必要な各ビットについて、以下に示す。
- CPUの停止 (4ビット目)
- SRのCPUOFFビットを
1にする。
- SRのCPUOFFビットを
- オシレータの停止 (5ビット目)
- SRのOSCOFFビットを
1にする。
- SRのOSCOFFビットを
- システムクロックジェネレータ (DCOのDCジェネレータ) の停止 (6ビット目)
- SRのSCG0ビットを
1にする。
- SRのSCG0ビットを
- システムクロックジェネレータ (DCO、SMCLK) の停止 (7ビット目)
- SRのSCG1ビットを
1にする。
- SRのSCG1ビットを
__bis_SR_register()関数を使用する場合
__bis_SR_register関数を使用して、状態レジスタ (SR) の該当ビットを1にする。
ただし、割り込みが発生すると、省電力モードから復帰する。
省電力モードを使用する場合は、必要なクロックと周辺モジュールを適切に設定して、不要なものは停止させることが重要である。
また、割り込みを適切に設定して、省電力モードから復帰できるようにする必要がある。
// LPM3に移行
__bis_SR_register(LPM3_bits + GIE); // 割り込み有効化とともにLPM3へ
各電力モードの設定例
// LPM0への移行
__bis_SR_register(LPM0_bits + GIE);
// LPM1への移行
__bis_SR_register(LPM1_bits + GIE);
// LPM2への移行
__bis_SR_register(LPM2_bits + GIE);
// LPM3への移行(リアルタイムクロック動作時に最適)
__bis_SR_register(LPM3_bits + GIE);
// LPM4への移行(最小消費電力)
__bis_SR_register(LPM4_bits + GIE);
電力モードからの復帰
低電力モードからアクティブモードへの復帰は、以下に示す方法で行われる。
- 割り込みによる復帰
- 有効な割り込みが発生すると、自動的にアクティブモードに復帰する。
- 割り込みサービスルーチン (ISR) を実行後、元のコードに戻る。
- ISR内でSRのビットをクリアすることで、復帰後もアクティブモードを維持できる。
- リセットによる復帰
- リセット信号により、マイコンは初期状態に戻る。
- 復帰時間
- DCOを使用する場合、LPM3またはLPM4からの復帰時間は約6µs以下と非常に高速。
- 外部クリスタル(XT2)を使用する場合は、発振安定化のため復帰に時間がかかる場合がある。