2011年2月4日金曜日

UnoのAuto reset機能を無効にする

パスコンを用いた解決法

前回、Reset端子と+5Vとの間に110~120Ωの抵抗を入れてauto resetを無効にする方法を紹介したが、Duemilanoveとそのclones(FT232Rを使用しているもの)では目的通りに動作したが、何故かUnoではうまくいかなかった。(Auto resetは無効に出来たが、DTR線を操作するソフトとは通信できなかった。)

ArduinoのForumに、抵抗ではなくコンデンサを使う方法をポストしている人が居たので、試してみたところ、Unoでもうまくauto resetを無効化でき、通信も問題なく行えるようになった。
こんな感じに、RESET pinとGNDの間にコンデンサを挿入する。上述の記事では「転がっていた220uFのコンデンサを使った」と書いてあったが、もっと小さい容量で良くて、上の写真では1uFを使っているが、0.1uFの普通のパスコンでも動作した。

また、RESETとGNDの間ではなく、RESETと+5Vの間に挿入しても、同じ効果だった。

つまりパスコンによって、DTR線側のコンデンサで生成されたreset pulseが吸収され、RESET pinに伝わらなくなってくれるようだ。

抵抗を使う方法より、こちらの方がsmartな解決法の様に思える。抵抗では安定しなかったUnoでも有効ということは、より安定した方法と言えるし。

ただ、clonesのうちJapanino(serial変換にSilicon Labs CP2104を使用)では、コンデンサ法も抵抗法も無効だったり動作が不安定だった。回路が違うのかな?Macでauto resetが効かない問題があるようだし。

0 件のコメント:

コメントを投稿