現: 2024-12-24 (火) 13:45:51 yuji ソース
Deleted an attach file: usbasp.png at 2025-01-15 (水) 13:46:58 at 2025-01-15 (水) 13:47:36 at 2025-01-17 (金) 10:01:12, Deleted an attach file: usbasp_sch.png at 2025-01-17 (金) 10:02:02 at 2025-01-17 (金) 10:05:59 at 2025-01-23 (木) 12:25:41, Deleted an attach file: usbasp_org.png at 2025-01-24 (金) 17:30:02
Line 1: Line 1:
 +* USBasp [#qd86266c]
 +&ref(usbasp_org.png,,around);[[USBasp>https://www.fischl.de/usbasp/]]は[[Thomas Fischl>https://www.fischl.de/]]氏が作られたATMEL AVRマイクロコントローラー用のUSB接続AVR ISP(in-circuit programmer) で,部品点数も少ないので自作する人も多い。~
 +''自作する場合はUSBaspにfirmwareを書き込むため,別に何らかのAVR Writerが必要になる'' &worried;
 +
 +多くのUSBasp互換品が[[Amazon>https://amzn.to/408fpUf]]でも安価に販売されていて,自作するよりも安いので購入(300円ぐらいだった)してみた。~
 +#ref(usbasp.png,,15%)
 +
 +USBaspはCPUに[[ATmega8>https://www.microchip.com/en-us/product/atmega8]]を使って,USBコントローラICを使わずに[[V-USB:https://www.obdev.at/products/vusb/index.html]]((V-USBは,AVRマイクロコントローラーの任意の2つのIOポートを使ってUSBのD+/D-の信号をエミュレートして,擬似的にAVRマイコンをLow-speed USBデバイスにするというもの。))を使ってUSB接続できるようにしている。~
 +
 +#clear
 +
 +** 対応デバイス [#qc05fe71]
 +- 8051シリーズ~
 +AT89S51,AT89S52,AT89S53,AT89S8253,AT89S2051,AT89S8252,AT89S4051~
 +- AVRシリーズ~
 +AT90can128,AT90can32,AT90can64,AT90pwm2,AT90pwm3,AT90s1200,AT90s2313,~
 +AT90s2323,AT90s2343,AT90s4414,AT90S8515,AT90S8535,AT90usb1286,AT90usb1287,~
 +Atmega103,Atmega1281,ATmega1280,ATmega16,ATmega128,ATmega161,ATmega162,~
 +ATmega163,ATmega168,Atmega164,Atmega165,Atmega169,ATmega2560,ATmega2561,~
 +ATmega32,Atmega323,Atmega324,Atmega325,ATmega328P,Atmega3250,Atmega3259,~
 +Atmega329,Atmega3290,Atmega406,Atmega48,Atmega64,Atmega640,Atmega644,~
 +Atmega645,Atmega6450,Atmega649,Atmega6490,ATmega8,ATMEGA8515,Atmega8535,~
 +ATmega88,~
 +Attiny11,Attiny12,Attiny13,ATtiny15,Attiny22,ATtiny2313,Attiny24,Attiny25,~
 +Attiny26,Attiny261,Attiny28,Attiny44,Attiny45,Attiny46,Attiny461,Attiny84,~
 +Attiny85,Attiny861~
 +
 +** 回路図 [#gf1ac626]
 +- USBasp(オリジナル)の回路図~
 +#ref(usbasp_circuit.png,,60%)
 +- Amazonで購入した互換品USBasp V2.0の回路図~
 +#ref(usbasp_sch.png,,30%)
 +
 +10pin ISPコネクターの4番pinにTXD,6番pinにRXDが接続されている。~
 +なので,ターゲットボードが[[AVR ISP 10pinコネクター>../../AVR ISPコネクター]]を使っている場合には''4番pinと6番pinを接続しないように注意が必要''。~
 +
 +Amazonで購入した互換品USBasp V2.0では,付属している10pin-6pinアダプターを使うと10pinの4番pinと6番pinは6pin ISPコネクターとは接続されていないのでそのまま接続できる。~
 +
 +*** 互換品USBaspの問題点 [#y657a364]
 +オリジナルのUSBaspではターゲットボードへの5V供給するかしないかのJumperポストがある。~
 +しかし,CPUのATmega8は常にUSBからの5Vで動作しているので,3.3Vセルフパワーのターゲットボードと接続した場合,抵抗270Ωがあるのでなんとか使用できる。~
 +
 +一方,[[Amazonで購入できる互換品USBasp V2.0>https://amzn.to/408fpUf]]は,3.3V降圧回路が実装されていてターゲットボードに5V/3.3Vを切り替えながら供給するかしないかをJumperポストで設定出来るが,オリジナルと同様にCPUのATmega8は常にUSBからの5Vで動作している。3.3Vターゲットボードを接続すると,(抵抗270Ωが実装されていないので)3.3Vを超える電圧になってしまうため直接接続することは出来ない。~
 +
 +なので互換品USBaspは,5Vターゲットボードのみの使用となる。~
 +
 +*** 互換品USBasp V2.0の改造 [#x552cd45]
 +3.3Vターゲットボードへの書き込みに,安全に互換品USBasp V2.0が使用できるように改造してみた。~
 +
 +互換品USBaspで3.3Vを供給するJumper設定にした場合,CPUのATmega8の電源も3.3Vになるように変更する。~
 +
 +改造回路図~
 +#ref(usbasp2_mod_sch.png,,30%)
 +
 +実際には以下のように改造した。~
 +- 部品面のF1を外す。~
 +#ref(usbasp_mod1.png,,10%)
 +- 半田面のAMS1117-3.3Vの右側のパターンをカットする。~
 +- JP1 Vcc2BoadをR5右にワイヤーで接続。~
 +- JP1 5V --- F1 --- USB 5Vにワイヤーで接続。~
 +#ref(usbasp.mod2.png,,10%)
 +
 +これで,3.3Vターゲットボードに3.3Vを供給する場合,CPUのATmega8も3.3Vで動作するようになるので,問題なく3.3VターゲットボードでもUSBaspが使用できるようになった。~
 +
 +** 使い方 [#kd1aa238]
 +WindowsマシンでUSBaspを使い方。~
 +
 +*** USBaspのJumper [#xeb56ea3]
 +オリジナルのUSBaspと互換品とは,Jumperの番号や機能が違っている。~
 +|オリジナル|購入した互換品|内容|h
 +|JP3|JP1|ターゲットボード電圧設定&br;オリジナル品:5Vの供給/供給しない&br;互換品V2.0:3.3V/5Vの切替|
 +|JP2|JP2|ファームウェア書換用&br;Jumperなし: 通常&br;Jumperあり:書換時|
 +|JP1|JP3|ISP通信速度&br;Jumperなし:通常&br;Jumperあり:低速(ATtiny用)|
 +
 +ターゲットボードに合わせて上記のJP1とJP3を設定する。~
 +
 +*** Windows用デバイスドライバー [#w20ba545]
 +WindowsマシンにUSBaspを初めてUSBコネクターに接続すると,デバイスマネージャーで確認すると!マークでデバイスドライバーはロードされない。~
 +
 +デバイスドライバーは[[作者のページ>https://www.fischl.de/usbasp/]]にあってダウンロードできるのだが,デジタル署名がされていないのでWindows 10ではインストールが難儀になる。~
 +
 +なので,[[Zadig>https://zadig.akeo.ie/]]ツールを使ってデバイスドライバーをインストールするのが便利。~
 +ZadigのサイトのDownloadにある[[最新の実行ファイル>https://github.com/pbatard/libwdi/releases/download/v1.5.1/zadig-2.9.exe]]をダウンロードする。~
 +ダウンロードしたexeファイルをダブルクリックして起動する。~
 +USBaspを選択して,使用するデバイスドライバーに''libusbk''を選択してInstall Driverボタンを押す。~
 +
 +これでUSBaspのデバイスドライバーとしてlibusbk(汎用USBデバイスドライバーlibUSB-win32の上位互換のデバイスドライバー)が使われるようになる。~
 +
 +再度USBコネクターに挿入し直して,デバイスマネージャーでデバイスドライバーがロードされていれば正常にインストールできている。~
 +
 +ちなみにLinuxやMacOS Xマシンの場合は,デフォルトでlibusbのデバイスドライバーが用意されているので,USBコネクターにUSBaspを挿入するだけで使える。
 +
 +*** avrdudeで使用する [#j04b2a3f]
 +バージョン5.2以降のavrdudeではUSBaspに対応していてavrdude.confにUSBasp(互換品を含む)の定義が入っているので,問題なくavrdudeでプログラムをターゲットボードに書き込むことが出来た。~
 + > avrdude -p m168p -c usbasp -P usb -t
 +
 +*** Arduino IDEで使用する [#t57df2ee]
 +Arduino IDEからUSBaspを使用する。~
 +
 +''%LocalAppData%\Arduino15\packages\arduino\hardware\avr\1.8.5\programmers.txt''ファイルに,以下のような定義があることを確認する。なければ追加する。~
 + usbasp.name=USBasp
 + usbasp.communication=usb
 + usbasp.protocol=usbasp
 + usbasp.program.protocol=usbasp
 + usbasp.program.tool=avrdude
 + usbasp.program.tool.default=avrdude
 + usbasp.program.extra_params=-Pusb
 +
 +Arduino IDEで,ツール>書込装置で''USBasp''を選択すれば使用できるようになる。~
 +#ref(arduinoide.png,,60%)
 +
 +** USBaspのファームウェアの更新 [#bae1af90]
 +購入した互換USBaspなのだが,どうもfirmwareが古い(v1.2)ようで,avrdudeを使うと「cannot set sck period.please check for usbasp firmware update.」と警告メッセージが出る。~
 +また,ATmega2560などのFlash ROMが128KB以上のCPUなどにうまく書き込めない。~
 +
 +そこでUSBaspのファームウェアを更新してみた。~
 +
 +最新のファームウェアは,[[作者のページ>http://www.fischl.de/usbasp/]]から[[usbasp.2011-05-28.tar.gz>https://www.fischl.de/usbasp/usbasp.2011-05-28.tar.gz]](v1.04)ファイルとしてダウンロード出来る。~
 +
 +ダウンロード後,任意のフォルダーにusbasp.2011-05-28.tar.gzを解凍しておく。~
 +
 +USBaspのfirmwareを更新するには,別に何らかのAVR Writerが必要となる ;) ~
 +
 +*** Arduino UnoをAVR Writerにして更新する方法 [#hf30ca41]
 +他のAVR Writerが無い場合,手元にある[[AVRマイコンのボードをAVR Writerにして>../Arduino as ISP]],それを使ってUSBaspのfirmwareを更新できる。~
 +
 +試しにArduino UnoをAVR Writerとして使用できるようにしてみる。~
 +- Arduino UnoをPCと接続する。~
 +- Arduino IDEのファイル>スケッチの例>ArduinoISPを開く。~
 +- Arudiono UnoにArduino ISPスケッチを書き込む。~
 +
 +これで,Arduino UnoがAVR Writerとして使用できるようになった。~
 +
 +以下の内容で''firmupdate.bat''ファイルを作成する。~
 + @echo off
 + SET AVRDUDE_PATH=C:\WinApl\develop\arduino-1.8.19\hardware\tools\avr
 + SET COM_PORT=COM2
 + 
 + "%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
 + )
 +
 +以下のようにしてファームウェアを更新する。~
 +- USBaspのJP2をジャンパーする。~
 +- USBaspのJP1を5Vにする。~
 +- USBaspのJP3はオープンにする。~
 +- Arduino UnoとUSBaspを接続する。~
 +|Arduino Uno|USBasp|h
 +|GND|GND  |
 +|13 |SCK  |
 +|12 |MISO  |
 +|11 |MOSI  |
 +|10 |RST  |
 +|5V |VCC  |
 +- 上記の更新するファームウェアを用意する。~
 +- 作成したfirmupdate.batを実行する~
 +コマンドプロンプトを開いて,
 + > firmwareupdate.bat
 +とする。~
 +なにかエラー等が表示されていなければ,うまく更新できている。~
 +- USBaspのJP2をジャンパーを取り外す。~
 +- Arduino UnoとUSBaspの接続を外す。~
 +
 +これでUSBaspのファームウェアを更新することができる。
 +
 +*** 別のUSBaspを使って更新する [#o93fbe62]
 +ファームウェアの更新をする時に使用するAVR Writerに別のUSBaspを使用する事もできる。AmazonなんかだとUSBasp2個一緒にして販売されているのは,このためなのかも。~
 +
 +以下の内容で''firmupdate2.bat''ファイルを作成する。~
 + @echo off
 + SET AVRDUDE_PATH=C:\WinApl\develop\arduino-1.8.19\hardware\tools\avr
 + 
 + "%AVRDUDE_PATH%\bin\avrdude.exe" -C "%AVRDUDE_PATH%\etc\avrdude.conf" -P usb -c usbasp -p m8 -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 usb -c usbasp -p m8 -U flash:w:usbasp.atmega8.2011-05-28.hex
 + )
 +
 +以下のようにしてファームウェアを更新する。~
 +- USBasp同士をケーブルで接続する。~
 +- 更新される側のUSBaspのJP2をジャンパーする。~
 +- 更新される側のUSBaspのJP1を5Vにする。~
 +- 更新される側のUSBaspのJP3はオープンにする。~
 +- PCとWriter側のUSBaspを接続する。~
 +- Zadigを使ってUSBaspのデバイスドライバーをlibusbkに変更する。~
 +もし,リストにUSBaspが表示されない場合は,Options>List All Devicesにチェックをする。~
 +- 上記の更新するファームウェアを用意する。~
 +- 作成したfirmupdate2.batを実行する~
 +コマンドプロンプトを開いて,
 + > firmwareupdate2.bat
 +とする。~
 +なにかエラー等が表示されていなければ,うまく更新できている。~
 +- 更新されたUSBaspのJP2をジャンパーを取り外す。~
 +- USBasp同士の接続を外す。~
 +
 +これで,USBaspのファームウェアを更新することが出来る。~
 +この後,逆に接続してもう一つのUSBaspのファームウェアも更新する。~
  

  • 開発/AVR/AVR Writer/USBasp のバックアップ差分(No. All)
    • 現: 2024-12-24 (火) 13:45:51 yuji
      • Deleted an attach file: usbasp.png at 2025-01-15 (水) 13:46:58 at 2025-01-15 (水) 13:47:36 at 2025-01-17 (金) 10:01:12, Deleted an attach file: usbasp_sch.png at 2025-01-17 (金) 10:02:02 at 2025-01-17 (金) 10:05:59 at 2025-01-23 (木) 12:25:41, Deleted an attach file: usbasp_org.png at 2025-01-24 (金) 17:30:02

トップ   差分 バックアップ 複製 名前変更 リロード   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom
Counter: 80, today: 1, yesterday: 1