2015年4月
以前製作した「HID TPIライター」をプリント基板で作り直しました。
5Vから12Vを生成するのにMAX662Aを使用しています。活躍する場があまりないTPIライターに高価な部品を使っていてももったいないので、
HVSライター(高電圧シリアルライター)としても使えるようにしました。
リセット端子をI/Oピンに設定した8ピンAVRに書き込むことができます。
あるいは、ヒューズ設定を間違えて外部クロック入力にしてしまったものの、発振器がなくて書き込めなかった8ピンAVRを救済することもできます。
2020年12月
ライターソフト「hidavrw.exe」をアップデート(ver1.20)。HvsWriter::WaitSdoHi()を修正。
【左】
サブボードを装着して、そこにターゲットAVRとしてATtiny13Aをセットしています。
HVSライター時は、ライターとターゲット間のデータのやりとりが1byte単位なので動作が遅いです。
【右】
ターゲットAVRとしてATtiny10(米粒AVRと呼ばれている)と接続しています。
TPIライター時はサブボードをはずし、ジャンパー線で接続します。
いずれの場合も、ターゲットAVRにはパスコンを付けた方がよいです。付けないと、たまに読み書きできないことがあります。
※上記写真では見えませんが、実はライター裏面、ピンソケットの位置に0.1uFのチップコンデンサを
取り付けてあります。
どちらもプロジェクトのファイル一式です。
ライターソフトは、ターゲットAVRにHEXファイルやEEPファイルを書き込むためのアプリケーションです。
フォルダ HidAvrWriter/bin/Release 内の hidavrw.exe を使用します。
ファームは、ライター本体のプログラムです。V-USBのソースを含みます。回路図を見て自作する方はご利用ください。
ヘルプ画面
……。見ての通り「雰囲気英語」です。オプションの意味が思い出せればよし。
※日本語だと文字数が多くて画面に収まらない。
使い方とオプションスイッチは拙作ライター「FTAVRW」「FTTPIW」と同様です。
※元々はavrsp.exe(ChaN氏)を参考にしています。
必須オプション | 説明 |
---|---|
-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として認識させる。大文字小文字に注意。 |
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化したモジュールが購入できます。
部品名 | 部品番号 | 値 | 個数 | 参考価格/備考 |
---|---|---|---|---|
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を使うので、本ライターはこの先も活躍してくれそうです。