2011年10月 マイコンにプログラムを書き込むにはライター(書き込み器)を使います。 ライターは自作することができます。その際、ハードに合った書き込みソフトが必要です。 今回、FT232Rモジュールを使ったAVRライターと書き込みソフトを作りました。 ソフトは導入の手間がなく、いきなりドラッグ&ドロップで使えるほど簡単です。 シリーズ記事 #1 ドライバのインストールからソフト開発まで #2 ビットバンモードでLCDモジュールを制御する #3 FT232-AVRライター とにかく導入が簡単 #4 ビットバンモードで7セグを制御する
2020/04 追記 v1.21bに更新。同梱のftavrwgをv1.10に更新しました(不具合修正)。 |
FT232-AVR Writer | ||||||||||
FTAVRW : FT232-AVR Writer
FTAVRWはFT232Rモジュールを使ったAVRマイコンのライターと書き込みソフトです。 AVRライターとしての基本機能はもちろんのこと、常用するに耐える速さと手軽さを備えています。 定義ファイルを記述すれば、ユーザーが自分で書き込み対応AVRを増やせるという特徴があります。 また、HIDaspx(千秋ゼミ)を作るための、最初に使うAVRライターとしても有効です。
左(オレンジ)はAtom搭載ネットブックを使用した例です(WindowsXP/SP3)。 1MHz動作のATtiny2313に、プログラムコード2KBとEEPROMデータ128byteを書き込み、ベリファイして3秒。 中(紫)はCore2DuoのPC環境です。1MHz動作のATmega88Pに、同8KBと同512byteで12秒。8MHz動作では5.4秒。 右(紫)は、1MHz動作のATmega328Pに、同32KBと同1024byteで41秒。
2011/10 追記 FTAVRWにGUIを用意しました。上記ダウンロードファイル「ftavrw.zip」に同梱してあります。 テキストファイルの説明書はありません。オンラインマニュアルをこちらからどうぞ。→FTAVRW-GUI 操作説明書 |
基板で仕上げる場合 | ||
配線図
※上端の細々した線はVCC,GND,I/Oのメモ書きです。配線には関係ありません。 ブレッドボード上で再現するより少し丁寧に作ります。 SCK/MISO/MOSI/RESET線には過電流対策に100Ω程度の抵抗を入れます。 LEDは、SCK/MISO/MOSIの3線に付けても全て同時に点灯しているようにしか見えないので(高速な送受信であるため)、動作確認用としてはSCKに付ければ十分です。 コネクタ(6ピンのピンソケット)の信号の並び順は配線の都合で決めました。準拠した仕様などは特にありません。 FT232Rモジュールの取り付けには24ピン600milのICソケットを使用します。平ピンより丸ピンの方がよいと思います。 ミニUSBコネクタはモジュールの向きを示すために描いたもので、実際に部品を取り付けるわけではありません。 電源は5V/3.3Vをジャンパーピンで切り替えられるようにします。小型スイッチにしても構いません。 ターゲットAVRに電源を供給しない場合は両方ともジャンパーピンを外します。 FT232RモジュールはI/Oピンからの出力を5Vにするか3.3Vにするか、モジュール上のジャンパーピンで設定できます(詳しくは製品付属の説明書を見てください)。ターゲットAVRへ供給する電源電圧に合わせ、I/Oピンの出力電圧も変更しましょう。そうすれば電位差によるAVRの故障を未然に防げます。 |
使い方とオプションスイッチ | ||||||||||||||||||||||||||||||||||||||||
ヘルプ画面 ……。見ての通り「雰囲気英語」です。オプションの意味が思い出せればよし。※日本語だと文字数が多くて画面に収まらない。 使い方とオプションスイッチはavrsp.exe(ELM/ChaN氏)を参考にしています。※現時点で私が常用しているライター。 HIDaspxの書き込みソフトはavrsp.exeを拡張したものです。従ってFTAVRW(当ライター)でHIDaspxライターを作る人は、その後戸惑うことなくそちらへ移行できます。※書き込みソフトの使い方やオプション指定がほぼ同じ。 使い方:書き込み方法 方法1 コマンドライン入力で実行します。 'ftavrw'の後にHEXファイル名やEEPROMファイル名を指定します。オプションスイッチも一緒に指定します。 方法2 ftavrw.exeのアイコン/ショートカットアイコンに、HEXファイルやEEPROMファイルをドラッグ&ドロップします。オプションスイッチは別途iniファイルに記述しておきます(後述)。 ヒント/注意
ターゲットAVRからISPケーブルを抜かずに、AVRの動作を開始することができます。いわゆる「ライターを論理的に切り離す」機能です。コマンドラインから「go」コマンドを入力します。例: ftavrw go 動作中のAVRを書き込み待機状態に戻すには「stop」コマンドを入力します。例: ftavrw stop ただ、「stop」コマンドを実行せずとも、AVRの動作中にいきなりhexファイル/eepファイルをドラッグ&ドロップしても書き込みはできるので、「stop」コマンドはあまり使わないかもしれません。
オプションスイッチ
ボーレート(通信速度)の設定について 「-brオプション」 FTAVRWはAVRとの通信において、送受信タイミングの待ち時間(ディレイ、ウェイト)を指定するのではなく、通信速度そのものを指定することが特徴です。オプションスイッチ'-br'でボーレートを直接指定する他、9600bpsの何倍かで指定することができます。※FT232Rのボーレートのデフォルトが9600bpsなので、単にそれを基準とした。 具体的な通信速度はターゲットとなるAVRの動作クロックによります。 FTAVRWのデフォルトは28800bps(9600*3)で、「-br28800」または「-br3」と指定したのと同じです。 これは1MHz動作のAVRと安定して通信できる速度です。 直接指定 最大115200bpsまで指定できます(9600*12=115200)。指定値は4800単位で丸め込まれます。 4800bps未満を指定することもできますが、そこまでの遅さが必要な場面はないと思います。 指定値の大きさと書き込み時間の短さは比例しません。ある程度大きな指定値で頭打ちになります。 倍数指定 1~12倍で指定できます(9600~115200bps)。0倍は1倍指定と同じになります(エラーになりません)。 直接指定に比べて感覚的な指定方法です。 【参考】 AVRの動作クロックが4MHz以上の場合、最大速度(115200bps)で通信できました。 1MHzの場合、28800bps(9600*3)で通信できましたが、38400bps(9600*4)では通信できませんでした。 184kHzの場合、4800bpsないし9600bpsで通信できました。 ※いずれも開発環境において、ATtiny2313へ書き込みテストした結果。 2012/08 追記 v1.08で'-ftl','-ftw'オプションを追加しました。開発環境を含む2台のPCにおいてデフォルト値で安定動作しています。しかし他のPC環境では動作が不安定かもしれないので、適宜調整してください。設定値を導き出す計算式のようなものは特にないので試行錯誤してください。
|
iniファイル/AVR定義ファイル | |||||||||||||||||
ftavrw.ini オプションスイッチをftavrw.iniに記述しておくと、ftavrw.exe実行時にそれが反映されます。 ftavrw.iniはftavrw.exeと同じフォルダに置きます。 iniファイルとコマンドラインに、値が違う同じオプションスイッチがあった場合、コマンドラインの方が有効となります。 例: iniファイルに'-br5'が記述されていて、コマンドラインから'-br10'を指定すると、'-br10'の方が有効となる。 avrinfo.txt FTAVRWがデフォルトで対応しているAVRは下記のものですが、 ・ATtiny13A/ATtiny2313 ・ATmega8/ATmega48/ATmega48P/ATmega88/ATmega88P/ATmega168/ATmega168P/ATmega328P これ以外にも対応させることができます。追加するAVRの定義を、決められた書式でavrinfo.txtに記述します。 avrinfo.txtはftavrw.exeと同じフォルダに置きます。 定義するAVRはtinyシリーズ、megaシリーズを想定しています。ただし、それら全てに対応できるわけではありません。 ※実際のところ、やってみないと分からない。もし失敗してもAVRが壊れることはない(単に読み書き命令が通用しないだけ)。 ※もちろんピンアサインを合わせた上での話。 書式 下記内容を1件1行で書きます。
記述例 ATtiny2313とATmega328Pの定義。
|
FT232Rモジュールを利用してAVRライター(AVRマイコンの書き込み器)を作りました。
ハードの配線が少なく、ソフトの導入も手間がなく、簡単に使えます。
AVRに興味はあるが、ライター購入費が惜しいので自作したい、しかしソフトの設定が面倒くさい、
…そう思っていた人は是非「FTAVRW」を試してください。
HIDaspxライターの一番早い作り方 | |||||
USB接続の自作AVRライターとして人気のHIDaspx。 自作するにあたり、それ自身にAVR(ライターのプログラムを書き込んだATtiny2313)を使うので、じゃぁそのAVRへはどのライターで書き込むの?
という「鶏が先か卵が先か」の問題が生じます。そのため、AVRライターが別途必要になります。そこでFTAVRWを使います。 準備 FTDI社のサイトからFT232Rのドライバをダウンロードし、インストールする。シリーズ記事#1を参照。 FT232RモジュールがPCに認識されていることを確認しておく。※デバイスマネージャを見て確認。 手順1 HIDaspxのファームをダウンロード(千秋ゼミ)、任意のフォルダに解凍する。 「main-00.hex」が必要。00は適当な数字。(\hidspx-2011-0000\bin\firmware\main-00.hex) 手順2 FTAVRWをダウンロード(このページの先頭にあり)、任意のフォルダに解凍する。 手順3 FT232RモジュールとATtiny2313を配線図の通り配線する。ブレッドボード上でOK. FT232RモジュールをPCのUSBコネクタに接続する。※モジュールが自動的に接続確認を開始する。約5秒待つ。 手順4 ftavrw.exeにmain-00.hexをドラッグ&ドロップする。※オプション指定やiniファイル編集は不要。 ATtiny2313へ書き込みが始まる。数秒で完了する。 手順5 ヒューズバイトを書き換える。HIDaspx回路図の指示は Lo=0xFF, Hi=0xDB, Ex=0x01。 コマンドプロンプトを開き、下記の通り入力する。白文字部分をコピー&ペーストすればOK.
これでHIDaspxのファームが書き込まれたATtiny2313ができました。 あとはこのATtiny2313を使ってHIDaspxライターの回路図通りハードを製作するだけです。 |