お世話になっております。いいよぉです。下記、長文で申し訳ございません。
主題:78K0Rの高速内蔵発振停止と消費電流について、少し納得がいかない部分があり、ご教示賜れると助かります。
・通常、高速内蔵発振で動作させており、OFFスイッチでOFFしている時に消費電流を低減したいため、
サブクロックへ切替えてから、高速内蔵発振を停止させています。
停止前の条件は、CPU/周辺ハードウエア・クロックを切替える際は、サブシステム・クロックで動作しているかを確認してから元のクロックを停止
ということで、ステータスでサブクロックになったことを確認してからHIOSTOP = 1にしています。
Q1⇒データシートをみると、この高速内蔵発振停止で数mAから数μAへ落とせるはずですが、実際には半分程度にしか低減せずmAオーダのままです。
何か設定などに見落している部分があれば、ご教示頂けると助かります。
(高速内蔵発振器は停止していても外部で波形をプロットする術はないようで、観測もできず・・・)
Q2⇒データシートにサブシステム・クロック(fSUB)ではIICAは動作しないとの注意点がございます。
よって、切替え時周辺モジュールへのクロックを供給停止するのが定石と認識しておりますが、
CKC:CSSでfsubへ切替えた後、1つのトライとしてPER0でIICAへのクロックを供給停止し、
IICAを動作させない操作をしたところ、逆に消費電流が0.65⇒2.8mAに上がる結果となっています。
PER0(周辺モジュール)の状況は、通常RTC/IICA/TAU0のみ動作させていて、このサブクロック切替え時に
・RTCENは1⇒0にできています。(残念ながら、消費電流低減は数μA程度)
・IICAENは1⇒0 にトライすると、(4行上以外に)スイッチON時1に切替えてもシステムが不安定:EEPROMへのIIC通信が出来なくなりました。
・TAU0ENも1⇒0 にトライすると、スイッチON時1に切替えてもシステムが不安定:ON時に早いクロックになっている様子です。
(ブザーが通常より短い、短押しスイッチ操作が長押しになる等。)
⇒よって、IICAEN/TAU0ENは操作せず停止できていないのが現状となります。
この2bitが1⇒0⇒1と操作されてシステムが不安定になる原因は何かわかりますでしょうか。
こちらも、何か命令抜けなどの見落としがないか、ご教示ください。
下のような流れで記述しています。
【スイッチOFF時】CSS = 0x01; /*クロックを高速内蔵⇒サブクロックへ*/
(ステータスを見て、サブクロックになったら)
HIOSTOP = 1; /*高速内蔵クロックを停止*/
(その後、)
PER0 = 0b00010001; +--+---+------- 0に設定 */ +-------------- RTCEN */ +------------IICAEN 0にできず*/ +--------TAU0EN 0にできず*/ /* [制御クロック] */ /* 0: 制御クロック供給停止 */ /* 1: 制御クロック供給 */
・・・
OFF⇒ON時、RTC/IICA/TAU0は未使用です。スイッチポートのステータスを見てます。
【スイッチON時】HIOSTOP = 0; /*高速内蔵クロックを動作*/NOP();CSS = 0x00; /*クロックをサブクロック⇒高速内蔵へ*/PER0 = 0b10010001; /*RTCにクロック供給*/
EEYOREさん
IICを止めた時にPM60,61は出力になったままでしょうか?もしかするとLOW出力になってプルアップから電流を引いているかもしれません。
それから、チップのプログラム書き込みは、デバッガからダウンロードされています? それともQBPやRFPなどのプログラマーで書き込みされてます?(こっちの方法を推奨)78K0Rはオンチップデバッグが有効になっていても内蔵高速発振器は止まるので問題ないのかもしれませんけれども。
ちなみに、MINICUBE2/E1を接続した状態だとエミュレーターの電力消費とオンチップデバッグ機能の分電流が増えます。