省電力制御


【省電力制御】

PIC18Fxxxxシリーズは、「nanoWatt Technology」ということで、
省電力制御を大きな特徴としています。
そして低消費電力を実現
するために、クロックの供給方法を中心にして、多くの工夫が
なされています。

【省電力モードの種類】

省電力モードとして、クロックの供給方法に下表のようなモードが
用意されています。大別すると、
SLEEPIDLERUNの3つの
モードにわかれ、さらに、それぞれがクロック供給方法により分かれて、
合計7つの省電力モードが用意されています。


モード OSCCON
レジスタ設定
クロック供給範囲 消費電流例
2V 1MHzのとき
状態説明
IDLEN SCS1:0 CPU 周辺
SLEEP SLEEP 0 00 なし なし 0.1μA 全クロックが停止しPICが停止している状態
RUN PRI_RUN 0 00 有り 有り 150μA 主クロックで高速動作
SEC_RUN 0 01 有り 有り 14μA 副クロック(タイマ1のクロック)で低速動作
RC_RUN 0 1x 有り 有り 110μA 内部クロックで動作 (31kHz8MHz)
IDLE PRI_IDLE 1 00 なし 有り 37μA 主クロックで周辺のみ動作
SEC_IDLE 1 01 なし 有り 5.8μA 副クロックで周辺のみ動作
RC_IDLE 1 1x なし 有り 52μA 内部クロックで周辺のみ動作


これらの各省電力モードを、実行環境の条件によって最適な動作モードに
切替えることで、消費電力を少なくすることができるようになっています。

この低消費電力化は、表から判るようにクロックの供給方法と密接に関係して
いて、クロックの周波数を下げることと、供給範囲を制限することで、消費電力
を削減しています。
 さらに、クロックの発振周波数そのものも切替えによって変えられますので、
これらを組み合わせて最適な消費電力とするようにします。


【省電力モードの切替え方】

省電力モードのいずれかに切替えるには、下記のような手順で行います。
SLEEP命令がこれまでの機能より強化されて、省電力モード切替え制御命令
になっています。


(1) OSCCON
レジスタにモードを設定する。
 ・IDLENビットを1にすれば、CPUへのクロックの制御が出来ます。
 ・SCS1,SCS0ビットで、クロックの種別指定が出来ます。
このSCSビットを設定しただけではクロックの実際の切替えは実行されません。

(2) SLEEP
命令を実行する。
 SLEEP命令実行後、8から9クロック後に新しいクロックに切替わります。
この
SLEEP命令は、従来はSLEEP状態にするだけでしたが、PIC18Fxxxx
シリーズでは、上記のように設定された各省電力モードへの切替え制御指示
となります。

ここで
OSCCONレジスタの構成は、下図のようになっています。



【クロック切替え制御の例】

実際に低消費電力の制御のために、クロックの周波数を切替えるように
した例題です。
この例題では、4個のスイッチを使い、下表のように
制御するようになっています。
これで発光ダイオードの点滅周期が変わりますので、クロック周波数が
切替ったことがわかります。

スイッチ 入力イベント 制御内容 LED点滅間隔
なし なし 40MHz外部クロック 0.1秒
SW1 INT0割込み 8MHz内部クロック 0.5秒
SW2 INT1割込み 4MHz内部クロック 1秒
SW3 INT2割込み 1MHz内部クロック 4秒
SW4 RB状態変化 一旦スリープモードに入り約4秒後にウォッチドッグタイマタイムアップでウェイクアップし40MHzクロックに戻る 0.1秒

 この例題のプログラムリストが、下記リストとなります。
メインルーチンでは、ループタイマを使って、
0.1秒間隔でポートA
発光ダイオードの点滅を制御しているだけです。
ポート
Bのスイッチ押下の割込みが入ると、それぞれのスイッチに対応した
クロックへの切替え制御を行います。
とくにSW4の場合は、もとの40MHzのシステムクロックに戻すため、
一旦スリープモードにしてから、ウォッチドッグタイマのタイムアップで
戻しています。
ウォッチドッグタイマの起動も
PIC18Fではプログラムで可能になったのを
利用しています。
ただし、コンフィギュレーションの
CONFIG2Hで、ウォッチドッグタイマの
プリスケーラ値を1:
1024に設定しています。













  トップページへ