google-site-verification: google3bd66dd162ef54c7.html

Arduinoがパワーダウンスリープモードから復帰する時の挙動

 前の記事でArduinoをパワーダウンモードでスリープさせ、Pin割込みで復旧させる実験を行いました。コマンドでは、set_sleep_mode(SLEEP_MODE_PWR_DOWN);です。

 このモードでは、CPUのクロックオシレーターの発振を止めてしまうので消費電流をものすごく小さくすることが出来ます。でもいいことばかりではありません。オシレーターを止めてしまうと、再開させるのに余分な時間が必要になります。

 せっかく実験台があるので、このあたりの挙動をオシロで見てみました。

▼パワーダウンスリープモードの各部波形
割込み発生時の波形
 波形は上から順に、ピン割込み信号(PD2)、オシレーター端子(X2)、動作確認LED(PD13)で、横軸は5ms/Div.です。

 一番上のピン割り込みのネガエッジでオシロのトリガをかけているので、画面の左端が割込み信号が入ったタイミングです。割込み信号が入ってもクロックのオシレーターはすぐには立ち上がらず、振幅が安定するまで4msくらいいかかっています。なお、このオシレーターは16MHzの水晶です。また、オシロのプローブの入力容量が15pFくらいあるので、本当の波形とは少し違っている可能性があります。

 一番下の波形がHighになっている範囲でプログラムが動いていますが、割込み信号が入ってから約4ms後にプログラムが動き始めています。これってマイコンにとっては結構長い時間です。この時間が問題になる場合は、このスリープモードは使わない方が良さそうです。

 ちなみに、クロックオシレーターを止めないスタンバイなどのモードでスリープさせると、15μsくらいの時間で高速応答するようになりました。但し、その代償としてスリープ中の消費電流が500μAくらいまで増えてしまうので、痛し痒しです。
関連記事

コメントの投稿

管理者にだけ表示を許可する

No title

Panda43です。
水晶使用時のスリープは、起動するまで長いですね!
内臓8MHzを使用して付加遅延時間をなくせば即!!
起動します。
(現在使用しているものはヒューズ設定でこれを指定しています)
これだと、起動して、AD変換して、設定値でなければまた
スリープにする動作を定期的に繰り返しても消費電力は
ほとんど気になりませんよ。

Panda43さん、おはようございます

情報ありがとうございます。

データーシート見てみると、クロックのソースに水晶使うと立ち上がりに時間がかかるんですね。
RTCがあればCPUクロックの精度は悪くても構わないので、内蔵8MHzを使う手もありますね。
カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード