USBasp

ICSP 端子でブートローダーを書き込むのに使います。


購入

Amazon で買えます。コピー品ですが、250円で購入できました。


Arduino で使うのなら 10ピン <-> 6ピン変換も一緒に買っておくと便利です (購入時価格: ¥105)。



各部詳細

JP2 と JP3 にはジャンパーピンをハンダしておきました (ジャンパーピンは付属しません)。また、JP1 については 3.3V / 5V 以外 (オープン) に設定する事がないので、スライドスイッチに付け替えました。

JP2 は USBasp 自体のファームウェアを書き換える時に使います (Self-Programming)。 JP3 は ISP のスピードをソフトウェアでコントロールする時に使うもの (Slow Clock) です。

USBasp のピンアウトはこのようになっています。この製品は4番ピンと6番ピンに TXD / RXD が結線されています (USBasp を名乗っている製品すべてが結線されているわけではありません)。

10ピン <-> 6ピン変換コネクタのピンアウト (ICSP メス) はこのようになっています。

ちなみに、Arduino UNO を書込装置にした場合 (Arduino as ISP) のピンアウトは以下の通りです (5V の場合)。

色は 共立エレショップの AVRWRT 用ブレッドボード ISP ケーブルに準拠しています。

See Also:


セットアップ

普通に USB に挿すと、ドライバがなくてデバイスマネージャに <!> マークが付くと思います。

かと言って、本家サイトのドライバを入れようとすると、署名がないので Windows 8 以降の Windows では素直にドライバをインストールできません

ドライバの問題は Zadig を使えば回避できます。Zadig は汎用 USB ドライバの派生ドライバを、汎用 USB ドライバで置き換えるものです。

コンボボックスで USBasp を選択し、ドライバを WinUSB にして [Install Driver] ボタンを押すと、USBasp のドライバとして WinUSB が使われるようになります。

デバイスマネージャで <!> マークが消えれば OK です。Arduino IDE のバージョンによってはドライバを libUSB-win32 にしないといけないかもしれません。

いずれか動作する方を使ってください。

See Also:


使い方

ブートローダーの書き込み

  1. USBasp と 10ピン <-> 6ピン変換コネクタ を付属の 10 ピンリボンケーブルで接続します。
  2. 6ピンコネクタを ICSP 端子を持つ Arduino へ接続します (MISO が1番ピンです)。

    Pro Micro 等のように ICSP 端子がないものは、ジャンパーワイヤー等を使って結線する必要があります。

    ICSP 端子がない、または ICSP 端子をハンダ付けしたくないのであれば、スルーホール用テストワイヤを使うといいでしょう。
  3. USBasp を PC へ接続します。
  4. Arduino IDE を起動します。
  5. [ツール | ボード] で書き込みたいボードのブートローダーを指定します。
  6. [ツール | 書き込み装置] で USBasp を指定します。
  7. [ツール | ブートローダーを書き込み] でブートローダーを書き込みます。

これでブートローダーを書き込めます。イチイチ Arduino UNO を書込装置 (Arduino as ISP) にしなくていいので便利です。

avrdude が "cannot set sck period. please check for usbasp firmware update" というワーニングを出していますが動作に影響はありません。どうしても気になるのでしたら USBasp のファームウェアを更新してください。


スケッチの書き込み

  1. USBasp と 10ピン <-> 6ピン変換コネクタ を付属の 10 ピンリボンケーブルで接続します。
  2. 6ピンコネクタを ICSP 端子を持つ Arduino へ接続します。
  3. USBasp を PC へ接続します。
  4. Arduino IDE を起動します。
  5. (任意のスケッチを開きます)
  6. [ツール | ボード] で書き込みたいボードを指定します。
  7. [ツール | 書き込み装置] で USBasp を指定します。
  8. [スケッチ | 書き込み装置を使って書き込む] でスケッチを転送します。

See Also:


USBasp のファームウェアを更新する

ここでは Arduino Uno を使ったファームウェア更新方法をご紹介します。

  1. Arduino UNO を PC と USB 接続し、ボードを Arduino UNO、ポートを認識されている COM 番号に合わせます。
  2. Arduino UNO を書込装置にするために [ファイル | スケッチの例 | ArduinoISP] を開きます。
  3. Arduino UNO にスケッチを書き込みます。
  4. C:\USBASP フォルダを作ります。
  5. ファームウェアを DL します (usbasp.2011-05-28.tar.gz)。
  6. tar.gz を解凍し、usbasp.atmega8.2011-05-28.hex を C:\USBASP へコピーします。
  7. C:\USBASP に以下のファイル (firmupdate.cmd) を作成します。
    @echo off
    SET AVRDUDE_PATH=C:\Tools\Arduino\arduino-1.6.9\hardware\tools\avr
    SET COM_PORT=COM4
    
    "%AVRDUDE_PATH%\bin\avrdude.exe" -C "%AVRDUDE_PATH%\etc\avrdude.conf" -P %COM_PORT% -b19200 -c arduino -p atmega8 -u -U hfuse:w:0xc9:m -U lfuse:w:0xef:m
    IF %ERRORLEVEL%==0 (
      "%AVRDUDE_PATH%\bin\avrdude.exe" -C "%AVRDUDE_PATH%\etc\avrdude.conf" -P %COM_PORT% -b19200 -c arduino -p atmega8 -U flash:w:usbasp.atmega8.2011-05-28.hex
    )
    pause
    
    赤字の所は環境に応じて書き換えてください。
  8. USBasp の JP2 をショートします。JP1 は 5V 側JP3 はオープンにしておきます。
  9. Arduino Uno と USBasp を結線します。
    UNO USBasp
    GND GND
    13 SCK
    12 MISO
    11 MOSI
    10 RST
    5V VCC
    各部詳細の通りに同じ色を結線するといいです。
  10. C:\USBASP の firmupdate.cmd を実行します。
    C:\USBASP>firmupdate.cmd
    
    avrdude.exe: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.01s
    
    avrdude.exe: Device signature = 0x1e9307
    avrdude.exe: reading input file "0xC9"
    avrdude.exe: writing hfuse (1 bytes):
    
    Writing | ################################################## | 100% 0.03s
    
    avrdude.exe: 1 bytes of hfuse written
    avrdude.exe: verifying hfuse memory against 0xC9:
    avrdude.exe: load data hfuse data from input file 0xC9:
    avrdude.exe: input file 0xC9 contains 1 bytes
    avrdude.exe: reading on-chip hfuse data:
    
    Reading | ################################################## | 100% 0.02s
    
    avrdude.exe: verifying ...
    avrdude.exe: 1 bytes of hfuse verified
    avrdude.exe: reading input file "0xef"
    avrdude.exe: writing lfuse (1 bytes):
    
    Writing | ################################################## | 100% 0.03s
    
    avrdude.exe: 1 bytes of lfuse written
    avrdude.exe: verifying lfuse memory against 0xef:
    avrdude.exe: load data lfuse data from input file 0xef:
    avrdude.exe: input file 0xef contains 1 bytes
    avrdude.exe: reading on-chip lfuse data:
    
    Reading | ################################################## | 100% 0.01s
    
    avrdude.exe: verifying ...
    avrdude.exe: 1 bytes of lfuse verified
    
    avrdude.exe done.  Thank you.
    
    avrdude.exe: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.01s
    
    avrdude.exe: Device signature = 0x1e9307
    avrdude.exe: NOTE: "flash" memory has been specified, an erase cycle will be performed
                 To disable this feature, specify the -D option.
    avrdude.exe: erasing chip
    avrdude.exe: reading input file "usbasp.atmega8.2011-05-28.hex"
    avrdude.exe: input file usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
    avrdude.exe: writing flash (4700 bytes):
    
    Writing | ################################################## | 100% 7.12s
    
    avrdude.exe: 4700 bytes of flash written
    avrdude.exe: verifying flash memory against usbasp.atmega8.2011-05-28.hex:
    avrdude.exe: load data flash data from input file usbasp.atmega8.2011-05-28.hex:
    avrdude.exe: input file usbasp.atmega8.2011-05-28.hex auto detected as Intel Hex
    avrdude.exe: input file usbasp.atmega8.2011-05-28.hex contains 4700 bytes
    avrdude.exe: reading on-chip flash data:
    
    Reading | ################################################## | 100% 3.76s
    
    avrdude.exe: verifying ...
    avrdude.exe: 4700 bytes of flash verified
    
    avrdude.exe: safemode: Fuses OK (H:FF, E:C9, L:EF)
    
    avrdude.exe done.  Thank you.
    
    続行するには何かキーを押してください . . .
    上のようなログが出ていれば OK です。
    C:\USBASP>firmupdate.cmd
    
    avrdude.exe: AVR device initialized and ready to accept instructions
    
    Reading | ################################################## | 100% 0.01s
    
    avrdude.exe: Device signature = 0x000000 (retrying)
    
    Reading | ################################################## | 100% 0.01s
    
    avrdude.exe: Device signature = 0x000000 (retrying)
    
    Reading | ################################################## | 100% 0.01s
    
    avrdude.exe: Device signature = 0x000000
    avrdude.exe: Yikes!  Invalid device signature.
                 Double check connections and try again, or use -F to override
                 this check.
    
    
    avrdude.exe done.  Thank you.
    
    続行するには何かキーを押してください . . .
    このようなログが出ているのなら、接続が間違っているか、JP2 がショートになっていません。
  11. USBasp の JP2 をオープンにします
  12. Arduino Uno と USBasp の結線を解除します。

これで avrdude がワーニングを吐かなくなります。

See Also:


ここにある情報が役に立って、「調べる手間が省けたからオマイに飯でもおごってやるよ」 というハートウォーミングな方がいらっしゃいましたら、下のボタンからどうぞ。

メニュー: