EZ−USBを使用した AVR ISP ライター

AVRの開発を行うためには、何はともあれプログラムをAVRチップに書き込むためのライターが必要になります。
ライターはATMEL社から純正のものも出ておりますが、アマチュアで使用するためにはなるべく安く済ませたいものです。

お勧めはChanNさんが開発されたISPライターです。プリンターポートに接続するタイプや、シリアルポートに接続するものなどが用意されており、1000円以下で自作することが可能です。
このISPライターは非常に高速で、シリアルポート接続版はデバッグにも使用でき、非常に便利です。私も愛用しております。

一つだけ残念なのは、ノートPCなどではプリンタ/シリアルポートが無いため使用することが出来ません。
ノートPCなどで使用するためにはUSBで接続する必要があります。
USBで使用できればUSBからターゲット(AVR)の電源も供給できるため非常にすっきりします。

EZ-USBはCypress社のUSBマイコンで、ファームウエアを簡単にPCから転送して使用できるため、アマチュアの間では広く使われています。オプティマイズのHPでもMINI EZ-USBカメレオンUSBなどに使用されています。
今回はこのEZ-USBを使用したISPライターを製作することにします。

ソースコードが公開されているISPライターはAVRdude、Uisp、ATMEL社のAVROSPなどがあります。
どれも一長一短なのですが、当初私はAVROSPをEZ-USBに対応させることを考えました。
AVROSPはファームが公開されているAVR910と呼ばれるシリアル接続のISPライタに対応しています。
そこでこのAVR910に相当する部分をEZ-USBで置き換える方針で開発を進めました。
AVROSPは古いデバイス(AT90Sシリーズ)などで多少問題がありましたが、とりあえず動くものが出来上がりました。
シリアル接続のAVR910よりは高速に動作するものの、書き込み時間が長く満足するものにはなりませんでした。
速度が出ないのはAVR910をそのままポーティングしたため、PCとEZ-USBの間のやり取りが多すぎるためです。

何とかならないかと考えていた矢先に、ChanNさんのライターでWin32に対応したバージョンがあるのを知りました。
ありがたいことにソースコードも公開されています。そこでこのavrspをEZ-USBに対応させることにしました。
avrspの中でAVRデバイスを直接たたいている部分をEZ-USBに移しています。
速度的にはPCで全てを完結させているavrspに勝てませんが、ページ書き込みをサポートしている最近のデバイスではまずまずのスピードが得られています。


部品はISP用のコネクタ、100Ωの抵抗3本、3Pヘッダ、ジャンパピンでOKです。
回路図のAx、BxはMini EZ-USB基板のエッジの番号です。
RxD0,TxD0とISPの信号を結線しているのはデバッグ用に使用するためです。(後述)
EZ-USBはAN2131SC、AN2135SCのどちらでも使用可能です。

秋葉原などで部品を集めて組み立てることも出来ますが、
お手軽に作成したいという方のために専用基板を使用したキット(\1500)を用意しました。
キットはこちらから購入することが出来ます。

キットが届きましたら、組み立てる前に部品が揃っているか確認します。

部品 備考
専用プリント基板 1 基板の斜めのカットは手作業で行っていますので、多少のずれなどはご容赦ください
26ピンL字ピンヘッダ 1  
2*3ピンフレーム 1 カットは手作業で行っていますので、多少のずれなどはご容赦ください
チップ抵抗100Ω 3 101
チップ抵抗0Ω 1 000
1*3ピンヘッダ 1  
ジャンパピン 1  

大変申し訳ないのですが、基板には一部不具合があります。
本来3.3VはMINI EZ-USBのB11から供給されるべきなのですが、基板のパターンはA11になっています。

A11はEZ-USBのクロック24MHzが出力されますので、A11をAVR-ISPライターに接続しないように、L字ピンヘッダのA11のピンをペンチやニッパなどで抜いておきます。


更に3.3VをB11から供給するために0Ω抵抗をB11とA11の間に接続します。(基板裏面)


2*3ピンフレームは、半田付けしやすいようにピン足を内側に少し曲げておきます。


あとは特に難しい部分はありませんので普通に半田付けします



USB経由でターゲット(AVR)に電源を供給する場合は、ジャンパピンを3.3Vあるいは5V側に入れます。
(供給できる電流は3.3Vで60mA、5Vで400mA程度です)
USB経由で電源を供給しない場合には必ずジャンパピンを外して使用します。



実際にAVRをプログラムするにはライターの2*3ピンフレームの各信号(VCC、GND、MOSI、MISO、CLK、RST)をターゲットのAVRマイコンに接続すればOKです。
(RST端子はマイコンのRESET端子に接続します)
(最近のAVRには全てRCオシレータが内臓されていますので、セラロックやクリスタルが無くても書き込み出来ます。)

MINI EZ-USBとPCを接続するUSBケーブルは、巻き取り式などの細いものを使用すると取り回しが楽になります。


書き込みプログラム(AVREZUSB.EXE)

AVREZUSBを使用するためには予めCypressのデバイスドライバ(Cypressの開発キットに含まれる)をインストールしておく必要があります。
AVREZUSB.EXEは作業用のディレクトリにコピーしておくか、WinAVRを使用するのであればC:\WinAVR\binにでもコピーしておくと良いでしょう。

AVREZUSBの使用方法はChanNさんのavrspに準じます。

プログラム書き込み avrezusb prog.hex
プログラム読み出し avrezusb -rp
EEPデータ書き込み avrezusb data.eep

書き込み対応デバイスもavrspに準じますので、ほぼ全てのAVRデバイスに書き込み可能と思われますが、
書き込み確認したのはオプティマイズで取り扱っているAVRマイコンの他にAT90S2313,AT90S4414,AT90S8515です。
AVREZUSBが対応できるターゲット電圧は3.3Vから5Vまでとなります。
(EZ-USBは3.3Vデバイスですが、5Vのデバイスを直接接続することが出来ます。)


AVR Butterflyを接続して動作確認

AVR ButterflyはISP用のコネクタは実装されていませんので2*3のピンヘッダを実装します。

逆ざしを防止するために、私はGND(6番ピン)にマジックで黒ポチをライターとターゲットに付けておき、接続時に黒ポチを合わせるようにしています。

AVR Butterflyは電池を入れたままでもOKですが、ライターのジャンパピンを3.3V側に入れておくことで電池を外した状態での書き込みを行うことも可能です。

それでは実際に動作確認をしてみましょう。
AVR Butterflyとライターを接続して、USBケーブルでPCと接続します。

「avrezusb -rf」とDOS窓で入力すると、自動的にデバイスATmega169を認識して、ヒューズビットを読み出します。

こんな感じで表示されれば正しく動作しています。


ダウンロード

AVREZUSBバイナリ
AVREZUSBソース(VC++にてコンパイル可能)
EZ-USBファームソース(Keil Cにてコンパイル可能)
EZ-USBファームHEXファイル