AVRISP mkIIを使用してAT90USB162にプログラムを書き込む方法として、Atmel Studio 6.2で使用できるAVRISP mkII cloneの製作で示した方法以外に、avrdude環境を利用する方法があります。avrdudeは、AVRマイコンにプログラムを書き込むための、オープンソースのソフトです。これを使えば、各種ライタを使って、AVRマイコンにプログラムを書き込めます。Arduinoの開発環境も、スケッチの書き込みにはavrdudeを使っています。avrdudeはGUIを持っておらず、パソコンのコマンドプロンプトからコマンドによりオプションを打ち込んで使います。

avrdude用ファームウェアをAVRISP mkII cloneへ書き込み
USBTiny-MkII SLIMのページの下の方にある最新版、1.1 version; compiled HEX file with toggle function and full C source code –130303 versionを使います。mkii_slim_130303.rarを展開するとcompiled-130303フォルダ配下にコンパイル済みファームのHEXファイル「AVRISP-MKII_130303_toggle_driver.hex」が適合しますのでこちらを書込みます。書き込みはFlipを使用しました。
AVRISP パソコン上にavrdude環境の構築
avrdudeを入手するにはWinAVRをダウンロードすると、その中にavrdudeが付いてきます(インストールすることでPathも設定されます)。WinAVRは、avr-gcc(AVRマイコン用のCおよびC++のGNU GCCコンパイラ)を中心とした、AVRマイコンの開発ツール群をパッケージにしたものです。

avrdude.exeはavrdudeの実行ファイルで、avrdude.confはavrdudeの設定ファイルです。インストール完了後、コマンドプロンプトから「avrdude」を入力すると、avrdudeのオプション一覧が表示されます。
AVRISP mkII cloneとTarget AVRの接続
Target AVR はAT90USB162とし、AVRISP mkII cloneから出る信号線を次の表に従って接続します。
| AVRISP mkII | Target AVR |
|---|---|
| PB4 (18) (RESET ) | RESET (24) |
| PB2 (17) (MOSI) | MOSI(17) |
| PB3 (16) (MISO) | MISO(16) |
| PB1 (15) (SCK) | SCK(15) |
| GND | GND |
| Vcc | Vcc |
- 今回使用したAVRISP mkIIは、AT90USB162を使用したcloneのため、AT90USB162のビン番号を()内に記述しました。
- Target AVRもAT90USB162で、AVRISP mkIIのRESET 信号は、Target AVRのRESETピン(24)に接続します。
- Target AVRには16MHzのクリスタル発信器を接続します。
AVRISP mkII は実行時にRESET信号をTarget AVRに出力してTarget AVRをリセットしてブートプログラムを起動します。その後、SPIインタフェースによりデータの送受信を行って、AVRISP mkII cloneとTarget AVR間でデータ交換を行います。
avrdudeコマンドによる AT90USB162への書き込み
AVRISP mkII cloneとTarget AVRの接続を行い、avrdude環境を構築したパソコンで、コマンドプロンプトから次のコマンドを入力します。
avrdude -v -p AT90usb162 -c avrispmkII -P usb -F
下記の内容が表示され、接続されているTarget AVR「AT90USB162」の情報が確認できます。
C:\Users\ne>avrdude -v -p AT90usb162 -c avrispmkII -P usb -F
avrdude: Version 5.10, compiled on May 9 2012 at 09:23:48
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "C:\Program Files\Atmel\AVR Tools\AVR Toolchain\bin\avrdude.conf"
Using Port : usb
Using Programmer : avrispmkII
avrdude: usbdev_open(): Found LUFA AVRISP MkII Clone, serno: 0000A00128255
AVR Part : AT90USB162
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PC6
RESET disposition : possible i/o
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 512 4 128 9000 9000 0x00 0x00
flash 65 6 128 0 yes 16384 128 128 4500 4500 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0 0 0x00 0x00
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : STK500V2
Description : Atmel AVR ISP mkII
Programmer Model: AVRISP mkII
Hardware Version: 0
Firmware Version Master : 1.13
Vtarget : 5.0 V
SCK period : 8.00 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e9482
avrdude: safemode: lfuse reads as 5E
avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as F4
avrdude: safemode: lfuse reads as 5E
avrdude: safemode: hfuse reads as D9
avrdude: safemode: efuse reads as F4
avrdude: safemode: Fuses OK
avrdude done. Thank you.
デバイスIDを確認したい場合は、次のコマンドを入力します。
avrdude -c avrispmkII -P usb -p AT90usb162
次に示す内容が表示されます。
C:\Users\ne>avrdude -c avrispmkII -P usb -p AT90usb162 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9482 avrdude: safemode: Fuses OK avrdude done. Thank you.
HEXファイルを書き込むのは、次のコマンドを入力します。書き込むHEXファイル名は、-Uパラメータに指定します。例で指定しているファイル「lat90usb162-bl-usb-1_0_5.hex」は、AT90USB162の工場出荷時時に書き込まれる USB DFU bootloader hex filesです。
avrdude -c avrispmkII -p AT90usb162 -U flash:w:lat90usb162-bl-usb-1_0_5.hex
なお、AVRISP mkII cloneとTarget AVR間の接続が正しく接続されていないと次のメッセージが表示されます。
...
...
SCK period : 8.00 us
avrdude: stk500v2_command(): command failed
avrdude: stk500v2_command(): unknown status 0xc9
avrdude: stk500v2_program_enable(): cannot get connection status
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
avrdude: Expected signature for AT90USB162 is 1E 94 82
avrdude done. Thank you.
