なが〜い前書き
単体のAVRーATtinyとかATmegaを使う時に絶対に必要なのがAVRライター。AVRをイジり初めて最初に製作するのもAVRライタらしい。
- AVRライタを作るためにAVRを使う…
- そのAVRをプログラムするためにAVRライタが必要…
コレをAVRライタの「鶏卵問題」と言うらしい。この問題を解決するために
- AVRを使わない単純な回路とソフトで最初に最低限機能のAVRライター(a)を作る
- AVRライター(a)を使ってちょっと高機能なAVRライタ(b)を作る
- AVRライター(b)を使ってさらに高機能なAVRライタ(c)を作る。
と,ブートストラップ的に作って行く例が多い。
AVRライタは簡単でそこそこ面白く役に立つ回路なので「AVRを使って何か作ろう」から「AVRライタ作りが目的」になってAVRライタ作りから抜け出さない人も多く,これを「”AVRライタ沼”にハマる」と言うらしい。
私はArduino DiecimilaからAVRを使うようになった。その頃Arduino Dicimilaは国内販売されておらず海外通販での調達はとても高価だった。そこでDiecimilaクローンを作ろうと考えて必要になったのがAVRライタだった。
Webで「AVRライタ」を検索したら鶏卵問題の解決法とかAVRライタ沼の成果品が山ほど出てきた。が,Arduinoブートローダの書き込みには「帯に短し襷に長し」のモノが多かった。このときAVRライタは「ATMEL純正AVRISPmkII」を買っておけば問題ないとわかった。
結局,自作DiecimilaクローンはArduino Diecimilaに搭載されているUSB-Serial変換チップのFT232RLとそれをBitBang制御するSuz氏のAVRライタソフトを使って生のATmega168にarduinoブートローダを書き込んだ。
この方法はArduino Diecimilaだけで実現でき,Arduino Diecimila自身のブートローダも書けることからAVRライタを持たない人がDiecimilaのATmega168チップを壊したとき復活させる手段として極めて有効だと考えた。また,先行事例も無かったことから,その手順をまとめてWebに公開しarduino.ccのフォーラムに投稿したところかなりの反響があった。
この方法は”FTDI BitBang”と呼ばれて世界的に普及し最終的にはSuz氏のFTDI BitBang拡張は定番AVRライタソフトAVRDUDEに標準機能としてインポートされた。
その後,しばらくFTDI BitBangライタを使っていたが,Arduino IDEにArduinoISPというArduinoをAVRライタに変身させるスケッチが用意されArduino UNOなどを簡単にAVRライタに変身させることができるようになったのでこちらを使い始めた。
さらにその後,様々なAVRをプログラムするようになったので専用のAVRライタを用意しようとAVRライタの本命であるATMEL純正AVRISPmkIIを購入した。
今,あなたがAVRライタが必要ならば”AVRライタ沼”にハマらなためにもATMEL純正AVRISPmkIIの利用をおすすめしたい。が,販売終了してしまったようだ。
そこで,登場するのが AVRISPmkIIクローンです。オープンソースの「lufaプロジェクト」でファームウェアが開発され,それに対応する回路も公開されていますのでAVRISPmkIIクローンは自作が可能です。しかし,部品を集めて自作するとなると結構な手間です。(AVRライタ沼の人にとっては,大した手間ではないと思いますが)
ハードウェアを作らないで,簡単に製作できないか手持ちのArduinoなどのマイコンボードを検討したところ,Arduino UNO Rev.3,Arduino Loenardo / Micro,SparkFun Pro Micro,ストロベリーリナックス Da Vinci 32U がファームウェアの入れ替えと若干の基板の改造(Da Vinci 32Uは改造不要)でAVRISPmkIIクローンとして動かせることがわかりました。
基板改造等
マイコンボード | 基板改造 | DFUローダ 再書き込み |
参考価格 |
Arduino UNO Rev. 3 | 3×2ピンヘッダ追加 ジャンパー線1本追加 |
不要 | $5(中華通販:互換品) |
Arduino Leonardo Rev. 3 | ジャンパー線1本追加 | 必要 AVRライタ必要 |
$7(中華通販:互換品) |
Arduino Micro | ジャンパー線1本追加 | 必要 AVRライタ必要 |
$15(中華通販:互換品) |
SparkFun Pro Micro | パターンカット ジャンパー線1本追加 |
不要(注1) | $3(中華通販:互換品) |
Da Vinci 32U | なし | 不要(注1) | ¥1500 |
注1: Arduinoブートローダを書き込んでいたらDFUローダの再書き込みが必要です。 また,そのためのAVRライタが別途必要です。 |
この中で最もオススメしたいのがArduino UNO Rev.3です。基板改造も容易でDFUローダ書き換えの手間とAVRライタが不要です。
前書きがとても長くなりました。
やっと本文
Arduino UNO / Leonardo / Micro を若干の基板の改造とファームウエアのインストールによってTPI書き込みISP書き込みに対応するAVRISPmkIIクローンを作ります。
Arduino UNO Rev.3 AVRISPmkIIクローン
TPIモード | ISPモード |
![]() |
![]() |
Arduino Leonardo Rev.3 / Micro AVRISPmkIIクローン
TPIモード | ISPモード |
![]() |
![]() |
![]() |
Da Vinci 32U
Pro Micro
公開情報ありません
…以上,”AVRライタ沼”にしばしハマって見ました。
蛇足1
AVRISP mkIIをAT90USB162/ATmega32U2で製作する旧記事はATmaga32U4搭載マイコンボードが$3〜$7で調達できる現状にあって,バラの部品を集めて製作するのは明らかに時代遅れで時間と労力の無駄遣いのため廃棄しました。
蛇足2
この改造英文記事がHackaday-blogに掲載されました。
Arduino UNO / Leonardo / Micro は簡単にAVRISP mkIIに変身する