google-site-verification: google3bd66dd162ef54c7.html

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

 前回の記事でArduino UNOのCPUであるATmega328Pをパワーダウンスリープモードに入れて、外部のピン割り込みで復活させる実験を行いました。この場合、ピン割り込み信号が入力されてCPUが起動するのに4msもかかることが判りました。なおこれは、クロックオシレーターに16MHz水晶を使った場合です。

 ところが、Panda43さんからコメントがあって、"外部クリスタルではなく内部の8MHzのCRオシレーターを使うと即起動する、" との情報を頂きました。内部の8MHzのCRオシレーターは一度使ってみたかったので早速やってみました。

 AVRISP-MkIIを使ってヒューズを書き換えます。(LOWバイトを0xFFから0xE2に変更)

▼パワーダウンスリープから割り込みで復旧する時の波形
内部8MHzCRオシレーターの場合
 波形は上から順に、ピン割込み信号(PD2)、I2Cバスのクロック、動作確認LED(PD13)で、横軸は10ms/Div.です。

 画面の左端がピン割込みが入ったタイミングですが、ほぼ同時にCPUが動き始めています。詳しく見ると割込み信号に対して、約30μsのディレイでCPUが反応していました。なるほど、水晶を使った場合と比べると遅延がものすごく小さくなっています。

 なお、クロック速度を半分にしたのでプログラムの実行時間は倍かかっています。このプログラムではI2CのRTCを読んでI2Cの液晶に表示を行っていますが、このインターフェイスがおかしくならないかちょっと心配だったのですが、特に問題は出ませんでした。

 ちなみに、このCPUはArduino UNOとしてシリアルでプログラムを書いておいて、その後ヒューズを内部8MHzオシレーターに書き換えています。このようにクロックを変更(16MHz→8MHz)すると、UNOとしてブートローダーを通したプログラムのアップロードは出来なくなります。なお対策方法はあるので、うまく整理できたら記事のネタにすることにします。

 ということで奥は深いです。
関連記事

コメントの投稿

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

カレンダー
08 | 2017/09 | 10
- - - - - 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コード