AVR書込器の製作(USBasp編)
最初PICをやりたかったんですが、Macで使う為の環境や書き込み器の問題で挫折しちゃいました。 その後AVRが出て、Mac上での開発環境や安価な書き込み器が充実してきました。 現在では趣味でAVRの工作/開発をMac上でやっています。 開発環境は「CrossPack-AVR」が使えます。そして書き込み器にはISP方式に対応した「USBasp」を作って使っているので紹介します。
USBasp
これからは低消費電力な1チップマイコンを部品のように使う時代です。
PICやAVR、そしてARMのCPUコアを使った面白い部品が出てます。
こういった部品を使って趣味で遊ぶ為には、安価な開発環境と安価な書き込み器の存在が重要です。
USBasp製作
とはいえ、安価なAVR書き込み器であるUSBaspを作るためにはそのコントローラであるAVRチップへの書き込みが必要・・
という問題があるのですよ。
仕方なく、まずはWindowsマシンのパラレルポート接続で、抵抗4本だけのAVRライタを作りました。 これを使い、WindowsマシンでUSBaspのファームをatmega48に書き込んでもらいました。
USBasp完成
一度書き込んでしまえばあとは作るだけ。
フォトカプラで絶縁する事も考えましたが、バッファ入りのUSBaspで作りました。
USBaspの限界
ところが最近の新しいATxmegaやATtinyは書き込み方式が「TPI」や「PDI」になり、私も従来のatmega系を3.3Vで作ることが多くなってきたのです。
しかしUSBaspの回路の基本が5.0V動作では、3.3Vのターゲットに直結できません。ここはキチンとレベル変換したいところです。
「USBasp改」回路
そこで、通販で見つけたDIP品の74VHC9541を使ってレベル変換を組み込むことにしました。
まずはISPだけ3.3V対応です。「TPI」や「PDI」はケーブル側で送受信混合をやることになります。(当面使う予定はないので)
回路解説
74VHC9541の特徴はいろいろありますが、2~5.5V動作、入力端子に寄生Diがないので、
電源電圧にかかわらず入力電圧は0~5.5Vが可能。入力端子には無電圧時の保護回路も内蔵してます。
この特性を利用して5V→3.3V変換します。さらにG端子を「動作中」のLED端子で制御します。
動作確認
気になるのは、MISOのAVR入力端子も切り離されてHi-Zになってしまう為に10KΩでP-UPしてる部分。
74VHC9541は出力トレラントの機能はないので、これはできれば入れたくないのです。(100KΩでもいいかも)
SCK、MOSI、RSTも100KくらいでP-UPしたほうがよいカモですが、入れてません。
TPI対応
TPI接続時の配線はこのようになります。「TPI_ISO_OPT」を定義してDATA-INとDATA-OUTを別ポートにしています。VHC9541で変換後に混合します。
PDIの端子割り振りもTPIにあわせたものになってほしいですね。(正式に対応するかは「?」ですが。)
ケース作って完成!
簡単なケース(紙工作)に入れて完成です。3.3V系に直接書き込めるのはいいですね。
最近のAVRは1.8Vから動作可能ですが、1.8Vはバックアップ動作の限界電圧と考え、通常動作は3.3Vで設計するのがよさそうです。新しいatxmegaは3.3V仕様(5.0V動作不可)なので、PDIに対応するなら最低限3.3V対応は必須です。新しいデバイスが使用可能になるのはうれしいですね。