久しぶりのアイミーブ用のEVモニターの話題になります。
プログラム上定期的にi-MiEVをモニターしている中で、Arduino nanoのリセット制御を入れてあります。基本アイミーブの常時電源から電力を受けて稼働させているので、リセット制御を入れなければ基本的に24時間365日稼働し続けることになってしまいます。定期的にリフレッシュをかけることで動作不良などを未然に防ぐ目的です。
今までは以下の構文でArduino nanoに対してソフトウェアリセットをかけていました。
asm volatile (” jmp 0″);
アセンブラのジャンプ命令を使用して、プログラム実行位置を一番先頭に移動する手法です。一番簡単にリセットをかけられる方法だったので、今まで別の製品を自作していた際にも使用していました。
これまでも稀に発生していたのですが、モニターとして使用しているOLEDの表示に何かしらの不具合が生じた際にはOLED自体はリセットされない問題を抱えていました。確かにソフトウェア処理上のリセットなのでArduino nanoにぶら下がっているコンポーネントにはリセットがかからないのでしょう。
そこで今回はArduinoのRSTピンを使用してリセットをかけることにしました。Arduino nano上で任意のピンとRSTピンをジャンパーしてあります。任意のピンのpinMode出力端子としてセットし、HIGHからLOWにすることでリセットボタンを押下した際の挙動と同様にリセットをかけるように出来ます。
その結果OLEDにも正しくリセットがかかることが確認できました。
リンク