この文書はArduinoチュートリアルUsing an Arduino as an AVR ISP (In-System Programmer)の日本語訳です。
このチュートリアルではArduinoをAVR ISP(in-system programmer)として使う方法を説明します。AVR ISPとしてArduinoを使うことにより、(新しい)AVR マイコン(Arduino で使われている ATmega168 や ATmega328P)にブートローダを書き込むことができます。ここで紹介するコードは Randall Bohn 氏の mega-isp ファームウェアに基づいています。
ArduinoでAVRマイコンにブートローダを書き込むには以下の手順に従います。
1. Exampleに含まれているArduinoISP スケッチを Arduino にアップロードします。このArduinoがプログラマとなります。
2. Arduino と書き込む AVR マイコン(ターゲットと呼びます)の載ったボードを下の図のように接続します。
3. Arduino IDE の Tools > Board メニューから書き込みたいボード(ターゲット)に対応するボードを選びます (プログラマとして使うArduinoのボードではありません)。ターゲットのArduinoに対応する名前については environment page を確認します。
4. Arduino IDE の Burn Bootloader > Arduino as AVRISP をクリックします。
下側のArduino が AVR ライタとなり、上側の Arduino の ATmega マイコンに書き込む例。Arduino NG 以前のバージョンではリセットピンがないため、上記の配線ができないことに注意。
NG以前のボードには、リセット端子がないので、Atmegaマイコンの1ピンへ直接つなぐ。
もっと詳しい説明がチュートリアル Arduino to Breadboard にあります。
|
|
ATmegaマイコンの内蔵発振子を使う場合の接続例。水晶発振子を使うように書き込んだマイコンの場合は、この配線では書き込めないことに注意する。 |
Arduinoと同様に水晶発振子とセラミックコンデンサ(18から22pF)をつなぐ例。 |
このチュートリアルを利用するには Arduino IDE 0018 以降が必要です。0017以前を利用している場合は新しいバージョンをダウンロードしてインストールして下さい。
また Windows 7 上の Arduino IDEと Arduino Diecimila をプログラマとして使おうとしたときに、うまくターゲットに書き込めないトラブルがありました。原因は、Arduino IDE (正確には Arduino IDE から呼び出された avrdude.exe) が書き込みのためにプログラマのArduinoと通信しようとしたときに、Arduino Diecimila のマイコンにリセットがかかり、Arduino ISP とではなく、プログラマ上のブートローダと通信してしまうためです。
対策として、プログラマから AVR マイコンを外し、リセットピンである1番ピン(上記の図では右上側になる、ピンの近くに小さい○の凹みがある)を軽く曲げて、Arduino の IC ソケットにささらないようにしました。そっと曲げないと足が折れてしまうので注意します。書き込みが終わったら、また1番ピンを元のように戻します(戻さないと普通の Arduino として使えない)。曲げ戻しを繰り返すと足が折れてしまいますし、あまりいい対策ではありませんが、参考まで。