FRISKケース入りArduinoへのISPプログラマ機能追加
先日ArduinoクローンをFRISKケースで作ったとき、使ったことの無いICSP端子をノリで付けていました。
その後、どうして使ったことが無いのかを考えていたところ、この端子はターゲットとして付いていること、すなわち別途用意したISPプログラマ(AVRライタ)によってプログラムされるために付いているもので、その機会が私に無かったからだと思い至りました(ISPはIn-System Programmingの略)。
そんなことを考えながら、ジャンパー線をD10〜D13に繋いでATtiny85へ書き込もうとしたところ、エラーの嵐。ATtiny85のデバイスID(シグネチャ)が違う!などと言われてしまいました。

なんでかな、たぶん配線ミスだろうけれどもしかしてコンセプトミス? と思ってソフトハード両面で調べていたところ、ATTinyCoreのprogrammers.txtでavrdudeに-Fを付けて強引に書けば動くことが分かったものの気持ち悪く、さらに調べるとICSP端子の横で隣り合っているMISO(=D12)とD13用LEDのアノードの間にはんだカスが見つかり、これを掻き出したら治りました(お恥ずかしい)。 他にも気になるところがあったので手直ししようとしたところで、ふと、ICSP端子は、ターゲットになる場合とISPプログラマにする場合とで、リセットだけが違うことに気が付きました。つまり、ターゲットになる場合はRSTピンをATmega328Pの1番ピン(=RESET)に接続し、ISPにする場合はATmega328Pの16番ピン(=D10)に接続すれば良いわけです。そしてラッキーなことに、ちょうどその辺にジャンパーピンを立てるスペースがありました(スイッチは入らなかった)。 またミスしそうに思ったので、まずは回路図です。前回漏れていたICSP端子を書き足し、ジャンパーを追加します。さらに、忘れていたAREFのパスコンとAVCCのLCフィルタを書き足しました。但し、まだインダクタを買っていないのでLCフィルタは未実装です。あと、D13とLEDの間を2.2kΩで受けているところへバッファを入れたいのですが、スペースが足りないので今回は見送りました。
ピンと配線を追加して、蓋を削ってラベルを作り直したものがこちらです(ショートしていた所も書いています)。ここでは緑色のジャンパーピンでISPモードにしています:
ISPプログラマは書き込むときに挿し、動かす時は(使うピンが被れば)抜かないといけませんが、いちいちジャンパー線で1本ずつ繋ぐのも面倒だったので、まとめて繋ぐケーブルも作りました:
ブレッドボード側はATtiny85に覆い被さる形です:
ケーブル単体も記念に撮影しておきました。すぐバラけるのでマスキングテープで緩くまとめています:
これでArduino側にArduinoISPのスケッチを書き込めばISPプログラマのできあがりです。既に何日か使っていますが、コンパクトに収まって満足しています。
ただ、元々ついでに付けた端子で周囲にまったく余裕がないので、ふつうのISPケーブルはコネクタが入りそうにありません。安いSOPIC用クリップにも付いてくるようなので、上記のバッファなどを追加するときにでも検討しようと思います。
何かの参考になれば幸いです。
パドラッパ from MacBook Air (2017)
その後、どうして使ったことが無いのかを考えていたところ、この端子はターゲットとして付いていること、すなわち別途用意したISPプログラマ(AVRライタ)によってプログラムされるために付いているもので、その機会が私に無かったからだと思い至りました(ISPはIn-System Programmingの略)。
そんなことを考えながら、ジャンパー線をD10〜D13に繋いでATtiny85へ書き込もうとしたところ、エラーの嵐。ATtiny85のデバイスID(シグネチャ)が違う!などと言われてしまいました。

なんでかな、たぶん配線ミスだろうけれどもしかしてコンセプトミス? と思ってソフトハード両面で調べていたところ、ATTinyCoreのprogrammers.txtでavrdudeに-Fを付けて強引に書けば動くことが分かったものの気持ち悪く、さらに調べるとICSP端子の横で隣り合っているMISO(=D12)とD13用LEDのアノードの間にはんだカスが見つかり、これを掻き出したら治りました(お恥ずかしい)。 他にも気になるところがあったので手直ししようとしたところで、ふと、ICSP端子は、ターゲットになる場合とISPプログラマにする場合とで、リセットだけが違うことに気が付きました。つまり、ターゲットになる場合はRSTピンをATmega328Pの1番ピン(=RESET)に接続し、ISPにする場合はATmega328Pの16番ピン(=D10)に接続すれば良いわけです。そしてラッキーなことに、ちょうどその辺にジャンパーピンを立てるスペースがありました(スイッチは入らなかった)。 またミスしそうに思ったので、まずは回路図です。前回漏れていたICSP端子を書き足し、ジャンパーを追加します。さらに、忘れていたAREFのパスコンとAVCCのLCフィルタを書き足しました。但し、まだインダクタを買っていないのでLCフィルタは未実装です。あと、D13とLEDの間を2.2kΩで受けているところへバッファを入れたいのですが、スペースが足りないので今回は見送りました。





最近のコメント