78K0Rの高速内蔵発振停止と消費電流について

お世話になっております。いいよぉです。下記、長文で申し訳ございません。

 

主題: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にクロック供給*/

Parents
  • チョコです。
    78K0R/Lxは使ったことはありませんが,コメントさせていただきます。
    >IICAを動作させない操作をしたところ、逆に消費電流が0.65⇒2.8mAに上がる結果となっています。
    これは,KiriNさんがコメントされているようにP6が出力モードになっているために,3.3Vが2本の
    3.3kΩでプルダウンされることで,約2mA増加するものです。IICAを停止する時には,最初に兼用に
    なっているP0とP61をPM6レジスタで入力に変更してからIICAを停止させてください。これは,STOP
    モードとは無関係にこの手順が必要です。そうしないと,SDAとSCLが同時に立下り,異常な信号の
    変化となり,外部のEEPROMが,変な状態(スタート・コンディションと解釈)となる危険性があり
    ます(その結果,通信ができなくなる)。

    また,クロックを切り替えてから,PER0でTAU等へのクロック供給を停止されているようですが,
    ここも気になります。まず,TAU等の動作を停止させ,その後,PER0でクロックの供給を停止し,
    最後にCPUのクロックを切り替ってから高速内蔵発振器を停止させるべきでしょう。

    逆に再開させる場合には,CPUのクロックを高速内蔵発振器に切り替えてから,PER0でのクロックの
    供給から機能の再設定の順にやることで,使えるようになるはずです。

    >(高速内蔵発振器は停止していても外部で波形をプロットする術はないようで、観測もできず・・・)
    クロック出力機能が使えるかと思います。クロック出力機能はCPUの動作クロックとは無関係に,
    fMAINを分周したものが出力されます(この機能を使うことで動作電流は増加することになります)。

    それと,LCDを駆動する電源がどうなっているかも気になります。外部抵抗分割なら,そこの電流の
    対策はされていますか。

    また,RTCの動作電流ははせいぜい1mA程度なので,停止する必要はないはずです。
  • チョコさん

    >クロック出力機能が使えるかと思います。クロック出力機能はCPUの動作クロックとは無関係に,
    >fMAINを分周したものが出力されます(この機能を使うことで動作電流は増加することになります)。
    過去にモニタしていたようで、CKS1 = 0x80; がコメントして残してありました。戻してP31ポートで観測致しました。
    通常のON時で、1MHzの方形波が出ており、スイッチOFF時に0V一定になりましたので、クロックを切替え⇒メイン停止はできていると考えております。(画像が貼れず申し訳ございません。)

    ちなみに、消費電流は約50μA増加しました。

    次にこの機能で不具合となっているTAUを停止し、再開したとき何MHzになっているか波形を観測したいと存じます。
    何かつかめると思います。
  • 皆様、暫く調査して、本件の顛末です。

    ①IICをスイッチON時に逆の順番で再開させても、やはりEEPROMに保存できない件
    ⇒IIC内部で使用していたタイマ0が起動されていなく、無限ループになっていました。
    ⇒これを起動しましたところ、無事に保存できるようになりました。
    ⇒他注意点としては、IICを起動すると、通信状態になるので、ストップコンディションを発行しました。

    ②TAUを停止し、スイッチON後、再開時に逆の順で戻していった件
    ⇒クロック出力機能で高速内蔵発振をモニタ、再開したとき何MHzになっているか波形を観測
    ⇒同じく1MHzの波形が観測されました、ということでその他の原因を当たっていきました。
    ⇒ブザーが通常より短い、短押しスイッチ操作が長押しになる現象考察
    ⇒タイマ設定がリセットされていて、いわば0msタイマになっていました。これにより、ブザーが短い、スイッチ長短のタイミングが最小になっていて、現象発生していました。
    ⇒このタイマ設定を全て戻してみると、復活致しました。

    ③気づき
    ・解決方法としては、ステップ送りして設定値をモニタしていて全て気づきました。周辺ハードウェアにクロック供給停止時に設定値はリセットされないだろうと思い込みが強く、抜け出せませんでした。
    ユーザーズマニュアルをよく読むこと、モニタして確認結果を得ながら進めることが今回の教訓です。
    ・上記が解決して周辺モジュールを停止しても、消費電流は下がりませんでした。その他に見落しがないか、また別の視点で考察して進めたいと存じます。
    その時は、またご協力頂けますと幸甚です。

    一旦終了とします、ありがとうございました。
  • チョコです。
    EEYOREさん,ある程度進められてよかったですね。
    前回,「逆に再開させる場合には,CPUのクロックを高速内蔵発振器に切り替えてから,PER0でのクロックの
    供給から機能の再設定の順にやることで,使えるようになるはずです。」と,初期設定を「機能の再設定」と表現したつもりだったんですが。。。。
    あとは,オプションバイトでオンチップ・デバッグを禁止に設定してみてください。
  • チョコさん

    お蔭様でいろいろとありがとうございました。
    初期設定の件は、よく噛み砕けていませんでした、申し訳ございませんでした。

    ・残りのアドバイスですが、オプション・バイトでオンチップデバッグを動作禁止にしてみました。
    hexファイルの000C3Hが84(許可)⇒04(禁止)になったのを確認(デバッガにダウンロードできなかった事も確認)。
    しかし、消費電流は変わりませんでした。
    一旦ここまでで今後を検討したいと存じます。
  • 皆様

    消費電流の件完全解決致しましたので、少しまぬけですが、結論を書いておこうと思います。
    ・消費電流の測定場所が2箇所ありました。よくあるマルチ電源で電池部とACアダプタ部です。
    ・ACアダプタ部に少し仕掛けがありまして、そこで測定すると電池部より約0.6mA多く流れていました。
    ・電池部ではスタンバイ時に、70-80μAまで落ちていることを確認できました。
    高機能の割りに、すばらしい低消費電流のMCUですね。

    MCUと全く無関係の電源回路部での消費でした。(必要機能で10kΩでバイパスしてました)
    皆様にはいろいろとお手数お欠けし申し訳ございませんでした。<(_ _)><(_ _)><(_ _)>
    以上、今後も懲りずにお付き合い宜しくお願い致します。<(_ _)>
Reply
  • 皆様

    消費電流の件完全解決致しましたので、少しまぬけですが、結論を書いておこうと思います。
    ・消費電流の測定場所が2箇所ありました。よくあるマルチ電源で電池部とACアダプタ部です。
    ・ACアダプタ部に少し仕掛けがありまして、そこで測定すると電池部より約0.6mA多く流れていました。
    ・電池部ではスタンバイ時に、70-80μAまで落ちていることを確認できました。
    高機能の割りに、すばらしい低消費電流のMCUですね。

    MCUと全く無関係の電源回路部での消費でした。(必要機能で10kΩでバイパスしてました)
    皆様にはいろいろとお手数お欠けし申し訳ございませんでした。<(_ _)><(_ _)><(_ _)>
    以上、今後も懲りずにお付き合い宜しくお願い致します。<(_ _)>
Children
No Data