Japanese English
Arduino UNO Rev.3搭載のATmega16U2をAVRライタAVRISPmk2互換に変身させてブートローダを書いたり他のAVRにスケッチを書き込みます。
0. はじめに
2008年7月上旬にArduino Diecimilaに搭載されているFTDI-FT232RLがbitbangモードでAVRライタになるという事を知り色々実験して,外付けAVRライタ無しでarduinoのブートローダが書き込めることを確認しました。
同年7月27日に「外付けAVR無しでBootloaderを書き込む」方法を公開し,arduino.ccのフォーラム Burning the Bootloader without AVR-Writer や arduino.ccのplayground Turn your Diecimila into an AVR Writer に掲載したところ,多くのWebサイトやBlogに引用されFTDI-Bitbang法によるブートローダ書き込みは世界中に普及しました。
しかし,Arduino Duemilanoveの後継 Arduino UNO からはFTDIチップがarduinoボードに搭載されなくなりFTDI-Bitbang法は使えなくなりました。
1. Arduino UNO Rev.3
現行のArduino UNO(Rev.3)を入手して基板を見ていたら,usb-serialのATmega16U2の空きピンから配線が引き出されヘッダーピン(JP2)が装着できるようになっています。
ATmega16U2はAVRISPmk2-cloneというAVRライタソフトを走らすことができます。しかも。このライタソフトで使用するI/O線がJP2に引き出されていいます。
さっそく,ATmega16U2にAVRライタソフトを書き込んで動作試験をするとFTDI-Bitbang法よりも簡単にブートローダを書き込んだり,単体のAVRライタとして使う事ができました。
…前置きが長くなりました。以下にArduino UNO Rev.3 ボード上のATmega16U2をAVRライタに変身させ便利に使う方法を紹介します。(2013.12.01)
2. ソフトウェアの準備
- Windows
Windows環境で作業を行います。 - dfu-programmer
DFUモードでATmega16U2にプログラムを書き込むツールです。
dfu-programmer-win-0.7.2.zipをダウンロードし展開しまます。 - Atmel USBドライバパッケージ
DFUモードのAVRデバイスやAVRISPmk2用のドライバ詰合せです。
driver-atmel-bundle-7.0.888.exe をダウンロードします。 - libusbセットアップツール
AVRISPmk2をArduino IDEで利用するときドライバを選択インストールするためのツールです。
libusbK-3.0.7.0-setup-chk.exeをダウンロードします。 - AVRISPmk2-Cloneファームウェア
AVRライタソフトです。AVRISP-MKII_ATmega16u2.zip をダウンロードします。
ダウンロードしたzipを展開するとAVRISP-MKII_ATmega16u2.hexが生成されます。 - usbserial
ATmega16U2をusbserial変換にもどすHEXファイルです。Arduino IDE に付属しています。Arduinoフォルダの奥底に収容されていますので,扱いやすい場所にコピーしておきます。
C:\Program Files (x86)\Arduino\hardware\arduino\avr\firmwares\atmegaxxu2\Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex
こちらからもダウンロードすることができます–>Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.zip
3. ヘッダーピンの追加
ATmega16U2の傍にあるJP2と表示されている空きランドのハンダを吸い取り2×2のヘッダーピンを挿入しハンダ付けします。(図1)
![]() |
4. AVRISPmk2-Cloneにする
- ジャンパの配線
ATmega16U2-ICSPの5番ピン6番ピンをショートします(図2)図2
- 接続
Arduino UNO をUSBポートに接続した後,ATmega16U2-ICSPの5番ピン6番ピンのショートを外すと,ATmega16U2はDFUモードで起動します。 - Atmel USBドライバのインストール
ダウンロードしたdriver-atmel-bundle-7.0.888.exewを実行してAtmel USBドライバをインストールします。 - ファームウェアを書き込む
- dfu-programmer-win-0.7.2.zipを展開生成したフォルダの配下のdfr-programmer.exeがある場所に
AVRISP-MKII_ATmega16u2.hexと
Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex を移動します。 - コマンドプロンプト(cmd.exe)を起動します。
- コマンドプロンプトのcdコマンドでdfu-programmer-win-0.7.2.zipを展開生成したフォルダに移動します。
- 次のコマンド入力でatmega16u2のflashメモリを消去します。
dfu-programmer atmega16u2 erase –force - 次のコマンド入力でatmega16u2にAVRISPmk2クローンのファームウェアを書き込みます。
dfu-programmer atmega16u2 flash AVRISP-MKII_ATmega16u2.hex
- dfu-programmer-win-0.7.2.zipを展開生成したフォルダの配下のdfr-programmer.exeがある場所に
5. ブートローダを書き込む
- 接続
ATmega16U2-ICSPの5番ピン6番ピンをショートしないでUSBポートに接続します。 - AVRISPmk2デバイスドライバの差し替え
AtmelデフォルトのデバイスドライバではAVRISPmk2をArduino IDE から利用することができませんのでデバイスドライバの差し替えを行います。- libusbK-3.0.7.0-setup-chk.exeを起動してUsbk-Dvelopment Kitをインストールします。
Driver Install Creator Wizard 他1件がインストールされます。 - Driver Install Creator Wizardを起動します。
- Libusb0を選択して[Next]をクリックします。図1
- ラジオボタンShow all Devicesを選択するとAVRISPmkIIが表示されるのでAVRISPmkIIを選択し[Next]をクリックします。図2
図1
図2
- [Next]図3,[Next]図4と進んで行きます。
図3
図4
- Finish & Install Driver Now をクリックしてドライバのインストールを行います。図5
図5
- libusbK-3.0.7.0-setup-chk.exeを起動してUsbk-Dvelopment Kitをインストールします。
- Arduino IDE を起動し次のように設定します。
(1)「ツール」→「マイコンボード」→「Arduino UNO」(図6)
(2)「ツール」→「書き込み装置」→「AVRISP mkII」(図7)図6
図7
- 配線
ATmega16U2-ICSPとArduino UNO-ISPをジャンパ線で接続します(図8)図8
- ATmega328Pにブートローダを書き込む
「ツール」→「ブートローダ書き込む」(図9)図9
6. 汎用AVRライタとして使う
- Arduino UNO Rev.3でAVRISP mkII クローンを作る。
- こちらの「Arduino IDEでATtiny他の開発」に掲載した方法で Arduino IDE から各種AVRのプログラム開発が可能となります。
7. usbserialにもどす
ATmega16U8をDFUモードにして接続し,
dfu-programmer atmega16u2 erase –force
dfu-programmer atmega16u2 flash Arduino-COMBINED-dfu-usbserial-atmega16u2-Uno-Rev3.hex
でusbserialのファームウェアを書き込みます。
Update 2017.12.10
Upload 2013.12.01 Kimio kosaka