SparkFunのPocket AVR Programmerを買ったのですが、これがまた上手く動きません。

母艦にThinkPad X31、OSはUbuntu9.04で、avrdudeで使おうとしているのですが、毎回、avrdudeの実行中にこのプログラマーがフリーズしてしまいます。(実行中のLED2つが着いたまま。特定の場所ではなくて、ランダムな場所で、、、)

なぜだろう、、、と思って回路図を眺めていたところ、USBのD+/D-ラインに3.6Vのツエナーダイオードがこのプログラマーでは付いていません。どうも、このせいで特定のUSBホストとは上手く通信できないようです。

で、ツエナーダイオードを取り付けられないかボードを眺めていたのですが、あまりにパターンが狭くて半田付けするのは無理そうな様子、、、

なので、とりあえず、ターゲットのAVRボードがたまたま3.3Vの電源だったので、では、そっちから電源を取って、このプログラマーを駆動してしまえばいいかな?と思って、USBの5Vのラインが来ているJP1をパターンカットして、ターゲット側から電源を取るSW1を「Power Target」側にして実行すると、すんなり問題なくavrdudeが実行されました。

でも、この状態では、ターゲットに電源があって、しかも3.3Vでないと動きません。これじゃあ、あまり実用になりません。

たまたまAVR-CDCの回路を見ていたら、USBの5VにLEDを付けて(LEDは2Vほど落ちるので)3V前後にして、AVRのVccにつないでいました。

じゃあ、同じようにしよう、と言うことでパターンカットしたJP1に今度はLEDを付けてみました。

いくつか手持ちのLEDを試したのですが、黄色のLEDはちょうど2.00V落ちた(Vcc: 3.00V)のですが、上手く動きませんでした。しかし小さい赤のLEDが1.875Vほど落ちた(Vcc: 3.125V)のでちょうど良いようです。

DSC00414-1


テスト結果も良好。

ついでに、ゼロプレッシャーのソケット<->AVR用ISP6ピン端子の基盤も作って大変良い感じでAVRがプログラムできるようになりました。

(でも良く見ると、LEDつけるのに失敗して別の場所へジャンパーを飛ばしているのが見えていますが、それは、ご愛嬌、、、)