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

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 mkII cloneへファームウェアの書き込み

AVRISP mkII cloneへファームウェアの書き込みは、デバイスマネージャで確認します。正常にAVRISP mkII cloneにファームウェアが書き込まれると左図のように表示されます。

AVRISP パソコン上にavrdude環境の構築

avrdudeを入手するにはWinAVRをダウンロードすると、その中にavrdudeが付いてきます(インストールすることでPathも設定されます)。WinAVRは、avr-gcc(AVRマイコン用のCおよびC++のGNU GCCコンパイラ)を中心とした、AVRマイコンの開発ツール群をパッケージにしたものです。
avrdudeプログラム

avrdude.exeはavrdudeの実行ファイルで、avrdude.confはavrdudeの設定ファイルです。インストール完了後、コマンドプロンプトから「avrdude」を入力すると、avrdudeのオプション一覧が表示されます。

AVRISP mkII cloneとTarget AVRの接続

Target AVR はAT90USB162とし、AVRISP mkII cloneから出る信号線を次の表に従って接続します。

AVRISP mkIIとTarget AVRへの接続
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.