AVR 高電圧パラレル/シリアルライター
製作:2011年12月-2012年1月/記事公開:2012年2月 AVRマイコン用の高電圧パラレル/シリアルライターを作りました。 ヒューズビットの設定をミスって外部クロック供給にしてしまったが、発振器を持ってないのでSPIライターで読み書きできない、ということがあります。そんなときは高電圧パラレル/シリアルライターの出番です。 また、8ピンAVRでピン数を稼ぐためRESETピンをI/O利用に設定することがあります。この場合、高電圧シリアルライターでないとプログラミングできません(ファームの書き込みやヒューズの設定)。元のRESETピンに戻すにも高電圧シリアルライターが必要です。 通常利用するSPIライターの他に、高電圧ライターが1台あると安心・便利です。 この記事でのライターの呼び方 高電圧パラレルライター … 5V/12Vを使うパラレルライター。 高電圧シリアルライター … 5V/12Vを使うシリアルライター。20ピン未満のAVR用。 SPIライター … 5Vのみを使うシリアルライター。SPI = Serial Peripheral Interface. |
ライターの概要 | ||
本ライター AVR High Voltage Parallel/Serial Writer の特徴は次の通りです。
書き込みソフトの名称: ftmhvw.exe 製作のヒント ATmega88Pに本ライター機能のファームを書き込むために、AVRライターが別途必要となります(鶏と卵の問題)。 ただし、秋月電子FT232RモジュールがあればそれがSPIライターになるので、鶏と卵の問題は生じません。 どのみち本ライターではUSB-シリアル変換モジュールが必要なので、FT232Rモジュールがあれば一石二鳥です。 ※詳しくはこちら「FT232Rモジュール活用 #3 FT232-AVRライター」 何らかのAVRライターを既に持っているなら、USB-シリアル変換モジュールはFT232Rのものでなくとも構いません。 CP2103やPL-2303HXのモジュールが利用できます。 ※詳しくはこちら「FT232Rモジュール活用 #1 ドライバのインストールからソフト開発まで」
|
ピンアサイン | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
ライター本体とターゲットデバイスの、高電圧パラレル/シリアルプログラミングに関するピンアサインを示します。 ATtiny2313など20ピンのデバイスにはライターの信号線を兼用するピンがあります。PAGEL/BS1, XA1/BS2です。本ライターは20ピンのデバイスが設置されると、自動的にこれらの信号線をそれぞれ1本に共通化して動作します。 ターゲットデバイスへ供給する電源5V/12VはPNP型トランジスタで制御します。そのため、ライターの5V-CTRLピン/12V-CTRLピンは負論理となります。
|
作り方 | ||||||||||||||||||||||
概要で説明したように、本ライターにはAVR(ATmega88P)を使用しています。従って、現在何らかのAVRライターを持っているかどうかで、本ライターの作り方が異なります。
ライター本体となるATmega88Pは、8MHz動作(内蔵8MHz/分周なし)にヒューズを設定してください。 その他はデフォルト値のままです。Fuse Lo:0xE2 Hi:0xDF Ex:0xF9 (*) FT232Rモジュールのジャンパー設定
FT232RにしろCP2103などにしろ、USB-シリアル変換モジュールのドライバは、お使いのPC環境に合った最新版をインストールすることをお勧めします。バージョンの確認方法などは各ICメーカーのサイトをご覧ください。 |
ソフトウェア | ||||||||||||
本ライター FTHVWの書き込みソフト ftmhvw.exeです。
zipファイルの中身
本ライターは、ライター本体であるATmega88Pを8MHzで動作させ、38400bpsで書き込みソフトと通信します。 2015/05/24 追記 ftmhvw.zipにATmega328P用のファームを同梱しました(avrhvw_328p.hex)。 ライター本体としてATmega88Pの代わりにATmega328Pを使用することができます。 ATmega328Pも8MHz動作(内蔵8MHz/分周なし)にヒューズを設定してください。Fuse Lo:0xE2 Hi:0xD9 Ex:0xFF 参考資料 AVR_High-Voltage_Serial_Programming_Instruction_Set.txt ↑8ピンAVR 高電圧シリアルライターの命令一覧です。AVRのデータシートはPDF形式で、コマンド一覧は表形式で記述されています。これを行単位でコピー&ペーストすることはできないので、手作業で整形し、テキストファイルに保存しました。自分で書き込みソフトを作ろうと思っている人には、少し役立つと思います。 |
使い方とオプションスイッチ | ||||||||||||||||||||||||||
ヘルプ画面 ……。見ての通り「雰囲気英語」です。オプションの意味が思い出せればよし。※日本語だと文字数が多くて画面に収まらない。 使い方とオプションスイッチは拙作AVRライター「FTAVRW」と同様です。※元々はavrsp.exe(ChaN氏)を参考にしています。 ターゲットデバイスの設置と取り外し 本ライターはターゲットデバイスへのアクセス中のみ電源(5V,12V)をオンにし、処理が終わると電源オフにします。 本ライターがコマンドプロンプトで入力待ちの状態にあるとき、ターゲットデバイスは電源オフになっています(回路図のLED2:busyが消灯)。このときターゲットデバイスをソケットに設置したり、取り外したりできます。アクセス中(同・点灯中)には抜き差ししないでください。 ターゲットデバイスは単独でICソケットに設置してください。※このページのトップにある写真を参考にしてください。
書き込み方法 方法1 コマンドライン入力で実行します。 'ftmhvw'の後にHEXファイル名やEEPROMファイル名を指定します。オプションスイッチも一緒に指定します。 方法2 ftmhvw.exeのアイコン/ショートカットアイコンに、HEXファイルやEEPROMファイルをドラッグ&ドロップします。オプションスイッチは別途iniファイルに記述しておきます(後述)。 ヒント/注意
>ftmhvw file1.hex file2.eep …両方ともターゲットデバイスに書き込まれる。期待通りの動作。 >ftmhvw file1.hex の後に >ftmhvw file2.eep …file1.hexは消去され、file2.eepのみが書き込まれた状態になる。 >ftmhvw file2.eep の後に >ftmhvw file1.hex …file2.eepは消去され、file1.hexのみが書き込まれた状態になる。ただしヒューズ設定でEEPROMを保護していた場合、file2.eepは消去されずにfile1.hexが書き込まれる。 オプションスイッチ
書き込みソフトの使い勝手について 通常、AVRのライターとしてはSPIライターを使用します。高電圧パラレル/シリアルライターは、どちらかというと臨時的に使う場面が多いと思います。本ライターの出番もあまりなさそうなので、書き込みソフトの操作性やUIにはあまり気を配っていません。例えば処理の進行度を示すプログレスバー的な表示はありません。 |
iniファイル/AVR定義ファイル | |||||||||||||||||||
ftmhvw.ini オプションスイッチをftmhvw.iniに記述しておくと、ftmhvw.exe実行時にそれが反映されます。 ftmhvw.iniはftmhvw.exeと同じフォルダに置きます。 iniファイルとコマンドラインに、値が違う同じオプションスイッチがあった場合、コマンドラインの方が有効となります。 例: iniファイルに'-com2'が記述されていて、コマンドラインから'-com4'を指定すると、'-com4'の方が有効となる。 avrinfo.txt FTHVWがデフォルトで対応しているAVRは下記のものですが、 ・ATtiny = 13A/2313/45/85/861A ・ATmega = 8/48/48P/88/88P/168/168P/328P これ以外にも対応させることができます。追加するAVRの定義を、決められた書式でavrinfo.txtに記述します。 avrinfo.txtはftmhvw.exeと同じフォルダに置きます。 定義するAVRはtinyシリーズ、megaシリーズを想定しています。ただし、それら全てに対応できるわけではありません。 ※実際のところ、やってみないと分からない。もし失敗してもAVRが壊れることはない(単に読み書き命令が通用しないだけ)。 ※もちろんピンアサインを合わせた上での話。特に5V/12Vのピンを間違えないこと。 書式 下記内容を1件1行で書きます。
記述例 ATtiny2313とATmega328Pの定義。
|
部品について |
MAX662Aは5V→12Vの昇圧用ICです。 5Vを12Vに昇圧するには様々なICや回路があります。ここでは、部品数が少なく小型であるMAX662Aをお勧めします。秋月電子では8ピンDIPの形で使いやすくしたモジュールが販売されています。 ACアダプタなどで12V電源を別途用意せず、5Vから昇圧することのメリットは、電源が1つで済むということ自体と、on/offの制御が5Vでできることです。マイコンで高電圧(12V)を受け流す必要がありません。 ※ダーリントン接続が不要な分、トランジスタを削減できます。 LEDは動作確認のために付けています。無駄に明るくする必要はありません。一覧に挙げた電流制限抵抗R1,R2の値は、LEDのVF = 2.0V と仮定した例です。 |
部品名 | 部品番号 | 値 | 個数 | 参考価格/備考 |
MAX662Aモジュール | U1 | MAX662A | 1 | 400円(秋月電子) |
AVR(マイコン) | U2 | ATmega88P | 1 | 160円(秋月電子) |
デジトラ PNP型 | Tr1,Tr2 | RN2205 | 2 | 10個100円(鈴商) |
積層セラミックコンデンサ | C1,C2 | 0.22uF [224] | 2 | 10個100円 |
積層セラミックコンデンサ | C5,C6 | 0.1uF [104] | 2 | 10個100円 |
電解コンデンサ | C3,C4 | 10uF/25V | 2 | 1個20円 |
電源LED/動作確認LED | LED1,LED2 | -- | 2 | 色と形は好みで |
LEDの電流制限抵抗 | R1 | 470Ω [黄紫茶金] | 1 | 明るさは好みで |
LEDの電流制限抵抗 | R2 | 1kΩ [茶黒赤金] | 1 | 明るさは好みで |
USB-シリアル変換モジュール | -- | FT232Rモジュールなど | 1 | 950円(秋月電子) |
ZIFソケット または 丸ピンICソケット |
-- | -- | -- | お好みで |
◆ ◆ ◆ |
AVR高電圧パラレルライターの自作例をネットで検索したところ、 (1) LPTポートを使ったもの (ELM/ChaN氏) (2) USB機能内蔵でブートローダ書き込み済みの市販AVRボードを使ったもの (サイト) の2点しか見つかりませんでした。※2011/12現在 自分はこれまでに、FT232Rモジュールを利用したSPIライターを製作しています。その流れから (3) USB-シリアル変換モジュールを使ったもの …を製作しました。 モジュールを活用することにより、シンプルでコンパクトなものが出来ました。 |
(C) 『昼夜逆転』工作室 | [トップページへ戻る] |