2010年4月22日木曜日

続 -Arduinoのリセット~その2

Arduinoのリセットには、まだ続きがある。

私は USB給電、常時 IDE使用という環境で実験していたので見落していたが、回路を良く見ると「周辺デバイスにリセットを掛ける人」が居ない。
調べてみると、Ethernet shieldの起動不良ということで、hamayanさんのレポートに情報があった。

FT232 からのリセットというのはブートローダを起動するための機能で、単に外部電源供給した場合には AVR内蔵のリセット回路で起動する。その時リセット端子から外部に向かってリセット信号を出すことはないため、これでは周辺デバイスが正常起動する可能性は低くなってしまう。

実際の起動の様子は、こんな感じ。まずは Arduino単体で外部から 8V電源供給。
期待されるようなリセット信号にはなっていない。電圧上昇時にごく僅か DTRがローになっているが、これは FT232内部が初期化される前に出ているものと考えられる。さらに電圧安定後約 6ms後に、DTRの電圧がわずかに上昇しているが、これも FT232内部動作の影響と考えられる。

続いて Ethernet shieldを組み合わせた場合。

Ethernet shield上の 3.3Vも観測しているが、特に変化があるわけではない。これでは周辺デバイスの起動は運まかせ、ということになってしまう。

続いて IDEを起動しないで、USB給電した場合。
外部電源のと立ち上がり特性の違い程度の差しか見られない。しかし、もうちょっと長い時間軸で見るとこうなる。
これは FT232のドライバの動作が影響しているのだろう。接続から 6秒ほどの間に 8回のリセットパルスが出てる。気持ち悪いが、これならば動作する。

手持ちのリセットICで適当なものが見付からなかったので十分とは言えないが、リセットはこんな感じで掛かって欲しい。
本来は電圧安定後に解除されるタイマー内蔵型が望ましいが、この状態でも無いよりはかなりマシだ。

もう一つ気付いてしまったのだが、Ethernet shieldはシールド上で作っている 3.3Vを、Arduinoに接続するコネクタに出力している。しかし Arduino Duemilanoveからも FT232内部で作っている 3.3Vを出力している。つまり双方の電源出力が衝突していることになる。端的に言えば、これはダメだ。

他のシールドをまだ良く知らないため Ethernet shieldばかり引き合いに出してしまうが、リセット、3.3Vの件に加え SDカードスロットの件もあり、落とし穴というかクセが多い。私のように回路追い掛けてばかりいる変な人は置いといて、正しくフィジカルコンピューティングしている人達には、普通に使える、落とし穴を避ける苦労の必要がない物が必要なのではないだろうかと思う。

改良版、作ってみようかな。

0 件のコメント:

コメントを投稿