『昼夜逆転』工作室
[トップページへ戻る]

HID-AVRライター (HVS/TPI)

2015年4月
以前製作した「HID TPIライター」をプリント基板で作り直しました。
5Vから12Vを生成するのにMAX662Aを使用しています。活躍する場があまりないTPIライターに高価な部品を使っていてももったいないので、 HVSライター(高電圧シリアルライター)としても使えるようにしました。 リセット端子をI/Oピンに設定した8ピンAVRに書き込むことができます。 あるいは、ヒューズ設定を間違えて外部クロック入力にしてしまったものの、発振器がなくて書き込めなかった8ピンAVRを救済することもできます。

2020年12月
ライターソフト「hidavrw.exe」をアップデート(ver1.20)。HvsWriter::WaitSdoHi()を修正。

このライターHIDAVRWで出来ること

HVSライターとして
TPIライターとして
ドライバのインストールが不要。HIDクラスのUSBデバイスとして認識されます。
ライター本体のファーム、および、ライターソフトのソースを公開。

HID-AVR [HVS/TPI] Writer ハードウェア

HIDAVRW
本体
本体
右端のピンソケットにはHVS/TPIそれぞれの動作に必要な端子が出ています。こことターゲットAVRを接続します。
サブボードを装着すると8ピンAVRとの接続が楽になります。ヒューズ設定をリセットするだけの使い方にも向いています。
もちろんこの形でHVSライターとして使えます。TPIライターとして使うときはサブボードを外します。
書き込みの様子 8ピンAVRの例
本体
画面
書き込みの様子 ATtiny10の例
本体
画面

【左】
サブボードを装着して、そこにターゲットAVRとしてATtiny13Aをセットしています。 HVSライター時は、ライターとターゲット間のデータのやりとりが1byte単位なので動作が遅いです。
【右】
ターゲットAVRとしてATtiny10(米粒AVRと呼ばれている)と接続しています。 TPIライター時はサブボードをはずし、ジャンパー線で接続します。

いずれの場合も、ターゲットAVRにはパスコンを付けた方がよいです。付けないと、たまに読み書きできないことがあります。 ※上記写真では見えませんが、実はライター裏面、ピンソケットの位置に0.1uFのチップコンデンサを 取り付けてあります

HID-AVR [HVS/TPI] Writer ソフトウェア

HIDAVRW
ライターソフト(PC側で使用する書き込みソフト)
ダウンロード HidAvrWriter_proj_v120.zip
開発環境: Windows10/64bit, VisualStudioCommunity2017/C#
ファーム(ライター回路内のATtiny2313Aに書き込むHEXファイル)
ダウンロード HidAvrWriter_firmware_proj.zip
開発環境: Windows7SP1/64bit, AtmelStudio6

どちらもプロジェクトのファイル一式です。
ライターソフトは、ターゲットAVRにHEXファイルやEEPファイルを書き込むためのアプリケーションです。
フォルダ HidAvrWriter/bin/Release 内の hidavrw.exe を使用します。
ファームは、ライター本体のプログラムです。V-USBのソースを含みます。回路図を見て自作する方はご利用ください。

2015/04 追記
HIDAVRWにGUIを用意しました。→ダウンロード HidAvrWriterGui.zip
操作方法についてはオンラインマニュアルをこちらからどうぞ。→HIDAVRW-GUI 操作説明書
画面 画面

使い方とオプションスイッチ

ヘルプ画面
……。見ての通り「雰囲気英語」です。オプションの意味が思い出せればよし。 ※日本語だと文字数が多くて画面に収まらない。
使い方とオプションスイッチは拙作ライター「FTAVRW」「FTTPIW」と同様です。 ※元々はavrsp.exe(ChaN氏)を参考にしています。
ヘルプ画面

使い方:書き込み方法

方法1
コマンドライン入力で実行します。
'hidavrw'の後にHEXファイル名、EEPファイル名、オプションスイッチを指定します。

方法2
hidavrw.exeのショートカットアイコンに、HEXファイルやEEPファイルをドラッグ&ドロップします。 オプションスイッチは別途iniファイルに記述しておきます(後述)。

ヒント/注意 使い方:オプションスイッチ

必須オプション 説明
-hvs
-tpi
HVSライターとして起動するか、TPIライターとして起動するかを指定します。必ずどちらかを指定してください。
もしターゲットAVRに対して間違えて指定してしまっても、ターゲットAVRが壊れたりはしません。非対応AVRと見なして動作を終了します。
オプション 説明
-rp -rp<n>
-re -re<n>
-rf
ターゲットAVRの内容を読み出します。
順に、プログラムコード(Flashメモリの内容)、EEPROMデータ、現在のヒューズ設定。
プログラムコードとEEPROMデータはインテルHEX形式で表示します。ファイルへ保存するにはリダイレクトしてください。
例: hidavrw -hvs -rp >flash.hex
プログラムコードとEEPROMデータは1レコード内のデータ数を1~255byteで指定できます。デフォルトは16byteです。
例: hidavrw -hvs -rp32 >flash.hex ※1レコードあたり32byteで出力。
※ターゲットAVRがEEPROM非搭載の場合、'-re'を指定しても無視します。
※'-rf'の裏技: hidavrw.exeと同じフォルダにavrsp付属のfuse.txtがあると結果表示に利用します。
※TPIモード時のヒューズ設定の表示はavrsp.exe(ChaN氏)に付属するfuse.txtの書式を参考にしています。
-r ターゲットAVRに関する情報を表示します。
署名バイトやメモリサイズなどです。
-v 書き込みせず、ベリファイのみ行います。
ターゲットAVRからプログラムコードを読み出し、指定したHEXファイルの内容と照合します。
-v- 書き込み後、ベリファイしません。
プログラムコードを書き込んだ後、通常は自動的にベリファイしますが、それをスキップします。
-e ターゲットAVRのプログラムコード(Flashメモリのコード領域)を消去します。
ロックビットは解除されます。ヒューズ設定は影響を受けません。
プログラムコードを書き込むとき、ライターソフトは自動的に消去処理を実行しています。
[HVSモード時]
-fl<b> -fl<h>
-fh<b> -fh<h>
-fx<b> -fx<h>
ヒューズバイトを設定します。 ※'l'は小文字のエル。
順に、ヒューズLowバイト、ヒューズHighバイト、拡張ヒューズバイト。
<b>は8桁の0/1で指定します。
例: -fh11010011 ※'0'がプログラム、'1'がアンプログラム。
<h>は1byteの16進数で指定します。大文字小文字は区別しません。「0x」は付けません。例: -fh2A
-fl, -fh, -fx どれも、値を省略するとそのターゲットAVRのデフォルト値が書き込まれます。 ヒューズバイトをリセットしたい(工場出荷設定に戻したい)場合に便利です。
例1: -fl   例2: -fl -fh -fx
[TPIモード時]
-fl<b> -fl<h>
ヒューズバイト(Configration Bits)を設定します。 ※'l'は小文字のエル。
※他のAVRに倣い、ここではヒューズLowバイトと呼んでいます。
<b>は8桁の0/1で指定します。
例: -fl11111001 ※'0'がプログラム、'1'がアンプログラム。
<h>は1byteの16進数で指定します。大文字小文字は区別しません。「0x」は付けません。例: -flF9
-l<b> -l<h> ロックビットを設定します。 ※'l'は小文字のエル。
<b>は8桁の0/1で指定します。
例: -l11111100 ※'0'がプログラム、'1'がアンプログラム。
<h>は1byteの16進数で指定します。大文字小文字は区別しません。「0x」は付けません。例: -lF6
-dev<n> PCに接続した当ライターのインデックスを指定します。デフォルトは0番。
当ライターと同じVID/PIDのV-USB機器をPCに接続している場合、当ライターが0番でないことがあります。 1,2,3,..とインデックスを指定し、当ライターが動作するか試してください。例:-dev2
[TPIモード時]
-br<n>
ライターとターゲットAVR間のボーレートを設定します。デフォルトは-br115200 (115200bps)
何らかの理由で書き込み速度を落とす必要がある場合にこのオプションを指定します。
115200bps, 38400bps, 9600bps, 4800bpsで動作確認済みです。
-w
-w1
-w2
1回の処理が終わった後のキー入力待ちをどうするかです。デフォルトは'-w'。
-w : 常時キー入力待ちをする。
-w1 : エラー発生時のみキー入力待ちをする。
-w2 : 常時キー入力待ちをしない。
アイコンへドラッグ&ドロップする使い方をしていると、実行時にコマンドプロンプトが開き、結果を表示したあと勝手に閉じてしまいます。 エラーが発生してもメッセージが読めません。そのためこのオプションを指定し、PAUSE状態にします。
あらかじめコマンドプロンプトを開いてコマンドラインからキー入力する使い方であれば、キー入力待ちをする意味がないので(コマンドプロンプトは勝手に閉じない)、 '-w2'指定でよいでしょう。
高度な設定 説明
-t<name> 何らかの理由で署名バイトが読めないターゲットAVRに対し、名前を指定してライターに認識させます。 AVRの型番の「AT」を除いた部分を記述します。
例:-ttiny13A ※ATtiny13Aとして認識させる。大文字小文字に注意。

iniファイル/AVR定義ファイル

hidavrw.ini
オプションスイッチを hidavrw.iniに記述しておくと、hidavrw.exe実行時にそれが反映されます。
hidavrw.iniは hidavrw.exeと同じフォルダに置きます。
iniファイルとコマンドラインに、値が違う同じオプションスイッチがあった場合、コマンドラインの方が有効となります。
例: iniファイルに'-w1'が記述されていて、コマンドラインから'-w2'を指定すると、'-w2'の方が有効となります。

avrinfo.txt
HIDAVRWがデフォルトで対応しているAVRは下記のものですが、
これら以外にも、「HVS書き込み対応のAVR」「TPI書き込み対応のAVR」に対応させることができます。
追加するAVRの定義を、決められた書式でavrinfo.txtに記述し、hidavrw.exeと同じフォルダに置きます。
avrinfo.txtの具体的な記述方法は「AVR 高電圧パラレル/シリアルライター」をご覧ください。
※今のところ必要ないので(2015/04時点)、ここでは説明を省略します。

回路図と基板配線図

回路図 ※リンク先pdfを拡大すると図中の文字が読めます。
回路図
基板配線図
基板

V-USB を利用したAVRライター(プログラマー)です。 ドライバ不要、PCにはHIDデバイスとして認識されます。
USBのデータ線のツェナーダイオードD1,D2やプルアップ抵抗R1の値の根拠はこちらに。→ Hardware Considerations
回路図の右下にATtiny13Aとコネクタを接続しただけの回路が書いてあります。 これは、基板の右端部分(折り取って使用する)を作図するために書いたもので、ライターの回路としては意味はありません。

部品について

開発中

全体的な構成は、ATtiny2313Aを使ったV-USBに、MAX662A(5V→12V昇圧のDC/DCコンバータ)を加えたものです。
開発当初はATtiny4313を使い、HVSライターの処理をライター本体に内蔵するつもりでした。 しかし、入手性が悪かったのでATtiny2313Aに変更しました。 フラッシュ容量が半減したのでHVSライターの処理は書き込みソフト側で組んでいます。 ATtiny2313AではなくATtiny2313(Aが付かない)でも動作すると思います。
MAX662AのDIP品も入手性が悪い部品です。秋月電子ではSOP→DIP化したモジュールが購入できます。

HID-AVRライター (HVS/TPI) 部品一覧  (回路図はここをクリック
部品名部品番号個数参考価格/備考
AVR(マイコン) IC1 ATtiny2313A 1 230円(秋月電子 ATtiny2313)
DC/DCコンバータ U1 MAX662A 1 320円(秋月電子 DIPモジュール)
電解コンデンサ C1 10uF/25V 1 15円(千石電商 小型品)
積層セラミックコンデンサ C2,C3 1uF [105] 2 10個100円
積層セラミックコンデンサ C4,C5 4.7uF [475] 2 1個20円
積層セラミックコンデンサ C6,C7 22pF [22] 2 20個100円(秋月電子)
積層セラミックコンデンサ C8 0.1uF [104] 1 10個100円
ツェナーダイオード D1,D2 3.6V 2 1個20円
LED D3,D4 3mm径。色は自由 2 電源ランプ、アクセスランプ
抵抗 R1 1.5kΩ [茶緑赤金] 1 100個100円
抵抗 R2,R11 1kΩ [茶黒赤金] 2 100個100円
抵抗 R3,R4 75Ω [紫緑黒金] 2 100個100円
抵抗 R5~R10 100Ω [茶黒茶金] 6 100個100円
クリスタル振動子 X1 12MHz 1 1個30円(秋月電子)
USBコネクタ CN1 mini-B メス 1 プリント基板で使用するのは
表面実装型ではなく足がピン型。
4個200円(秋月電子)
ピンソケット -- 2x5ピン 1 必要に応じて
ICソケット -- 20ピン,8ピン 各1 IC1,U1用。必要に応じて
ピンヘッダ -- 2x5ピン 1 [サブボード]
基板背面に実装する
ICソケット -- 8ピン 1 [サブボード] HVSモード時の
ターゲットAVRマウント用

◆ ◆ ◆

本ライターはユニバーサル基板で作ったものが1個あるだけだったので、予備が欲しくてプリント基板化しました。 ツール(KiCad)の使用方法の思い出し・練習も兼ねています。 自分は時々ATtiny10/20を使うので、本ライターはこの先も活躍してくれそうです。


 
(C) 『昼夜逆転』工作室
[トップページへ戻る]