日本語 / [English]
1.はじめに
Arduino Leonardo/Microにちょっとした改造を施せばAVRISP mkII互換機として働かせISP書き込みTPI書き込みができるようになります。以下に,Arduino Leonardo/MicroをAVRISP mkIIクローンにする製作記事を掲載します。
このハックは「Arduino IDE配下のATtiny他の開発環境」で使用することを目的とし
“AVRDUDE ver6.2″で動作確認をしています。
“Atmel Studio”での使用については対象外で全くテストしていません。
2.ちょっとした改造の概要
- Arduino Leonardo/MicroのATmega32U4にAVRISP-mak2クローンのファームウェアを書き込んでAVRライタとして働かせます。
- 通常のAVRの書込みに必要なRESET,SCK,MISO,MOSIの信号はD8とICSPピンから引き出すことができます。
- ATtiny10の書込みに必要なRESET,TPIDATA, TPICLKの信号をD8, D0,D1,TX-LEDから引き出します。
3.用意するもの
- Arduino Leonardo Rev.3 or 互換ボード もしくは Arduino Micro or 互換ボード
- Windowsパソコン (Mac / Linux のバーチャルマシン上で動くWindowsでも可)
- AVRライタまたはArduinoISPスケッチが動いているArduino UNOなど
- dfu-programmer
DFUモードでATmega16U2にプログラムを書き込むツールです。
dfu-programmer-win-0.7.2.zipをダウンロードし展開しまます。 - Atmel USBドライバパッケージ
DFUモードのAVRデバイスやAVRISPmk2用のドライバ詰合せです。
driver-atmel-bundle-7.0.888.exe をダウンロードします。 - DFUローダ詰め合わせ
megaUSB_DFU_Bootloaders_2e.zip
解凍するとmegaUSB_DFU_Bootloaders_2フォルダが生成されます。 - AVRISP mkII クローンファームウエア
AVRISP-MKII_ATmega32u4.zip
解凍するとAVRISP-MKII_ATmega32u4.hexが生成されます。
4.ジャンパー線の接続
- 拡大図赤矢印で示したビアと空き端子を細いUEW線などでハンダ付け接続します。
図はクリックすると拡大表示されます。 - 当該のビアはATmega32U4のPD5とつながっています。
- この空き端子からTPIモード時にTPICLK信号を取り出します。
Arduino Leonardo |
Arduino Micro |
![]() |
![]() |
拡大図赤矢印で示したビアとIOREFの隣の空き端子を結線します。 | 拡大図赤矢印で示したビアとA5の隣の空き端子を結線します。 |
5.DFUローダの書き込みと起動
- まず,Arduino Leonardo/MicroにUSBコネクタをつながない状態で作業を行います。
- AVRライタをArduino Leonardo/Microに接続し,AVRライタソフトを起動します。
AVRライタやソフトは多種多様で個別説明できませんので以下に必須操作の要点を述べます。 - Arduino Leonardoの全メモリを消去します。
- 下のようにヒューズビットを設定します。
lowFuse 0xFF , highFuse 0xD9 ,extendedFuse 0xC3
Fuseの設定を誤るとArduino Leonardo/Microがゴミと化すので要注意 - megaUSB_DFU_Bootloaders_2.zipを展開したフォルダの中の
ATMega32U4-usbdevice_dfu-1_0_0.hexを書き込みます。 - LockBit 0xEFを設定します。
- AVRライタを切り離します。
- ここから,Arduino Leonardo/MicroにUSBコネクタを挿しパソコンと接続します。
- USBデバイスATMEL ATm32U4DFU が現れます。
- ダウンロードしたdriver-atmel-bundle-7.0.888.exeを実行してAtmel USBドライバをインストールします。
6.AVRISP mkII クローンファームウエアを書込み
- dfu-programmer-win-0.7.2.zipを展開生成したフォルダの配下のdfr-programmer.exeがある場所に
AVRISP-MKII_ATmega32u4.hexを移動します。 - コマンドプロンプト(cmd.exe)を起動します。
- コマンドプロンプトのcdコマンドでdfu-programmer-win-0.7.2.zipを展開生成したフォルダに移動します。
- 次のコマンド入力でatmega32u4のflashメモリを消去します。
dfu-programmer atmega32u4 erase –force - 次のコマンド入力でAVRISPmk2クローンのファームウェアを書き込みます。
dfu-programmer atmega32u4 flashAVRISP-MKII_ATmega32u4.hex
7.AVRISP mkIIの認識
- USBケーブルを一旦外して,再度つなぎます。
- 再接続するとUSBデバイスATMEL AVRISP mkII が出現します。Arduio IDEと連携させて用いるには汎用USBドライバlibsubをインストールします。
libusbのインストール方法はOS環境等によってさまざまに適する方法がありますので libusb AVRISP 等のキーワードでWeb検索してご自分のOS環境に適した方法でインストールします。 - 注意:リセットスイッチを押すと,どんなときでもArduino Leonardo/Microは即座にDFUモードに遷移してUSBデバイスATMEL ATm32U4DFUになります。AVRにプログラムやヒューズビット書き込み中にリセットスイッチ押すと思わぬ副作用を生じることがありますので,AVRISPmkIIとして動かしているときはリセットスイッチを押さないのが鉄則です。
【参考】WindowsでAVRISPmk2用にlibusbドライバをインストールする方法
- libusbセットアップツールibusbK-3.0.7.0-setup-chk.exeをダウンロードします。
ドライバを選択インストールするためのツールです。 - 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
8.Arduino Leonardo AVRISP mkII 信号線
TPIモード | ISPモード | ISP / TPI |
![]() |
![]() |
![]() |
9.活用
ATMEL AVRISP mkIIとして正しく動けば次によりArduino IDEから色々なAVRデバイスを利用することができます。
10.元ににもどす方法
- AVRライタをArduino Leonardo/Microに接続します。
- Arduino IDEを起動します。
- Leonardo / Micro のブートローダの書き込みを行います。
以上で初期状態にもどります。
Update 2017.12.10
Update 2017.01.03
Upload 2016.12.30 Kimio Kosaka