MSP430G2553 - 電力モード

提供:MochiuWiki : SUSE, EC, PCB
2024年6月3日 (月) 07:49時点におけるWiki (トーク | 投稿記録)による版 (ページの作成:「== 概要 == 電力モードは、マイコンの消費電力を管理するための仕組みである。<br> アプリケーションの要件に応じて、適切な電力モードを選択することにより、バッテリー駆動のデバイスにおける動作時間を延ばすことができる。<br> <br> * アクティブモード *: マイコンがフル機能で動作しているモードである。 *: 全てのクロックが動作し、CPUと周辺…」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

概要

電力モードは、マイコンの消費電力を管理するための仕組みである。
アプリケーションの要件に応じて、適切な電力モードを選択することにより、バッテリー駆動のデバイスにおける動作時間を延ばすことができる。

  • アクティブモード
    マイコンがフル機能で動作しているモードである。
    全てのクロックが動作し、CPUと周辺モジュールは通常の速度で動作する。
    消費電力が最も高くなる。

  • 低電力モード
    マイコンの一部の機能を停止または低速化することで、消費電力を抑えるモードである。
    低電力モードにはいくつかのレベルがあり、停止する機能によって分類される。
    一般的に、低電力モードのレベルが上がるほど、消費電力は低くなるが、復帰に時間がかかる場合がある。

  • スリープモード
    CPUを停止して、いくつかの周辺モジュールも停止するモードである。
    割り込みやリセットにより、スリープモードから復帰する。
    低電力モードの一種と考えることができる。

  • ディープスリープモード
    ほとんどの機能を停止して、最小限の消費電力で動作するモードである。
    外部割り込みやリセットにより、ディープスリープモードから復帰する。
    復帰時に、メモリの内容が失われる場合がある。

  • 遷移と復帰
    電力モード間の遷移は、レジスタの設定や特定の命令で行う。
    割り込みやリセットにより、低電力モードからアクティブモードに復帰する。
    復帰時に、停止していた機能を再初期化する必要がある場合がある。


電力モードを効果的に使用するには、アプリケーションの要件を分析、および、必要な機能と応答時間を考慮して、適切なモードを選択する必要がある。
また、割り込みや周辺モジュールの設定を適切に行い、復帰時の処理を正しく実装することが重要である。


MSP430G2553の電力モード

  • アクティブモード (AM)
    CPUと全てのクロックが動作しているモードである。
    消費電力が最も高くなる。

  • 低電力モード0 (LPM0)
    CPUは停止するが、ACLK、SMCLK、MCLK、DCOは動作し続ける。
    CPUの消費電力を抑えることができる。

  • 低電力モード1 (LPM1)
    CPU、DCOが停止する。
    ACLK、SMCLK、MCLKは動作し続ける。

  • 低電力モード2 (LPM2)
    CPU、DCO、MCLKが停止する。
    ACLKとSMCLKは動作し続ける。

  • 低電力モード3 (LPM3)
    CPU、DCO、MCLK、SMCLKが停止する。
    ACLKのみ動作し続ける。

  • 低電力モード4 (LPM4)
    CPUと全てのクロックが停止する。
    消費電力が最も低くなる。



電力モードの設定

状態レジスタ (SR) を使用する場合

  • CPUの停止
    SRのCPUOFFビット (0ビット目) を1にする。

  • DC0の停止
    SRのOSCOFFビット (1ビット目) を1にする。

  • DCOおよびSMCLKの停止
    SRのSCG0ビット (2ビット目) を1にする。

  • DCO、SMCLK、MCLKの停止
    SRのSCG1ビット (3ビット目) を1にする。


__bis_SR_register()関数を使用する場合

__bis_SR_register関数を使用して、状態レジスタ (SR) の該当ビットを1にする。

ただし、割り込みが発生すると、省電力モードから復帰する。
省電力モードを使用する場合は、必要なクロックと周辺モジュールを適切に設定して、不要なものは停止させることが重要である。
また、割り込みを適切に設定して、省電力モードから復帰できるようにする必要がある。

 // LPM3に移行
 __bis_SR_register(LPM3_bits);