Arduino Pro Miniでスケッチアップロード時のAuto Resetが最初の1回しか動かない

More than 1 year has passed since last update.

MacOSX上でArduino IDEからスケッチのアップロードをすると、USBケーブル接続直後の1回目のみ成功し、それ以降は失敗してしまう状況に悩まされていました。

どうやらApple純正FTDIドライバの問題だったようで、FTDI社のドライバを別途インストールしたところ解決しました。


環境


  • Mac OS X 10.9.5 (Mavericks)

  • Arduino IDE 1.6.5

  • Arduino Pro Mini互換ボード

  • FTDI FT232RLボード


現象


  • FT232とPro Miniは下記のように接続


    • DTR - DTR

    • RX - TX0

    • TX - RX1

    • VCC - VCC

    • CTS - GND

    • GND - GND



  • Arduino IDEからスケッチのアップロードをすると、USBケーブル接続直後の1回目のみ成功

  • その後2回目のアップロードをすると下記エラーが出て書き込みに失敗する

avrdude: stk500_recv(): programmer is not responding

avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
(以下略)


調査

テスターを当ててみたところ、初回書き込み時にDTRがHIGHからLOWに落ちてATmega328Pがリセットされるものの、その後ずっとLOWのままになっているようで、2回目以降の書き込みではリセットがかからないようでした。

また、DTRの代わりにRSTを接続して試してみたものの、やはり同じ状況でした。

同じ構成のままWindows7環境で確認してみたところ、こちらは何度でもアップロードできました。

つまり、MacOSX同梱のFTDIドライバが怪しいのでは…?


FTDI社のドライバをインストール

というわけでFTDI社純正ドライバをインストールしてみました。

FTDI社のVCPドライバ ダウンロードページから「Mac OS X 10.9 and above (64 bit)」をダウンロードします。Mavericks(10.9)以降ということなので、おそらくYosemiteにも対応していると思います。

ドライバをインストールして再起動すると、FTDI社のドライバが有効になります。FT232RLモジュールをMacにつないだ状態で下記コマンドを打つと、2つのドライバの情報が表示されます。

$ kextstat | grep -i ftdi

131 0 0xffffff7f80f08000 0x7000 0x7000 com.apple.driver.AppleUSBFTDI (1.0.1b3) <116 36 5 4 3>
132 0 0xffffff7f821a6000 0x7000 0x7000 com.FTDI.driver.FTDIUSBSerialDriver (2.3) <116 36 5 4 3 1>

この状況ではFTDI社ドライバが有効になるようで、無事Auto Resetが何度でもできるようになりました。

他の方の記事を見ると、以前は明示的にAppleのドライバを無効にする必要があったようですが、現在では特に何もせずにうまく動くようです。