プログラムライタ と ライティングソフト 06.05.29
プログラムライタとライティングソフトをまとめました。
このページはAVR学習の入り口に立つ人に読んでいただくために書いています。
AVRを一通り理解されている方には内容の乏しいものとなっていることをご了解下さい。
ハードウエアについてはオリジナルを適当にアレンジした試作品を紹介しているだけで、
また、ソフトウエアについては私が理解できた範囲内での使い方を例示しているだけです。重要な機能を見落としている可能性は十分あります。
同時にソフトウエアの解説をしているつもりはありませんので偏った、不十分な記述になっている危険性があります。
明らかな間違いを指摘していただくことはうれしいのですが、不足分については修正に応じかねるところがあろうかと思います。
初心者の方が実験例として気楽に読み流してくれれば目的が達せられたと考えています。
私の記述についての感想・質問は掲示板にお願いします。それぞれの項目についての詳しい内容については原典をご研究の上原典のサイトへ感想・質問をしていただくようお願いします。
===========================================================================================
ライタ
時の流れとともにライタも移り変わります。作ったことのあるものをすべてあげました。 (使用OSはwinXP)
古いものは原作者の変更によりリンクが切れているものがあります。
COMポートがなく、ライタなしで初めてのライタ自作を考える方には HIDaspxライタ か FT232RLライタ を薦めます。USB-シリアル変換ケーブルとCOMポートライタの組み合わせはトラブルが多いので使わない方がいいでしょう。
ライタ雑感
|
暫定報告 USBaspハードウエア ファームの書き換えでUSBasp,USBaspx,AVRminiProgになる
FT232RL単体のライタ Bitbangライタ ライタとシリアル通信機能の実験
PIC18F14K50を使ったライタ(pic18spxライタ)
特別編 最小機能HIDaspxライタ 大阪で一番やさしい作り方
HIDaspxライタ デバイスドライバのインストールが不要なUSBライタです。
シリアル番号について
AVRminiProgライタ AVRISP mkUとしてAVRstudioで使えるのが特長です
COMポート接続ISPライタ 他のライタがないときに作りやすいライタです。PCにCOMポートが必要です。
COMポートSPI Bridge ライタ COMポート使用の使いやすいライタです。giveio.sysは不要です。
COMポートSPI Bridge ライタ2 ws☆Nakさんの#173ライタ
ChaNさんのオリジナル改良で成長したライタになりました
USB-SPI Bridge ライタ USB-シリアル変換にcp2102を使います。
USBasp ライタ USB専用ICを使わずATmega8一つのUSBライタです。mega48,88.168用の改良版もあります。
USB-SPI Bridge ライタ2 USB-シリアル変換にFTDI-FT232BMを使います。
にわとり−たまご ライタ シリアルポートのないPCでUSBaspのファームを書くライタです。
----- 以下は制作して使いましたが、今ではお勧めできないライタです -----
AVR910 ライタ ATMELアプリケーションノートによるものです。
FTDI232BM+AVR910 ライタ USB接続に換えてみたものです。
LPTポート制御 ISPアダプタ 私が最初に作ったライタです。
※USBのみのPCでは、ライタがないとライタ作りは困難です(初めての場合)。USBasp ライタをお貸しできます。ご相談ください。
===========================================================================================
ライティングソフト
avrspx.exe ChaNさんのソフトavrsp.exeをUSBaspにも対応できるようにkkkさんが拡張したものです。
hidspx.exe 上記avrspx.exeをHIDaspxにも対応できるようにsenshuさんがさらに拡張したものです。
avrdude-GUI[YCIT版] avrdudeを独自に機能拡張し、さらにavrdudeをGUIで操作するavrdude-GUIがセットになっていま
す。これを利用
すれば、同一操作で多数のライタを利用できます。
avrdude オリジナルUSBasp指定ソフト。使いませんが使用法を調べましたので残します。
HAG hidspxのGUIツール。再掲載 2009.05.22 機能限定版、日本語、カラー表示
===========================================================================================
その他
3.3Vのターゲット
コンパイルとAVRへの書き込み WinAVRとhidspxでプログラム作成から書き込みまでの手順
===========================================================================================
暫定報告 USBaspハードウエア 2011.08.09 ファームの書き換えでUSBasp,USBaspx,AVRminiProgになる
同じハードウエアでファームウエアの変更で3種のライタとして使える(千秋ゼミ)ということ、古いUSBaspとAVRminiProgについて書いてきたこと、関係のV-USBが更新されていること、mega8は最近は使われなくなっていること、などがあって特に必要とはしていませんがmega88を使った最近のものを作ってみることにしました。
回路は原典から、LEDの赤と緑を入れ換えたこと(準備完了:緑 通信中:赤に)、ISPコネクタを6ピンにしたこと、usb通信電圧リミタに青LED(6V,1kΩでVf=2.56V)に変更したこと、などがありますが D-:PB0 D+:PB1/PD2(INT0) の接続は変更していません(他の接続方法もあるようですが)。
電源はバスパワーでUSBがら取ります。5V専用となりますが書き込みポートに220Ωを入れていますので経験的に3Vターゲットでも使えると思います。
ヒューズは fL0xD6 fH0xDD fx0xF9 と設定しています。
今後、mega168やmega328で置き換えられるように直付けでなくソケットを使用しました。なお、余談ですがエッチングのマスクはパイロットのマルチボール「水に強い」を使ってフリーハンドで書いています。このボールペンは前のものと違って\120のものです。少しなら塗りつぶしもできます(前のものは乾くとめくれました)。エッチング液に対する耐水性も素晴らしく黒マジックやマーキー青の比ではありません。確実にマスクできます。誤って塗ったら----消しにくいと思います。ナイフで削り取るのが確かでしょう。
バイパスコンデンサはセラミックの10μFを使いましたので0.1μFは省略しています。水晶の負荷コンデンサも省略していますが支障なく動いています。不都合があれば追加します。
USBaspとして試運転:
USBaspの本家fischl.deからusbasp.2011-05-28.tar.gz (519 kB)をダウンロードしました。
このファイルを解凍し得られる usbasp.atmega88.2011-05-28.hex をファームウエアとして書き込みます。
このライタはavrdudeで使いますから avrdude-GUI でテストします。 programmerに usbasp を選びます。チップ情報の読み取りやプログラムダンプが正常に動きました。
また千秋ゼミの改良版のファームウエア(AVRdude\avrdude-2011-RC8aに含まれる main-m88.hex)に書き換えました。簡単なテストで変更内容まで確認できませんがチップ情報の読み取りとプログラムダンプは正常に行われました。時間をみて改善点の確認をしたいと思います。
AVRminiProgとして試運転:
本家のSimonQianを訪ね、AVRminiProg RC2 (2008-03-10)をクリックして
AVRminiProg.zipをダウンロードしました。
これを解凍して適当なフォルダに収め、
app_cfg.hを開いて、#include "app_cfg_USBasp.h"を有効にし、#include "app_cfg_Full.h"をコメントアウトします。
続いて、default フォルダにある Makefileを開き、MCU を atmega88に変更します(mega88pでも)。
defaultフォルダでコマンドプロンプトを開き make clean, make を実行すると AVRminiProg.hex ができました。
(以上はラジオ少年さんからの情報。多謝!)
PCに接続すると(過去にAVRstudioをインストールしてあるので)認識して、デバイスマネージャーを開くと jungoの下にAVRISP mkUが現れます。
avrdude-GUI programmerに avrispmkII を選びますとチップ情報の読み取りやプログラムダンプが正常に動きました。
また、上記USBaspと同様に千秋ゼミの改良版のファームウエア(AVR/avrdude32のAVRminiProg_TEST-RC3i.zip)に書き換えました。
app_cfg.hの #include "app_cfg_USBasp.h" が有効になっていること、makefileのmcuが atmega88 になっていること、を確認してコンパイルします。
生じた AVRminiProg.hex をこのライタに書き込みました。
簡単なテストで変更内容まで確認できませんがチップ情報の読み取りとプログラムダンプは正常に行われました。
USBaspxとして試運転:は別項とmcuが違っているだけですから行っていません。
冒頭に書きましたように、ハードウエアは試作品を紹介しているだけであり、ソフトウエアについては実行してみたものとできると思うものを例示しているだけです。ソフトを解説しているものではありません。
FT232RL単体のライタ Bitbangライタ 2010.07.10 にわとりたまご問題解消
ビットバンモードを利用してシリアルプログラミングするものです。すzさんが研究されてきたようですがsenshuさんのavrdudeの改良のなかで報告されています。
秋月のブレッドボード用基板にハンダ付けされた完成品を使うとこれとブレッドボードだけでAVRにプログラムを書くことができます。多くのAVRライタはプログラム書き込み済みのAVRが必要なためにUSB-IOしか持たないPCに取っては最初の1歩に問題がありました。
このライタはこのFT232RLとavrdude-GUIがあれば他の力を借りることなく書き込むことができます。(尤も私がはじめた頃は−−今もですが−−プリンタポートやCOMポートがありますから抵抗だけや、ロジックICで作れるプログラマを使ってきました)
手元にUSB-シリアル変換のためにFT232RLを使った自作ボードがあるので、かつ、ライタは何種もあるので確認をしたかっただけですから完成品のFT232RLは購入せずに自作ボードにIOを増設(取り出し口を付け足す)することで実験しました。
当初は、Txd、Rxdなどを使う接続法で試してみましたがうまく行かず、他のIO利用で動きましたのでそれだけを紹介します。
ここから先は、「こうしたらライタとして使えました」という一例の報告としてお読み下さい。(私にはわからないことが多くあります)
ハードウエア:
FT232RLから次のIOを直接引き出しただけです(この例ではデフォルトで入力になるためにAVRと衝突−−短絡−−する心配が無いそうです)。
ライタとしての端子 | FT232RLの端子 |
miso | 11番 CTS |
sck | 9番 DSR |
mosi | 10番 DCD |
reset | 6番 RI |
(追加)信号回路に 220Ω×4 の保護抵抗を入れました。
ソフトウエアとその使い方:avrdude-GUI[YCIT版] に書いています。
FT232RL単体のライタ 専用機の製作 2011.05.04
COMポートのないPCで、USBを使ってAVRのプログラマを是非自作したいという希望を持っておられる方を多く見受けます。多くの場合に秋月の変換ケーブルとCOM接続ライタで試みられるようですが変換ケーブルの制約で成功しない場合が多いと聞きます。「鶏たまご問題」を解決する方法はいくつか報告されていてこのページでも紹介はしていますが困難点はあるようです。それで今は2つの方法を薦めています。一つは書き込み済みのTiny2313をお送りしていますのでそれを使ってHIDaspxライタを作る方法で最も経済的かつ安定して自作することができます。他の一つはFT232RLライタで上記のものです。お勧めする以上はすっきりしたものをお見せしたほうが良いかと考えて手持ちのICで専用機を作ってみました。
回路を簡単にするために5V専用としてパイロットランプも省略しています。
今回作ったものの外観と回路図をupしておきます。ハンダ付けが好きでない方は秋月でハンダ済みのモジュールを買うとブレッドボードで書き込むことができます。
--------------------- FT232RLライタの項 終わり ------------------
PIC18F14K50を使ったライタ(pic18spxライタ) 2010.04.10
注意! 最近の変更は pic18spx の項目に書いていますので必ず合わせてお読み下さい。
irukaさんが作ったAVRライタです。他の機能もありますので別項にも書きましたが、ライタの部分だけを取り出してここにもあげておきます。
特長は、
@制作費が安く(PIC18F14K50 \200)、回路が簡単であること、
APICを使うにもかかわらずHIDaspxがあればファームを書き込めること、
BAVRへの書き込みが高速であること、
CPIC18とPIC24(一部)にも適用できること、
Dブートローダによってファームの書き換えが簡単であること、
などがあげられます。
左がPIC18F14K50を使ったもので、右は同時に開発されているPIC18f2550を使ったものです。
よくわからない内は余裕のある基板に組み立てることにしています。ライタ機能に限るなら約半分の基板に組めそうです。
回路図を示します。原典からの変更はほとんどありません。
ブートローダを書き込むためにISPコネクタを付けてありますが、ブートローダファームに変更がなく他の方法でブートローダファームが書き込めるならばこのISPコネクタはなくても良いでしょう。ライタファームが更新されてもブートローダで処理できるからです。
リセットスイッチは、私のPCは電源を切ってもUSBの電源は切れません。接続したままPCがスタンバイモードになってそれから復帰するときにライタを認識しなくなります。USBソケットを脱着すればいいのですが、めんどうなのでリセットスイッチを押すことにしています。また、ブートスイッチは、これを押してリセットするとブートローダモードになります。通常のリセットではライタに制御が移りますが、ブートローダを起動してファームの書き換えをするときはこのスイッチが必要になります。ソフトでも起動でいるようですがエラーが出ますのでこのスイッチの方がすっきりします。(やがてソフトで問題なく切り換えられるようになると思います)
ハードウエア7番ピンPGMはLVP(高電圧を使わないプログラム)では 4.7〜10k でプルダウンが必要です。
17番ピンVUSBは3.3Vのレギュレータ出力端子とのことで 0.2〜0.47uF でバイパスします。0.3がよく使われるようですが手持ちの都合で0.1にしてあります。
水晶の負荷コンデンサはなくとも使えるという報告もありますのでテスト的に省略しています。問題があれば追加する予定です。
関係ファイルについて
関係するファイル群はirukaさんのサイトにあります。今までアーカイブの場所を紹介してきましたがそのためにirukaさんがアーカイブの名付けに苦労されておられますので紹介をやめて、以下の実験に必要なファイルをまとめたものをファイル群としてここに置きます。irukaさんの了承はこれからですが、実験のためにはこの方が使いやすいと思いますので変更します。
初歩の実験が済みましたら、ファイルの更新もありますから、正式にirukaさんのサイトを訪れて理解を深めていただきたいと考えています。
@ loader-18F14K50.hexというローダーファームを、PICspx.exeライティングソフトでHIDaspxハードを用いて、コマンドプロンプト上で書き込みます。
A picmon-18F14K50.hexという名のAVRライタ/PICモニタファームを、picboot.exeをコマンドプロンプト上で起動して書き込みます。
B picspx-gcc.exeをコマンドプロンプト上で実行してAVRの読み書きをします。
C picwrite.exeを使うとPIC18F14K50の読み書きができます。
ということになります。
太字で示したファイルにpicspx-gcc.iniを加えたものを単独のフォルダ(パスが通っている方が良い)に保存すると便利です。
ブートローダの書き込み
ライタボードに電源を供給します。このときは3.3Vで行いますのでUSBコネクタはつなぎません。別電源を用意します。なければ乾電池2個の3Vでも良いでしょう。
ISP端子にHIDaspxをつなぎます(3.3Vが望ましい。書き込み回路に100Ω程度が入っていれば5V電源でも可)。コマンドプロンプトで次のように操作します。
>PICspx.exe loader-18F14K50.hex
*Device:PIC18F14K50 DEV_ID:0x4766
Erase ...
Writing ... 0800
Verify Ok.... 0800
Writing Fuse ...
WARNING: config LVP=OFF -> ON .
CONFIG: 00 32 2a 1e 00 88 05 00 03 c0 03 e0 03 40
>
書き込みとベリファイに計2分強かかりました(同じPCでも日によって時間が違うようです)。2台目からはこのPIC18F14K50で作ったライタを使いますと5秒で終わります。HIDaspxを使った長い書き込みはブートローダを1回書くだけです。
ブートローダの書き込みが終わるとUSBに接続します。bootloaderが働いているとRC0のLEDが点滅します。
AVRライタファームの書き込み
USBに接続してLEDが点滅している状態で、ブートローダを使ってライタファームをアプリケーション領域に追加書き込みします。
>picboot.exe picmon-18F14K50.hex // アプリケーションの書き込み
TARGET DEV_ID=14 VER=1.1(Bootloader)
Erase ...
Writing ... 29e0
Verify Ok.... 29e0
数秒で書き込めます
これでライタは完成です。USBをはずします。
AVRライタのテスト
USBにライタを接続します。PCはライタを認識するはずです。
AVRターゲットボードに電源を入れ、ライタリードを接続します。
ターゲットデバイスの情報を読みます。
>picspx-gcc.exe -r
TARGET DEV_ID=14 VER=1.1
Detected device is ATmega168P.
Device Signature = 1E-94-0B
Flash Memory Size = 16384 bytes
Flash Memory Page = 128 bytes x 128 pages
EEPROM Size = 512 bytes
>
>picspx-gcc.exeエンター
とすると使い方が表示されます。オプションその他については極めて hidspx と似ています(hidspxの内容が出ている?ようです)。
私のPCではターゲットが12MHzの時に読み出しが -d0 で 8kB/s弱になりました。HUBを入れると残念ながらHIDaspxより遅くなりますが、HUB無しでは俄然高速で操作は快適です。他の報告ではHUBがある方が速いそうですがPCによって違いがでるのかもしれません。
その他の操作は hidspx に準じて行えますから詳細は省略します。
なお、picwrite.exe を使って PIC18F14K50、PIC18F2550 にもファームを書き込んでみましたが高速で使えるようです。
余談
手持ちにPIC18F2550 がありましたので同様のライタを作ってみました。ライタとしてはPIC18F14K50に比べて何らメリットはないのでしょうが、正常に機能するのはもちろんです。
(2010.04.14) 常用するために小型のライタ専用機をSOICで作りました。(SOICを購入してあるのを忘れていました。)
この大きさになると狭くて混雑した机上で、他の部品の上を這わせてもほとんどコードの感覚で扱えるので便利です。ショートしないようにビニルで巻いています。(ケースに入れるのが苦手なのです)
回路は上記のものとほとんど変わっていません。ライタのインターフェイス部分は手持ちで120Ωを入れています。bootスイッチは付けていません。プルアップ抵抗は入れてあります。リセットスイッチは場所が無いので真鍮の針金をGNDにつなぎ、リセット端子から導いた接点とショートできるようにしています。USBに接続したままPCの電源が切れると再起動時に認証されないので必要です。bootスイッチは付けられなかったので、(日常は使わないことにしているVccの)2番端子に接続しています。bootスイッチの必要時にはブートローダ書き込み用コネクタの2番と6番をショートするとbootスイッチが入った状態になりますから、そこでリセットするようにしています。
このISPコネクタはブートローダの書き換え以外では使うことのないものです。
ブートローダを書き込んで(HIDaspx+PICspx.exe または この回路のライタ+picwrite.exeで)、ライタファームをローダで読み込めば終わりなのですが、ファームの版(日付)を間違えたためにエラーが続出して多くの時間を無駄にしてしまいました。
関係するファイルは最新版を確認して使用すること(確認を怠らないこと)が今回の教訓です。
HIDaspxの2倍強の速度ですから今後はこれをメインに使うことになると思います。
HIDaspxを持っていて工作好きの方には是非お勧めしたいライタです。
(2010.04.15) 付 私流SOICハンダ付け法
面実装のICは cp2102で0.5mmピッチのMLPパッケージ、AVRmegaで0.8mmピッチ、AVRtinyで1.27mmピッチのものを経験してきました。この点でPIC18F14K50の1.27mmはらくな部類になります。
ハンダ付けの最大のコツは左手の親指でUEWを正確な位置に押さえつけることにあります。これが確保されると成功したと言えます。このために基板上で親指を置く部分に他の部品があると作業は不可能になります。ICの付近には背の高いものは付けないように、UEWを押さえることを考えて配置します。
今回はらくをするために基板上ではなく前もってUEWを全てハンダ付けしました。2本付ける脚には2本を捻った線を用意しました。
まず、ICの脚にハンダメッキをしておきます。フラックスを付けると快適です。
次に、5cm角位のはがき用紙を用意して中央にICをセロテープで貼り付けます。0.2mmのUEWは数cm程度に切って、先端をハンダメッキします(高温の鏝先に新鮮なハンダをたっぷり乗せて、解けたハンダに先端から浸してゆく感じでハンダをくぐらすのがコツです)。
強めの老眼鏡をかけて(私の場合)、左手の人差し指と中指に貼り付けたICを載せて右手でUEWを左手の親指の下に潜り込ませながら先端をICの脚の上に置きます。UEWが脚に乗りすぎたり、乗り足りなかったりしないように調整します。場合によってはピンセットで位置あわせをします。
適当と判断したら倍率の大きなルーペで位置を確認します。ずれていたら修正します。
左手を動かさないように注意しながら半田鏝に新鮮なハンダを載せて一振りして余分を落とし、ハンダを流します。このときに鏝先に乗っているハンダの量が微妙です。少ないとつかないし、多すぎるとブリッジします。このときハンダ部分と左手親指の間隔は5mm程度ですから瞬間で終わらないと熱い思いをします。
今回の鏝は23Wのニクロムヒーターのものに、3mmφの銅棒の先端を鑢で尖らせたものを使いました。4mmφが通常ですが鑢がけが大変なので3mmφを使っています。銅はハンダと合金を作って溶けて行きますので鏝先の修正が必要ですがその分ハンダの乗りが良いように感じます。
先端を尖らせすぎると、ハンダは曲率半径の大きなところに付くので先端に乗りません。適当な大きさのRが必要です。
鏝先はふるえるものですが、両手を使うと震えが相殺されるのでしょうか、丁度針に糸を通すときと同じで、右手と左手の協調作業が良い結果となっているようです。ICをクランプで固定して左手のピンセットでUEWの位置あわせをして右手でハンダ付けする、というのはスマートに聞こえますが実際には困難な作業になります。
(うだうだ話にお付き合いいただき、ありがとうございました。)
特別編 最小機能HIDaspxライタ 大阪で一番やさしい作り方 2009.11.25
senshuさんが開発されたAVRのためのライタ HIDaspx と ライティングソフト hidspx.exe は製作が簡単で応用範囲の広い優れたライティングシステムと思っています。 \100円で買える(秋月)AVRtiny2313とわずかの部品で自作が可能で、おそらくUSBで使えるライタの中で最も低価格で入手できるものです。
ws Nakさんでプリント基板が用意されていますのでこれを使えば小型でスマートなものができることになっています。しかし、中には一般部品で組み立てたいと思われる方もおられるようで、参考になればと作り方のわかりやすいhidspxを考えてみました。
いままで詳細の違うものを10個を超えて作りましたが、必要最小限にしたものがこれです。
HIDaspxの原典はこちらのサイトにあります。作者のsenshuさんの言葉に「回路はすべて必要なものばかりです」とあったと記憶しています。ここでの回路・部品の省略・変更は私kumanの考えで完璧を求めず多くの場面で実用になる範囲でしています。したがってこれらに関する説明責任は私にありますのでご理解下さい。変更を発表する許可はいただいていません。使い方によっては不都合が生じるかもしれません。
特徴をかいつまんで書くと次のようになります。
・tiny2313をVcc5Vで使用すると、D+,D-信号線に3.6V程度のリミタが必要になります。ツェナーダイオードや青LEDまたはシャントレギュレータなどを使いますが、この選定がはじめてでは気になります。これを避けるために電源回路に赤色LEDを挿入して電源電圧を3.2V程度に下げています。
・原典にはUSB-IO機能との切り換えスイッチ、インジケーターLEDなどがありますが最小のライティング機能に絞って省略しています。
・入出力信号レベルはターゲットボードのVccが3.3Vの時は最適ですが、出力はVccが5Vの時もHドライブはかろうじてできているようで(理論値は2.5〜3.0V?)、H入力は2313のVccを2V弱上回りますが保護抵抗とIC内の保護ダイオードで対応できているのではないかと思います。
・書き込み済みのtiny2313が必要ですが、「にわとりたまご」ライタで書くのも一つの方法ですが、知り合いから書き込み済みを入手するのが最適です。困難なときはメール(kuman2600アットマークgmail.com)にご連絡下さい。ゆうちょに\200お振り込みいただければお送りします。
まずは準備する部品です。
原典では100Ω×4ですが、手持ちで150Ωを使っています。また、原典では75Ωのところを82Ωを使っていますが50〜100くらいは使えるようです。
書き込み用コネクタ(ISPコネクタ)は3×2の6ピンのピンソケットです。パーソナルコンピュータのフラットケーブルのコネクタを6ピンに切り取って鑢がけして使っています。
コネクタの差し込み口から見て
となっています。
AVRの6ピンでの標準接続です。上の写真で、コネクタの上端に背景色とよく似たラインが見えるでしょうか。1番ピンのマークとして付けています。
USBコードは100均の品物を切り取っています。使用環境に合わせて適当な長さとします。私は机上にUSBハブを置いていますので短い方が便利です。
万能基板は規模に比べて大きすぎますが、初めてですから余裕を持って作ることにします。一つ成功すれば必ずスマートなものを作りたくなりますから、「動く」ことを第一に製作します。
回路図はつぎのとおりです。
部品を適当に配置して、裏面でハンダ付けします。
回路図を見ながら配線を考えて見ました。リードの余分を配線に使うのは極力避けています。部品取り替えまたは分解時に楽をするためです。
上の図を参考に配線します。日頃は0.26mmのUEWを使うのですが、今回は見やすくするために0.4mmほどのUEWを使いました。
最後にUSBケーブルとISPケーブルをハンダ付けします。
最後に裏面のショートを避けるためにウレタンフォームを両面テープで貼り付けて足をつけています。
配線チェックが終了したら、電源端子(UDBの赤+、黒-)にテスタをつないでショートしていないことを確認します。さらに丁寧にするにはUSBでない別の5V電源につないで消費電流を見ましょう。私の場合は 4.6mA でした。
回路図の赤色部(青または白のLED Vf=3.0〜3.4V)を追加して、赤色LEDをショートすると5Vターゲット用になります。初期の状態で成功したら変更にチャレンジしてください。なお、この部分をスイッチで切り換えると5V、3.3Vとも安心して使えます。
ソフトウエアの使い方については別項の 初歩のhidspx をご覧下さい。
お読みいただいた方、ご連絡をお待ちしています。http://geocities.yahoo.co.jp/gb/sign_view?member=kuman2600
HIDaspx、hidspxをお使いになった方は是非原作者senshuさんのページに感想や長所短所などお寄せいただくようお願いします。どんな些細なことでも、作製・使用報告でも結構です。
2009.11.26 5V動作と電圧リミタLED
Vcc5V動作は過去に、使えるコンピュータとそうでないものがあると報告されています。私のものを調べるために、電源電圧降下用赤色LEDをショートするスイッチを取り付けました。コンピュータのUSB端子に直結しますとHIDaspxを認識しません。私のPCは5V動作は不可のようです。
ところが、2種類所有しているUSBハブを使うといずれも認識します。微妙な違いがあるようですが規格では5V動作は保証されていません。
そこで電圧リミタLEDを追加しました。手持ちの高輝度白色LED(公称Vf=3.0〜3.4V、実測は5V電源330Ωシリーズで2.8V)を回路図の赤色部に追加しました。結果はgoodでPC直結でも読み書きが可能になりました。青色LEDが常識ですが、廉価な白色LEDは 青色+黄色蛍光 と聞き及びますので白色でも良いのでしょう。使う場合には仮付けして不具合があれば同じ色であっても他種のLEDに交換してみるのが良いと思います。
この方法にはおまけがあって、D-側は常時点灯し、D+側は通信時だけ点灯しますので接続のインジケータランプと通信のインジケーターランプとして楽しく使えます。
(2009.12.24)原典の回路には、バスパワーの電源回路に3.3Vの三端子レギュレータが入っています。これを使うと@USBデータ回路の電源電圧が規定値になって青色LEDを入れなくても問題が生じない、Aバスパワーをターゲットに供給したとき過大な電流が流れると電流制御回路がはたらきPCに影響を与えない、という利点があります。
しかし、3.3V三端子レギュレータは一般に手持ちが少ないこと、場合によってはLDOタイプが必要で、かつ、この場合には発振防止用のコンデンサに気をつかわなくてはならない、その上に、5Vターゲットに対してのドライブ不安は赤色LEDによる電圧降下と変わらない、という点から簡単に作ることをモットーにレギュレータを省いています。
原典の回路の完璧性を求めたものではなくとりあえず緒につくものを目的にして、その完成後に完璧なものに取り組むという姿勢で考えていることをご理解下さい。
HIDaspxライタ 2009.05.16更新
HID は Human Interface Device の略でキーボードやマウスなどのデバイスをさすものです。このクラスはOSがデバイスドライバをあらかじめ準備しているので特別にデバイスドライバを用意することなく使えます。インストール禁止の場合に重宝するライタです。
このライタは V-USB が基本になっているようで、びんずめ堂さんの原作を、senshuさんがデバイスドライバインストール不要の利点に着目して研究・改良して使いやすくて速度の速いライタに改良されたものです。この間、森芳電子さんのライタも参考にされています。以前からこの研究をしていたirukaさんの協力を得てほぼ完成の域に達したと理解しています。
なお、ハードウエアは D-のプルアップ回路を除いてこれら3者は同じ回路になっているようです。
ソフトウエア・回路図・その他の資料はAVR/HIDaspx_news02の「最新のHIDaspx関係ファイル[Download] 」の表の hidspx-20yy-mmdd.zipに含まれています。
hidspxは avrsp → avrspx → の流れから作られたものですからコマンドプロンプトのコマンドライン操作のものですが同梱されているラッパでGUIも可能です。
HIDaspxライタ制作例
ダウンロードで得られる上記の HIDaspx-2009-0420.zip に回路図がありますが、できるだけ簡単にかつ通常の使用に耐えている(保証はできませんが)4台目として作ったものをあげておきます。Tiny2313はSOICの小さなものを使いましたが、水晶はデジットで\10の大きなものを使っています。最近遊び心で生基板にプラスチックカッターでパターンを刻んだものを使っていますが、万能基板にDIPタイプのTiny2313を使って余裕のある組立をすると簡単にできると思います。
この製作物の特徴などをあげてみます。
1 USBケーブルはジャンク屋で見つけたスリムタイプを適応に切って直づけしています。
2 抵抗類は手持ちを流用していますので正しくは原典を参照してください。
3 ライタの電源はUSBから取っています(バスパワー)。しかし、ターゲットには供給していません。
4 電源のパスコンは10uFのセラミックコンデンサを使用しています。電解なら並列に0.1uFセラミックが必要です。
また、経験的には 0.1uF だけでもトラブルは起こっていません。
5 resetの外部プルアップ抵抗は省略しています。10kでプルアップしておく方が安全でしょう。コンデンサは禁物です。
6 3.3Vのターゲットにつなぐために電源を降圧するダイオードを入れてスイッチで切り換え約3.5Vを得ています。
実際には5Vのまま書き込み信号を送っても出力回路に120Ωがありますから、ターゲット入力回路の保護ダイオードが
14mAに耐えてくれると3.3Vの勘定になり、問題がなくなるのではないかと素人考えをします。
7 USB信号回路D+とD-の信号電位については、ともにmax3.6Vのようです。中には5Vになっても通信できるPCや
ハブがあるようですが、5Vで認識されないときは3.6V程度に押さえるリミタが必要です。ここでは青色LEDを
使いました。8mAで2.8V程度になっています。不都合があれば青色LEDを取り替えて見るのも方法です。
おまけとして、電源が繋がると1個が点灯し、通信中は2個点灯します。したがってパイロットLEDは省略しています。
これ以外に3.6V(〜3.0V)ZDを入れる方法、TL431と2SA1015によるクリッピング回路などありますがいずれもokでし
た。
8 このライタの2313にファームを書き込むときはUSBからとライタからのVccが衝突しないように注意が必要です。
原典には 電源の保護回路 レスキュー用クロック信号出力 RS232C出力端子 インジケーターLED などのオプションがありますが、自分の目的に必要な機能に絞ると制作がすっきりします。
1.2mmのポリプロピレン板(PP板)でカバーを作ってみました。カッターナイフで切り目を入れて折り曲げると一部が繋がったまま折り曲げができました。グルーガンで接着できます。簡単なものですが接触事故は防げそうです。
HIDaspxのシリアル番号について 2010.02.09
作者のsenshuさんから連絡をいただきました。学校の教材を取り扱う業者がHIDaspxを教材として企画して、V-USBのライセンスを取得し商用版として製造することになりました。これに関してアマチュアの試作なら規則に基ずかない仕様であっても許されるが、商用として公開されるためにはUSBデバイスの規則であるシリアル番号を組み込んでまったく同じデバイスが存在しないようにしなければならないそうです。
同じIDとシリアル番号(試作品は0000番)のデバイスを同一PCで使用しようとすると再起動が起こって使えないそうです。HIDaspxを同じPCで複数個を使えるようにすでに準備されていましたが、今まではシリアル番号を明示的に与えなければ有効ではありませんでした。
この状態でシリアル番号の異なった教材を使うことになると番号の管理に多大な労力を払わなければならない結果となって支障をきたします。
そこで、シリアル番号を付けるけれどもPCシステムが番号を判断して最初に認識したシリアル番号のものをデフォルトとみなして番号が明示的に与えられなくても使用できる仕様に変更されました。
その結果、1台のhidspxを使うときはシリアル番号を意識しなくても、今までの試作機0000番と同じように、使えることになります。同時に複数のHIDaspxを使うときは最初に認識されたものを除きシリアル番号を明示的に与えることによって同時使用が可能になります。
senshuさんから掲示板を通じて動作確認のお話しがありましたので簡単な動作試験をしてみました。
過去にシリアル番号を付けたものがあるのですが、その方法も忘却の彼方です。hidspx-2010-0209.zipをダウンロードして、実行ファイル他をディレクトリにコピーします。
通常は同梱の setup.bat をデフォルトで実行して c:\bin ディレクトリにまとめますが、私の場合には以前の版がこのディレクトリにありますから(そして、まだそのまま使いたいので)、ディレクトリを変更して c:\bin2 ディレクトリに入れました。
ファームウエアは この版の main-12.hex をHIDaspxに書き込みます。このときにシリアル番号ファイルも同時に書き込むわけですが、そのファイルについては同梱のReadme-j.txtに詳しく解説があります。それにしたがって作りました。
これらを含む c:\bin2 フォルダをカレントとしてコマンドプロンプトを起動します。
>gawk -f genserial.awk 1 10 エンター
で _0001,hexから_0010.hexまでの10個のファイルができました。これを同時に書き込みます。
>hidspx -pb1 -d4 main-12.hex _0001.hex エンター
で書き込めます。(COMポートISPを使っています) 他の一つはmain-12.hexだけを書き込みシリアル番号は0000としました。
まずは2台を別々につないだとき(同時使用でない)の様子です最も簡単な -r コマンドです。
_0001のもの | | _0000のもの | | |
-ph1 -r | ○ | -ph1 -r | × | 正しいシリアル番号を与えるとそのデバイスが有効になる |
-ph0 -r | × | -ph0 -r | ○ | 同上 |
-ph -r | ○ | -ph -r | ○ | 指定が無いとデフォルトで動く |
-ph* -r | ○ | -ph* -r | ○ | *指定はデフォルトで動く |
-ph? | [0001] | -ph? | [0000] | 有効なデバイスのシリアル番号が表示される |
次に2台を同時に接続したときは
-ph0 -r 0000番が有効
-ph1 -r 0001番が有効
-ph -r 0001番が有効 (番号の大きいものが有効だった)
-ph* -r 0001番が有効 (アスタリスクなしと同じ結果)
-ph? [0001] 0001番が有効
であった。
番号の大きい方が先に認識される(採用される)のはirukaさんの報告と一致しています。
シリアル番号を指定すれば複数台のHIDaspxが使用できると同時に1台のみを使うときはシリアル番号をまったく意識することなく使える、という結果になります。使いやすい設定に感謝します。
AVRminiProgライタ 2007.11.24 2007.12.04追記 2008.09.15追記
mega8(原典はmega168)一つでUSBから使えることとATMELのAVRISP mkUとしてAVRstudioで直接書き込めるのが特長です。
USBライタはすでにあるのですが、このページのライタの内、AN910を除いてAVRstudioで使えるものがありませんでした。AVRstudioも勉強してみようかな、との気持ちもあって作りました。
原典はこちらです。mega168を使って、ブートローダを持っていてファームウエアの変更はライタなしでできる特長を持っています。また、JTAG機能を持つようですが私が知らないためととりあえずAVRstudioで使えるISPライタが欲しかったのでISP機能に絞って、かつ、過去に無くても動いた部品は極力省略しています(原作者に叱られそう)。
最終的にできたものは次の通りです。
電源回路の赤色LEDは電圧降下によってVccが3Vに近くなるように付けていますが、同時に電源パイロットランプにもなっています。このため、実測値は3.22V程で動いていることとなります。(私のコンピュータは5Vでも動くのでその効果はわかっていません。)
ライタのインターフェイス抵抗は出力側は100Ω程度にして入力側は1kΩくらいの方がいいと思うのですが、ここは原典のままです。82Ωは手持ちの関係です。47でも動いたと思います。
最近楽しんでいる両面基板です。紙上で考えることもなく、適当に穴を開けてカッターで刻むわけですから、無駄な穴が空いたり、あとで場所が足りなくなったりとさんざんな状態ですがとりあえずこんな形だと見てください。写真に撮ると空中配線も見えなくなっています。
実験状態ではあとの変更もありますからファームを書き込むコネクタは別にしました。高さを押さえたいことからICソケットを切って使っています。上部にあるのはそのためのアダプタです。(適当に気に入っています) 表面左のピンヘッダは自分流のUSBコネクタです。USB関係の実験をいくつかするようになりましたが、1本のコードで使い回しができ、嵩が低いのでこれに落ち着いています。B型コネクタを使うのが本当でしょうが、遊びの世界に入っています。 ハードは例によって電源回路とプログラム書き込み回路ができるとPCに繋いでmcuの読み書きテストをしています。 ハードの制作では特に困ることはありません。mega8がTQFPになったのは単なる手持ちの関係です。
ソフトが大変でした。ダウンロードした中にファームのhexファイルがあるのですが、これはmega168用であると同時にクロックが16MHzでコンパイルされているとのsenshuさんのお話しです。単純なC言語なら修正もわかるのですが、ダウンロードのファイル群には、どこでどうなっているのか整理さえできません。senshuさんに助けを求めたところ、カレントをデフォルトディレクトリに移して、makefileのmcuとFCPUを変更後にmakeでできると聞き、その通りにコンパイルが順調に進みhexファイルができました。なお、基本構造がわかるまではブートローダは無視した方が良いと教えていただきました。最新版のファーム(2007-11-20)ではこのように簡単に修正が可能です。
修正ファームを書き込み、PC(WinXP)に繋ぎましたが、ドライバが無いので使えないと返ってきます。途方に暮れてsenshuさんに掲示板でお願いして、よくよく掲示板を見るとすでにAVRstudioに含まれると回答されているのを発見しました(遅い!)。自分のバージョンを調べると4.12です。最新版をDLすると4.13です。AVRstudioを入れ替えてつなぎましたら、簡単に認識され登録されました。掲示板にすでに丁寧な返事をいただいていました。(申し訳ない)
AVRstudioの書き込みテストへ進みます。過去にちらほらと眺めたことがありましたが、このソフトはわからないことばかりの状態です。
まず立ち上げて、new project を選びます。
なれているAVRgccを選んで、
project name を test として次へ進みます。
avr simulator と mega48を選んで(私のテストボードは48です)finishとします。
エディタが現れますので、ソースファイルに次のテストプログラムを書きました。
#include <avr/io.h>
int main(void)
{
DDRD=0xff;
PORTD=0xaa;
while(1){};
}
buildメニューでbuildします。予定通りエラーが無く(当たり前か)コンパイルが終了しました。デスクトップにフォルダとhexファイルができています。
ライタを設定するために、Conと書かれた黒いアイコン(下の行です)をクリックすると候補が出ますので AVRISP mkU を選びます(右にUSBと出ます)。
隣の黒いAVRアイコンをクリックすると(しなくても自動的に出てくる?)書き込み窓が現れます。deviceを選択して、hexファイルを正しく指定します。続けて、programボタンを押すと書き込めました。 Dポートに接続したLEDが一つおきに点灯したときは、やはり感激ですね。
と、今日はここまでです。
(2007.11.25追記)状況を示すLEDがある方がよいとのことから2個のLEDを追加しました。また、ターゲットの電圧測定機能を持っていることから、出力コネクタの2番ピンのターゲットVccを分圧してPC0に繋ぎました。この状態で実行しますとターゲットの電圧が3.6倍ほどの値で表示され、エラーと判断されるのか余分なメッセージが出るとともに先に進めなくなります。分圧抵抗を変えて程々の値が出るようにしますと異常なく動作します。適当な抵抗の組み合わせでおよその電圧が出るようにしました。私としてはターゲットの電圧は承知で使いますから機能の必要性は感じていません。
ターゲットの電源電圧は5Vか3.3Vなのですが、3.3Vのときはライタの電圧と同じですから問題はありません。5Vのときはライタの出力が3.3V弱で、ターゲットの必要入力電圧はVcc×0.6=3.0Vとなりますからかろうじてドライブできるのではないかと思います(端子に他の負荷がかかっているときは問題です)。また、MISO入力がVccより高い5Vとなりますので、保護ダイオードを経由して入力端子からVccに電流が流れると思いますが、470Ωが入っていますので保護ダイオードが3〜4mAに耐えてくれれば電圧降下で回避できるかと思います。(素人の考えで間違っているかもしれません)
現在は少ないサンプルですが5V、3.3Vともに書き込みができていますのでこのまま使ってみようかと思います。いつもアマチュア規格ですから大事なところには出せません。
(2007.12.04追記) どこが変わったのか不明ですが、ターゲット電圧が5Vのときにプログラム読み取りエラーが出るようになりました。ライタの電源が3.2Vくらいであることが不調和の原因かと思います。そこで、ライタの電源をターゲットから取ることにしました。
これでターゲット−ライタ間のVccと信号レベルは一致しますが、5VのときにD+,D-の電圧が高くなりすぎるのでリミターのツェナーダイオードを追加しました。本来は3.6Vなのですが手持ちの3Vで代用しています。調子が悪くなれば交換することにします。
同時にターゲットVcc測定回路を変更しました。オリジナルの電圧測定基準電圧はVccだったので、Vccが変わっても変化が見えません。senshuさんに教えていただいたとおりに app_cfg.h の20行目の "ADC_VREF_AVCC" を "ADC_VREF_BANDGAP" に書き換えます(もちろんコンパイルします)。これに関係してハードウエアはAREF端子を無接続(ノイズ対策のCを入れるのが本当でしょうが)として、分圧抵抗を10kと1.5kにしました。AVRstudioで 5.1V, 3.4V とやや高めに出ますが辛抱することにしました(VRで調整すると楽でしょうか)。
(2008.08.08追記) ライタを制作中の方からメールをいただきました。『mega8で作りたいが、現在アップされているファームはmega16用で、makefileを変更してもコンパイルできない。』と言うことです。私が作ったときはその変更だけでmega8が動きました。手元の保存ファイルを調べてみると、20071124 と 20071204、20071222 がありました。このうち、20071124版だけが上記の変更でmega8用として使えることがわかりました。2007年版はmcuがmega168ですから詳細に調べれば他のものも使えるのでしょうが、20071124版で使えていますからそれ以上は追求しないことにしました。自分用の保存版でも『app_cfg.h の20行目の "ADC_VREF_AVCC" を "ADC_VREF_BANDGAP" に書き換えてありました。』
この前の追記から8ヶ月間、まったくと言っていいほど使っていませんのですべてを忘れ去っています。保存ファイルのどれが正しいのかさえ簡単にはわかりません。メールをいただいてから格闘していました。
後々のためにメモをしておきます。オリジナルの20071124版は手元にありませんが、解凍して『"ADC_VREF_BANDGAP" に書き換えたもの』で、makefileはmega168、16MHzのままのものを確認して保存することにしました。変更の上で(実際使用できる)hexファイルを付けたものを圧縮してAVRminiProg20071124.zip名で保存しています。私流に変更した回路でこのhexファイルを書き込むと動作します。
あらためてコンパイルするならば、解凍したAVRminiProg20071124フォルダのdefaultフォルダにDOSプロンプトのカレントを変更してmakeを実行すると多くのファイルとともにhexファイルが生成されます。
このライタは多くの使い方があるようですが、私には難解なとことが多く詳しい追求はできません。AVR Studio で使えることに意義を感じています。
AVR Studio を使わなければ他のライタをお薦めしたいところです。なお、20071124版はアップできませんが、必要がありましたらメールをください。
(2008.09.15追記) kawanaさんから現バージョンの AVRminiProg RC2 (2008-03-10) から mega88(8,168)使用のISP用プログラマについての研究報告をいただきました。
AVRminiProg( AVRISPmkU)の製作
特徴: AVRISPmkUは、AVR Studio4 から読み書きできるProgrammerです。USB接続です。
出典: SimonQian http://www.simonqian.com/en/AVRminiProg/index.html
AVR: ATmega168, Atmega88, Atmega8 (いずれでも制作できます)
ハードウエア:
回路図は、kuman さんのWEB参照してください。
http://www.geocities.jp/kuman2600/n6programmer.html#12
Simonさんの回路で製作される方は、Kumanさんの回路図を参考にしてに書き直して使用ください。
回路図の主な変更点は、
kumanさん回路図 Simonさん回路図
D− PD4 PB0
D+ PD2 PB1 と PD2 の両方に
LED-R PD1 PC0 (USB status)
LED-G PD3 PC1 (target connection)
AD_TGD PC0 PC3 Target Vcc check
( VCCを10kと1.5kで分圧し、分圧電圧をPC0 or PC3のADCの入力電圧とする。)
ソフトウエア:
SimonQian webから ファームウエア AVRminiProg RC2 (2008-03-10)をダウンロ−ドします。
ダウンロ−ドした ファイルを解凍し、AVRminiprogデレクトリ毎 C:\ にコピーします。
ここで、コンパイルする前にソフトウエアの修正をします。
Kumanさん回路図を使うとき Simonさん回路図を使うとき
App_cfg.hでは
277: USB_CFG_IOPORTNAME D D
281: USB_CFG_DMINUS_BIT 4 4
285: USB_CFG_DPLUS_BIT 2 2
App_cfg_USBasp.hでは
131: USB_CFG_IOPORTNAME D B
135: USB_CFG_DMINUS_BIT 4 0
139: USB_CFG_DPLUS_BIT 2 1
修正が終わったら次の手順でコンパイルします。
DOSプロンプトを起動します。
カレントディレクトリを 解凍したAVRminiProgの"default"に変更します。
makeを実行すると、"default"内に AVRminiProg.hex ができます。
**************************************************************************
ATmega88を使用し、Simonさんの回路図で製作する場合のStep
ハ−ドウエア
1.Simonさんの回路図で製作します。
ソフトウエア
1.RC2 ファイルをダウンロ−ドし、解凍しますが、コンパイル制御のmakefileが
ATmega16用になっていますので、これを、ATmega88に変更します。
(makeファイルの内容)
###############################################################################
# Makefile for the project AVRminiProg
###############################################################################
## General Flags
PROJECT = AVRminiProg
MCU = atmega16 ---> MCU = atmega88
2.カレントデレクトリを"default"に移し、make Enterキ− で、コンパイルします。
3.avrminiprog.hexが "default"デレクトリに出来ていますので、ライタ−を使用して、
ATmega88に、avrminiprog.hexを書き込みます。
**** kawanaさんから追加連絡がありました。********************************************
kumanさん回路図で RC2 ソ−ス使用の時、
RST信号の接続先を PD7 → 14番 PB2 へ変更が必要です。
|
(2008.09.15追記) 上記のkawanaさんの報告とは別に原典をを読んでみました。
AVRminiProgは AVR studio で使えるので関心を持たれますが、現在のファーム AVRminiProg RC2 (2008-03-10) はmega16仕様です。
フルセットは仰々しいのですが、USBasp のハードウエアコンパチでISPができる方法が用意されています。そこでmega8を使ったUSBasp回路で AVRminiProg の追試をしました。
下記のとおりですが、mega8をmega88やmega168で置き換えるだけで88、168が使えると思います。
@makefileを変更します。
MCUをatmega16からatmega8に変えます。
Aapp_cfg.hを変更します。
7行目の #include "app_cfg_Full.h" をコメントアウトして、
8行目の #include "app_cfg_USBasp.h"を有効にします。
Bコマンドプロンプトを起動して、
"default"ディレクトリにカレントを移し、
makeコマンドを実行しますと、
"default"ディレクトリに AVRminiProg.hex が生成されます。
COMポート接続ISPライタ
USB-シリアル変換ケーブルでの使用はトラブルが多いので使用してはいけません。
自作派の極めて多くの人がこのライタでスタートしているのではないかと思うChanさんの有名なライタです。WinXPで使えるようになってからは長い間常用していました。
原典は「COMポート制御ISPアダプタの製作」です。
COMポートがあって、これからAVRを使ってみたいという人には最適のライタだと思います。
次に回路図を転載しておきます。制作されるならオリジナルをご覧ください。
掲示板で質問があったことと制作記事のリクエストがありましたので、別項に「ChaNさんのISPライタの作り方」を書きました。そちらを参照
してください。
写真の上は、「作り方」の作品でわかりやすく大きく作ってあります。写真の下は、私が愛用していたもので、トグルスイッチだけでなく、手作りの板バネスイッチを
追加して作業を楽にしています。
書き込みソフトはChanさんのavrsp.exeを使います。DOS窓にD&Dで使える上にデバイスが自動判別ですから申し分ありません。
大切な注意事項があります。Win2k/XPはCOMポート出力を制限しています。giveio.sysがないと動きません。giveio.sysを必ずインストールしてください。
次にいくつかあった質問から、注意点をまとめておきます。
うまく働かないときのチェックポイント 050702
@74HC126を使っていますか。HC126のときは13番ピンをVccにつなぎます。 125ならGNDにつなぎます。 126がお勧めです。
A74HC126のVcc(14番)とGND(7番)は電源と回路のGNDに接続していますか。
B同じ事ですが、126(125)はターゲットから5Vをもらっています。コネクタをとおして5Vが供給されていることをテスタで確
認します。
CD-SUB9ピンの半田付けは間違いありませんか。回路図の配置でなく、コネクタの刻印を確認してください。 (ルーペが必
要?)
D「書き込み読み出し」と「テストラン」のモード切替にスイッチ操作が必要です(後発のUSBブリッジではOFFのままでよい
のですが)。 126の時はONで書き込み、OFFでテストランです。125ではON,OFFが逆になります。
Eテスト用のターゲットはできるだけ簡単なもの(できれば動作確認済みのもの)を用意してください。
Fターゲットのクロックは確実に発振していますか。確認は困難ですが、古い90Sシリーズはクリスタル(セラロック)が無い
と発振しません、mega、tinyシリーズは内蔵のRCで発振可能です。新旧ともに使うときは忘れていることがあります。
GMISOとMOSIの配線をもう一度確認してください。
HターゲットのRESET端子をVccに直結していませんか。15〜47kΩくらいでプルアップしてください。(または内部プルアップ
に任せます=つながない)
Iavrsp.exeのデフォルトポートはCOM1です。もし、COM2につながっているなら -pc2 でポートを指定しなければなりません。
|
AVRに書き込める環境があれば、次の COMポートSPI Bridge ライタ が@切替えスイッチが不要、Agiveio.sysが要らない、ためずっと快適です。
COMポートSPI Bridge ライタ
COMポートを使う人に最も勧めたいライタです。AVRライタはCOMポート制御ISPアダプタを使ってきましたが、書き込み時にスイッチを入れる(押す)必要があります。
その後発表された COMポートから制御するシリアル−SPIブリッジは書き込み信号が自動化されていますのでスイッチを操作する必要がありません。
USB-SPIブリッジをテストしたときに快適だったのでシリアル版を作りました。もちろんChanさんの作品です。
(汎用SPIブリッジの製作)
回路図
RS232-TTLの変換は略式で74HC04インバータを使っています。マイナスの電圧はどうなるのだろうと思いますが、GNDから入力端子へ向かうダイオードと外付け100kΩで処理
できているのでしょうか。以前のライタにも付けていたので、PCに接続すると赤いLEDが、またターゲットからVccをもらうと緑のLEDが点灯して接続の確認ができるようにし
ています。モード切替スイッチは付けていますが、通常の書き込みには必要ありません。うまく働かないので悩みましたが、掲示板でお願いしましたら教えていただけました。
ポートの指定を -pc1 でなく、-pb1 にする必要があったのです。マニュアルのavrx32.txtに明記されていました。
書き込みソフトはもちろん avrsp.exe です。小さく作りました(基板サイズ32×53)ので、これから常用する予定です。
9.216MHz版−−−動いたことに気をよくして、akibowさんが 9.216MHz のセラミックレゾネータで作って居られたのを思い出しました。これで動くのなら、入手しに
くく価格の高い水晶(digi-keyで\79、高くないか でも運賃が)でなく秋月の9.22MHzセラロック\40が使えます。2つのコンデンサを抱かさなくてもいいのもうれしいこと
です。上のものとほぼ同じ基板に組み立てました。
回路図は上のものと、水晶をセラロックに代えたこと、モードスイッチを省略したこと、LEDが抵抗付きの赤色に変わったこと以外はすべて同じです。ファームウエアは
akibowさんの ser2spi.hex(9.216MHz用) を頂戴いたしました。(感謝)
結果は機嫌良く動いてくれています。
この分ではChaNさんが公開してくれている 4MHz、6MHz、8MHz、10MHz も同様に作動するのではないでしょうか。これでokなら一般的なセラミックレゾネータでライタが
作製できることになります。(05.12.21)
(06.01.05追記)4MHzの水晶とセラロック、8MHzのセラロックを実験してみましたが誤差0のボーレイトを選んでも成功しませんでした。(残念)
(06.05.03追記)ChanさんのBBSレポートを思い出して、8MHzと4MHzに再度挑戦してみました。ファームウエア ser2spi.asm のクロックを変えて、ボーレートを8MHzで
38400 にしてみました。このときの誤差は0.2%です。水晶がないのでセラロックで試したところ、デバイス情報の読みとりとプログラムの読み出しはできるようですが書き
込みではベリファイエラーになり、残念ながら使えませんでした。セラロックは手持ちの数個を試しましたが結果は同じでした。4MHzのセラロックでは、ボーレート 19200
に設定しましたが、こちらは正常に使えるようです。ただ、115200 に比べると速度が遅くなりますので無理してまで使うことはないと思います。3.6864の水晶や9.22のセラ
ロックが手にはいるまでの間に合わせには使えるようです。
なお、オプション -pb1:19200 を付けて実行しています。
私事ですが、PCにはUSBが2口で、一つはプリンタに、もう一つはデジカメケーブルにつないでいることが多いのです。COMポートは他に使うことがありませんので、
ライタはCOMポートを常用しています。COMポート使用ではこのライタがもっとも快適です。お勧めライタです。
(2007.12.24) 高速書き込み/PIC24兼用に変更
tiny2313と9.22MHzセラロックを使っていますからChaNさんの 2007.12変更を#173ライタと同様に変更できます。実際にはソースを9.22MHz、115200bpsに変更してアセンブルしたものを書き込むだけです。これでファームがR0.4になりますから、avrsp.exeのR0.43bを使えば高速、かつ、PIC24使用可(アダプタ必要)となります。
COMポートSPI Bridge ライタ2 swNakさんのライタ基板 2007.08.02
(2007.12.21 ChaNさんがオリジナルを改良されたので、素晴らしいライタになりました。下記の追加を見てください。)
senshuさんの発案を受けてws☆Nakさんが発売されたAVRライタ基板 #173 を組み立てました。これは、ChaNさんのCOMポートSPI Bridge ライタを作者の許可を得て、多くの人が配線等の間違いなく確実なライタを作ることを目的に、部分的な改良を加えて考案されてものです。
ユニバーサル基板の配線では、技術によって誤配線を含めて信頼性が低くなりますが、プリント基板を作ることで作成時間の短縮と信頼性の向上が図られています。
基板サイズは50*25mmと小さくまとめられています。プリント基板だけの製品ですから、その他の部品は別に用意します。tiny2313を使うように作られていますが、手持ちの関係で使用可能な90S2313としました。以下に制作メモを書きます(自分が忘れても良いように?)。
作るときに注意した点は、
@赤色LEDのA-Kが逆に印刷されているので反対向きに実装する
A74HC04はソケットを使用しない(ソケットが他の部品と干渉する)
BIC及びICソケットはあとでも半田付けできるが、RとCは狭いところで取り付けにくいので先に付けておく
Cすべての部品が納まるかどうか常に差し込んでチェックしながら進める
などです。
その上で自分流に、0.1μFは手持ちのチップタイプを、120Ωも同じくチップ抵抗を使うことにします。さらに、背を低くするためにピンヘッダはピンをばらして
直づけします(アマチュアの勝手w)。LEDはまぶしいのがいやなので上部をヤスリで削ったり、表面をヤスリで荒らしたりして散光型に近づけます。
ISPのピンヘッダは2列*3のAtmel型だけ実装しています。
ファームウエアはwsNakさんのところにはありません。senshuさんのページにソースがありますが、アセンブルは苦手なので(AVRstudioが使えないので)、探しているとS2313用のhexファイルがアップされていましたので利用させていただきました。
実験の途中で、2.7kで5Vにプルアップされたときに読めないことがあったために、「徒然」でドライブが弱いように書きましたが、再度の実験では読み取りができています。(2007.09.15 R12を1kから120Ωに変更しました。ドライブが強くなりました。)
一息入れて、tiny2313にも取り組みました。
1 senshuさんのページから firm173.zip をダウンロードします。WNS173のファームウェアはどこで入手できますか?の項目中の
firm173.zipをダウンロードします。
2 解凍してsrcフォルダを適当な場所に置きます(デスクトップで可)。
3 AVRstudioを起動して、new projectを選び、
4 Atmel AVR Assembler を選び、
5 project nameは仮に173とします。
6 initial file には ser2spiを指定します。
7 フォルダは先に置いたsrcとします。
8 deviceにtiny2313を指定します。
9 finishボタンでAVRstudio画面となり、ソースファイルが展開されます。
10 buldのbuildを実行するとアセンブルされて、srcフォルダにhexファイルができます。
(追記)AVRstudioに含まれているavrasm32.exeを使うともっと簡単にアセンブルできます。
DOS窓に avrasm32.exe をD&Dして、xx.asm ファイルをD&Dして、intelhex指定の -fI オプションを書けば終わりです。
#avrasm32.exe xx.asm -fI
これで.asmのあるフォルダに同名の.hexファイルができます。
このとき avrasm32.exe は単独で(他のファイルと関係なく)良いようです。自由な場所にコピーしたものが使えます。
|
他のライタを使って、このライタに書き込みます。書き込み時と実行時ではジャンパピンの位置が違うので注意します。(私はこれに慣れていないのでよく失敗します)
なお、私のライタはすべてターゲットから電源をもらうので、このライタに書き込むときはVccを別に供給する必要があります。そのために電源端子を仮付けしています。
fuseの設定が必要です。avrspを使うなら、avrsp -d40 -fL11011101 -fH11011101 で9.22セラロック対応に変更します。<忘れないように>
Tiny2313の場合も正常に動作しました。
この回路は、ISPピンをファーム書き込み時も使えるようにしている関係で、ChaNさんのオリジナルとは使用IOピンが違います。したがってオリジナルのファームとは
互換性がありません。
ファームの90SとTinyの切り替えはソースの一部を0か1かを書き換えてアセンブルすれば良いようです。同梱のREADME.TXTに詳しく書かれています。
アセンブラを使えない私には、両方のhexファイルを用意していただいた方が助かります。上のstudioの記述は試行錯誤でそうなった、というだけです。
半田付けが確実な、かつ、誤配線のない基板として、さらに\300で、コンパクトで、とお勧めだと思います。これで仲間が増えてくれると嬉しいのですが。
(2007.12.21 追記) 高速書き込み、PIC24兼用に変身
9月にChaNさんがUSB接続のSPIブリッジライタを制作されましたが、もともと汎用SPIですからAVRライタに限らず汎用の通信機能を持っていたようです。この機能を使われたのでしょうか12月にPIC24のライタとして使えるアダプタと書き込みソフトを開発されました。
その後、紆余曲折がありましたが、結果的に#173ライタが書き込み用のケーブルのmisoとmosiを入れ替えるだけでハードウエアの変更なく、ChaNさんのファームウエアとソフトウエアがほとんどそのまま使えることになり、高速かつPIC24兼用の素晴らしいライタに変身しました。このライタはsenshuさんがファームの書き換えを簡単にする工夫を有効に保ったまま使えるのでとても便利なライタになっています。
ここに高速化のプロセスをまとめてみます。
ハードウエアについて:
@ mcuにはtiny2313を使います。tiny2313の持つUSI通信機能を利用しますから、この機能を持たない90S2313は使えません。
A 書き込みケーブルのmiso線とmosi線を入れ替えます。これはsenshuさんがファーム書き込み時に同じケーブルを使えるように変更していたのですが、USIを使うために戻します。(ファーム書き換え時はピンコネクタがそのまま使えるsenshuさんの工夫は生かされています)
ファームウエアについて:
@ この時点で最新のものを使います。ChaNさんのページから「汎用SPIブリッジ Rev.4 資料」をダウンロードします。解凍するとser2spi_r4.hexがありますが、これは10MHz、かつ、 312500bps用ですから使うことができません。#173は9.22MHzです。
A 同梱の ser2spi_r4.asm を編集して再アセンブルします。
・まず、.equ SYSCLK = 10000000 の行を探し出して、10000000を9220000に変更します。
・次に、.equ BPS = 312500 の312500を115200に変更します。
・1msの長さが 10/9.22 倍になることについてはsenshuさんが「大きな影響はない」と判断されているところです。
・再アセンブルはAVRstudioに含まれるavrasm32.exeをコマンドプロンプトで使うのが簡単です。
・コマンドプロンプトを開き、avrasm32.exeと編集済みのser2spi_r4.asmをドラッグ&ドロップして、-fI を付けます。
・#avrasm32.exe ser2spi_r4.asm -fI
・-fIはインテルhexファイル出力指示です。asmファイルのあるフォルダにhexファイルができてきます。
・名前が同じですから10MHzのものと間違わないようにします。
・ファームを書き込みます(もちろん他のライタで)。
書き込みソフトについて:
上記のページから、「Win32版ライタ制御ツール for Windows9X/Me/NT/2k/XP」 (2007.12.18 R0.43b 以降)をDLします。
解凍して得られる avrsp.exe を使います。(avrsp.iniファイルに -pb1 を指定しておくと便利です。)
(このままで、書き込みソフトをpic24sp.exeに変えるとpic24に書けます。)
*以上はChaNさんとsenshuさんの文を繋いだだけですが、簡潔な文章を目指すためにこのような表現になりました。ご容赦ください。また、誤りがあればご連絡をお願いします。
USB-SPI Bridge ライタ
cp2102を入手しましたので、ChaNさんの USB-SPI bridge(AVRライタ制作集 汎用SPIブリッジの制作)
を作りました。届いたICが想像以上に小さいので「できるかな?」と不安はあったのですがチャレンジしました。結果はgoodです。
後にavrspがR0.35a に更新され一層速くなりました。大きなプログラムは書いていませんが、ライタの時間待ちを感じることはありません。極めて快適です。COMポートの
ないコンピュータには朗報でしょう。リクエストに応えられてハードウエアとF/W・avrsp.exeのソフトウエアを作られたChaNさんに感謝します。
いつもの事ですが、手持ちにない部品は省略したり、変更したりしますので、オリジナルの回路とは少し変わっています。回路図を引用するのは適切でないかもしれませんが
、変更点が多すぎますので参考までに実験に使った回路をここに置きます。制作されるときは必ずオリジナルを見てください。
写真は2台目のもので、水晶を9.216MHzのセラロックに代えてみたものです。書き込みスイッチも省略しています。cp 2102の電源はUSBバスから、Tiny2313の電源は
ターゲットから取りますが、それぞれの接続がわかるように赤色チップ発光ダイオードを付けました。また、信号回路のダイオードは東芝の1SS319(ショットキダイ
オード)に変わっています。
2313は別の実験でTinyでも置き換えることができることを確認しましたので、Tinyにしました。DIPではありませんから、F/W書き込み用のISPピンを用意しました。
CP2102をUSBにつなぐと(WinXPで)新しいデバイスのドライバをインストールする画面が出ますが、適当なドライバがなく、インストールに失敗した旨の表示となりました。
ドライバはどうなっているのかデータシートを見ると「キットに付属」の記述しか発見できず、トラ技2005年1月号の記事にも「キットにある」としか書かれていません。
途方に暮れて、何度かUSBに挿したり抜いたりしていると「使用できるようになりました」と変わりました。理由はわかりません。とにかく認識されました。
後で(06.05.17)わかったことですが 最新のwindows(XP)にドライバがあるようです。アップデートしてあれば素直にインストールするようです。下記のドライバが使われ
ています。
あとはターゲットにつないで、avrsp.exe を実行するだけです。私の場合は、2313の電源はターゲットから取っています。 avrsp.exe で -pb4 のオプションでターゲット
プログラムのread/writeができました。高速で、自作できて、USBで使えて、殆どのデバイスに対応している素晴らしいライタです。千数百円で制作できるでしょう。
常用するときは avrsp.ini ファイルに -pbn (nはポート番号)と書いて、pathが通っているところ、例えばC:\WINDOWS\system32フォルダに置くとよいでしょう。
私は、c:\にフォルダaを置き、この中に avrsp.exe, fuse.txt, avrsp.iniを置いて、aのショートカットをデスクトップに置いています。aのショートカットをクリックすると
画面端に小さくaフォルダのファイルが表示されるようにします。ここからavrspをDOS窓にD&Dしています。fuse.txtがあるのでfuseの詳細も見えます。avrsp.iniを読んで
くれるのでデフォルトの変更ができます。また、ここにあるからiniファイルの変更も簡単です。ただし、system32と重複するとsystem32にあるiniが優先されます。
avrsp.iniファイルの設定:ファイルの設定については英文で書かれていますが、覚え書きを記しておきます。
@コマンドはファイルの第一行目先頭から書きます。-pb4 -d5 を指定するなら、1行目先頭から-pb4(改行) 2行目先頭から-d5(改行) 3行目(空白行)とします。
Aこのファイルに書いてあっても、コマンドラインに同じコマンドがあれば、コマンドラインに書いたものが優先されます。
Bコマンドは空白行またはEOFで終わります。コメントがあれば空白行の次の行から書き始めるとよいでしょう。
3.3Vの電源を作りましたので、テストしました。このライタに使ったTiny2313は10MHzまでならVcc2.7Vが保証されていますから当然ですが正常に書き込みができました。
90S2313-10 でも3.3Vで動くという報告がありますが4V規格ですから保証外動作と言うことになるのでしょう。
(2007.12.24) 高速書き込み/PIC24兼用に変更
tiny2313と9.22MHzセラロックを使っていますからChaNさんの 2007.12変更を#173ライタと同様に変更できます。実際にはソースを9.22MHz、115200bpsに変更してアセンブルしたものを書き込むだけです。これでファームがR0.4になりますから、avrsp.exeのR0.43bを使えば高速、かつ、PIC24使用可(アダプタ必要)となります。
USBasp ライタ -- mega8一つのライタ -- 2011.07.11書き換えました。
HIDaspxがまだ開発されておらず、外付け部品の多いUSBコンバートIC(FT232BM)が比較的高価であったとき、mega8一つでできるUSB接続ライタは魅力的でした。
このサイトの usbasp.2011-05-28.tar.gz (519 kB) をダウンロードすると必要な情報がすべて含まれています。
このプログラムはavrdudeで実行することになっていますので、当時avrdudeの使い方を調べてなんとか使ったものでしたがコマンドプロンプトでの記述が複雑で作ったものの使う気持ちにはなれませんでした。
このファームはusbaspとライタと同名ですが、このusbaspを拡張してusbaspxに変更し、ChaNさんのavrsp.exeを拡張したavrspx.exeを作ってavrspと同じ手順で書き込みができるシステムをkkkさん(t.k.さん)が開発してくれました。以下は当時の記録です。
オリジナルはavrdudeで書き込みをするのですが、kkkさんが2006年5月に素晴らしいプログラムを開発してくれました。 Chanさんのavrspを拡張して、USBaspに対応できるようにしてくれたのです。Chanさんのライタが同時に使えるだけ
でなく、USBaspの細やかなコントロールがすべてソフトウエアでできるようにしてくれています。安価に制作できて、
性能がよい、申し分のないライタに変身しました。kkkさんに感謝!
|
kkkさんは現在は活動を休止しておられ、かつ、発表の場所であったavrwikiのsandboxが削除されていますので当時の記録を見ることができません。
http://web.archive.org/web/20090204082758/http://avrwiki.jpn.ph/wiki.cgi?page=%BE%A1%BC%EA%A4%CB%CE%FD%BD%AC%A1%CA%C8%F3%B8%F8%BC%B0%A1%CB
現在(2011.07)ではsenshuさんがavrdude-GUI(とavrdude)という汎用書き込みソフトを開発されましたのでavrdudeを使うのが簡単になっています。同時にusbaspとusbaspxの両方を現在の環境に合うように改良して発表しています。
ここでは一部に問題が残っているようですが、avrspxを拡張して作られた hidspx、picspx で使える usbspx を目的に新しく作り直してみました。
回路図は私が作りやすいように、使いやすいように勝手な変更を加えています。(作製されるときは原典をご覧下さい)
電源はUSBバスの5Vを使っていますがISP回路に抵抗を入れていますのでターゲットが3.3Vであっても使えるようです(ストレスはわかりません)。
ファームウエアはsenshuさんの usbaspx114_m8.hex と usbaspx114_m8.eep を使います。なお、このファイルは開発更新中のため今は usbaspx114h.zip に含まれていますが更新される可能性が高いので注意が必要です。
12MHz水晶に合わせてヒューズを書き換えます。
mega8では -fl11111111 -fh11001001、 mega48では -fl11100111 としています。が、
usbspxのファームウエアのフォルダの「bin\usbaspx_fuse.txt」を参考にするとよいでしょう。
ドライバは別項「avrdude-GUI[YCIT版] 環境設定と使用メモ」にあるlibusbをインストールしておきます。なお、再現できないのですが新しいlibusb-1.2.4.0があるにも関わらずインストールを求められ、1.2.4.0を指定するとダメだといい、古いものを示すと「新しいものがすでにある」と出るのでパスするとインストールが完成しました。理由はわかりません。
USB-SPI Bridge ライタ2
FTDI232BMを使ったUSBライタです。
まえおき: Chanさんの書き込みソフト avrsp.exe はすばらしいプログラムです。特にこの1年の改良はすばらしく、Win2k/XPで使えるようになっただけではなく
USBにも対応できるようになりました。多くの方の要望に応えられて、USB書き込みのソフトとハードを完成された氏には感謝の気持ちでいっぱいです。レガシーポートのない
コンピュータが増える中で、最新のデバイスにも対応しているライタの制作例はなかったと思うのですが、これで安心してUSBを使えます。
オリジナルはCP2101を使われていますが、手持ちのFTDI232BMでもできないかと実験したところ成功しましたのでここに報告します。なお、
JUN猫さんがここよりも先に報告されてます
最初のものはUSB-シリアル変換に使っていた232BMの出力をChanさんのUSB-SPIブリッジの後半部につないだのですが、写真のものは作りかえて一つにまとめています。
FTDI232BMのデバイスドライバはhttp://www.ftdichip.com/Drivers/VCP.htmからダウンロードします。
もちろん、書き込みソフトavrspとファームウエアはChanさんのものです。『汎用SPIブリッジの製作』が本家
本元です。
デバイスドライバのプロパティで、Port Settings → Advanced Settings → latency timer をデフォルトの16msから1msに変更し、avrsp.exe を R0.35a に更新
すると極めて速くなりました。
最初に実験したときは、2313に4MHzのセラミックを使ったのですが、もちろん動きませんでした。ふぁじぃさんから、ボーレートの調整が必要なことを教わり、手持ちの水晶
で実験しましたがうまく働きませんでした。指示どおりの3.6864MHzの水晶を購入して、再度実験したところうまく動きました。このクロックではボーレイトの誤差が0%にな
るので、それが原因なのでしょうか。他の水晶で2%以下の設定をしても成功しませんでした。(3.6864, 7.3728, 9.216ならokでしょう。)
おまけ:USBのコネクタにB型を使わず、コードを切って使っています。他の用途もあって、机上に延長コードを置いているのでA型の方が便利なのと、100円ストアで売って
いるために手に入りやすいからです。
基板上に余裕がありましたので、4つのLEDを付けました。USBの電源、ターゲットからの電源、送信状態、受信状態を表示しています。送受信のLEDははじめて付けてみたの
ですが、通信の時間が短いのであまり目立ちません。
UART用のコネクタもつけました。RTSとCTSは短絡して、TXDとRXDだけによる通信ができるようにしています。別項のTiny2313からPCのExcelにデータを送るときに使えました。
なお、2313のファームウエアは組み立て途中に臨時の半田付けをして書き込んでいます。変更が必要になればまた、半田します。
(06.06.03) 前半部と後半部を適当につなぎ合わせたら動きました−−といういいかげんなものですが、ターゲットのVccを3.3Vにしても読み書きができました。その後教えて
いただいて、FT232BMのIO出力は 13番ピンのVccIOの電圧を5Vと3.3Vに切り換えることでIO電圧を5Vと3.3Vに変えられることを知りました。データシートにはそれぞれの
場合の回路図があげられています。ただ、それ以外の場所も考えなければならないようで、5、3.3の両用にするのはやや面倒な様です。
現在の回路図ではターゲットが3.3Vの時は、FT232BMのH出力はダイオードで止まり、2313の入力は47kのプルアップで与えられますから、3.3V電源の2313に無理はないと
思います。
AVR910 ライタ
atmelのアプリケーションノートAN910にあるライタです。ファームウエア書き込み済みのAVRが必要という「にわとりーたまご」のライタです。
統合開発環境AVRstudioから書き込みができるのですが、ターゲットデバイスはファームウエアに書かれていて、これが新しいデバイスに対応していないために作っても
最近のAVRには使えません。改良している報告がWebにはありますが、atmelは変更の意志がないようです。改良ファームが手に入らないと作らない方がいいと思います。
ターゲットシステムで動作状態にある(電源が入っている)マイクロコンピュータに、Windowsなどの コンピュータからシリアル端子(RS232C)を使って書き込むものです。
Atmel社ではこれをISP (In-System Programming)といっています。デバグのときICを取り出さないで済むのがうれしいです。
次の回路は、Atmel社のWebページapplication-noteに示されているものです。
これをまねて作りました。
C100 1.0μFはタンタル指定となっています。(アルミ電解でも動きました) Q100, Q101 はそれぞれ 2SA1015, 2SC1815 を、ダイオードは 1S1885 を使いました。
また、発振子は4MHzのセラミックレゾネータを使いました。
ターゲットシステムへの接続はピンソケット(ターゲットではピンヘッダ いずれも2×3の6ピン)を使います。
2列の長いものを買って、切って使うのが安くなるようです。糸鋸に金属用をつけて切っています。余談ですが、金属用の糸鋸は重宝します。
回路図にはありませんが、3つのインジケータLEDを付けると便利です。一つは、DSUB9ピンソケットの3番、すなわちD100とR105の接合点に、 10kΩでプルダウンした
LEDを付けます。コンピュータのシリアル出力に繋がっていることがわかります。
二つ目は、Vccに1kΩで繋ぎます。この書き込み機は電源をターゲットから取り込むので、Vccが生きていることがわかります。
三つ目は、90S1200の16番ピン(reset出力)に、1kΩでプルアップしたLEDを繋ぎます。ターゲットに書き込むとき、この出力がLOWになるので書き込み中であることがわか
ります。(この写真は古いものです。当時、書き込みコネクタに8ピンICソケットと使っていました。)
ライタには、書込用のファームウエアをAT90S1200に書き込んだものを使います。このプログラムは
http://www.amelek.gda.pl/avr/uisp/at90isp23.asm です。AVRstudioでアセンブルして書き込めば使えますが、上記の理由とChanさんのプログラムが極めて便利に
なったので最近(2006)は全く使っていません。
FTDI232BM+AVR910 ライタ
Windowsが2000やXPになって、プリンタポートが自由に使えなくなりました。また、D-sub9ピンのシリアル端子が付いていないコンピュータが多くなって、USBでなければ
使えない場合があります。USBのライタが作れないものかとWebページを検索していましたら、いい報告に出会いました。Nagnagさんhttp://www.nagnag.jp/main.htmlの電子
工作のページの 「簡単USBデバイスの作成」です。簡単な回路で、USBからシリアル(RS232C)と同じ信号が得られそうです。なお具合の良いことに信号の論理が反転してい
る上に TTLレベルになっているので、マイコンAVR に直接繋ぐことができそうです。この種のICは入手しにくいようですが、共立電子にありました(900円) ので試作しま
した。
Nagnagさんの回路をapplication note910の90S1200に接続しただけです。Nagnagさんの回路の-RTSと-CTSを 短絡し、TXD端子を90S1200の PD0(RXD)に、RXD端子を
90S1200のPD1(TXD)に接続します。信号線はクロスしています。
FTDIのFT8U232BMは約7mm正方形のチップの四方に8本ずつ32本の足がついたものです。端子のピッチは0.8mmです。半田付けには一時ギブ アップしそうになりました。いろ
いろ試した末、0.26mmのポリウレタン線UEWをあらかじめ半田付けしたものを基板に結合しました。 虫眼鏡で一本ごとにチェックしました。5,6回やり直してやっと成功
した線もあります。作ってみたかったからチャレンジしましたが、 アダプターを買った方が良いかもしれません。(最近−2006−では慣れました)
デバイスドライバはFTDI(http://www.ftdichip.com/FTWinDriver.htm)のCurrent Version = 1.00.2148 を使いました。 ターゲットへの書き込みはapplication note910
と全く同じ方法でokです。ポートはcom4になりましたが、AVRstudioが自動で設定してくれます。配線がかなり複雑になりますので、チェックは十分行ってください。私も苦
労しました。
後日、ファームウエアを変更して90S2313を使っています。TEMPLEさんのソフトで多くのデバイスに対応しています。
(05.07.19) しばらく使っていなかったので解体しました。ChaNさんのライタが便利なのと、TEMPLEさんのソフトでさえ最近のデバイスに対応できていないためです。
また、AVRstudioを使わなくなったのも一つの理由です。1年余り前は、ChaNさんのソフトがWIN2k/XPに対応していなかったことと、使っていたのが90S2313だけだったの
で、このライタをAVR910改(TEMPLEさんのソフト)とともに使っていました。
LPTポート制御 ISPアダプタ
私が最初に作ったライタです。Chanさんの作品ですが、2003年の当時、私のPCはWinXPでした。XPでAVRを扱いたかったのですが、Chanさんの作品はそのころDOS対応で、
Win98で動いていたのです。XPで使うにはatmelのAN910によるライタが便利だったのですが、これは書き込み済みのAVRが必要で、かつ、私の周りにはAVRを扱う人が
まったくいなかったため、何もなくても作れるこのライタを作りました。原点は ELMAVRライタ製作集
のLPTポート制御 ISPアダプタの制作 です。
ライタの写真とChanさんの回路図を転載します。制作されるときはオリジナルを見てください。
リードは無理を承知で長く作ったのですが、やはり正常に動作しなくて、長さを詰めてゆく内にこの長さになりました。コンピュータをWin98とXPのデュアルブートに
してDOSモードで使いました。今はChanさんのプログラムはwin32で走りますからこうした苦労もなくなっています。
avrspx.exe の使い方
現在(2011.07)は更新されていません。senshuさんの新しいpicspxに引き継がれています。過去の記事としてお読み下さい。
Chanさんのライティングソフト avrsp は素晴らしいものです。GUIが主流といわれますがコマンドプロンプトを使うこのソフトはAVRデバイスを自動判別するために
指定する必要がなく、オプションが簡単なタイピングでできる上に、ドラッグ&ドロップが使えますから極めて快適です。同じコマンドラインを使ってもavrdudeとは
雲泥の違いです。速度も申し分ありません。
このソフトをUSBaspにも使えるようにkkkさんが拡張してくれたavrspxですから、これ一つで上記お勧めの4つのライタが同じ手順で使えます。
AVR Wiki のSandBoxから
avrspのUSBasp対応(beta-9_5) 2006-05-28 をダウンロードします。(もし、リンクがうまくつながらないときは
ここから探してください。)--秒進分歩で改訂されていますので版は変わります。(2008.07.14追記 最新版はkkkさんの作をsenshuさんが改良されています。avrspx-080120.zipを使います。)
解凍すると、たくさんのファイルが出てきます。直接必要なファイルをあげますと、
avrspx.exe 書き込みソフトそのものです。
avrspx.ini 設定ファイル。オプションを前もって書いておきます。
fuse.txt ヒューズビットの説明ファイル。avrspxと同じフォルダに置くと、ヒューズ読み出し時に説明が表示されます。
\usbaspx113 20060522\win-driver フォルダの中に3つのファイルがあります。インストールに必要です。
\usbaspx113 20060522\bin\usbaspx113_m8.hex USBasp本体のファームウエア。ライタ制作時のみ必要です。
USBaspライタでの使い方の例を示します。私が便利だと思う方法です。他のライタの変更点は後で書きます。
@書き込みソフトなどの格納フォルダの準備: たとえば c:\ にフォルダaxを作り、この中に
avrspx.exe avrspx.ini fuse.txt win-driverフォルダ(ファイル3種) を置きます。
Aaxとコマンドプロンプトのショートカットをデスクトップに作ります。
Baxのショートカットから、画面右下に最小限の大きさでaxフォルダが現れるようにします。
Cavrspx.ini はとりあえずこのままにしておきます。「;」行はコメントで、オプションは -pu USBaspライタ -d4 書き込み速度4 です。
準備が完了したらライタとターゲットボードをつなぎます。
1.DOSプロンプトを起動して、フォルダaxから avrspx.exe をD&D(ドラッグアンドドロップ)します。
2. カーソルがDOS窓にあることを確認してenterキーを押します。オプションの書式とライタの種類が表示されます。
3.-rオプションを使ってみます。avrspxをD&Dして(またはF3キーを押して)、スペースを一つ空けて -r とします。デバイス
名とデータが読みとれるでしょう。
4.同様に、-rf -rp など試してみます。fuse.txtが用意されていると解説が表示されます。
5.ターゲットへのプログラムの書き込みは avrspx.exe スペース の後に.hexファイルをD&Dします。書き込み終了ととも
に実行されます。
6.プログラムの読みとりは -rpオプションです。もちろん >出力ファイルパスリスト でリダイレクトできます。
7.ヒューズの設定は -fl -fh -fx オプションです。私は2進数を使います。例 -fl11100010 resetを無効にしないよ
うに! 16進数も使えます。
8.ターゲットのクロックが速いときは、ディレーオプション -d の数値を減らして速くすることができます。反対に遅いとき
は数値を大きくします。
avrspx.iniの値を大きくするか、または、コマンドラインに -d2 の様に書きます。コマンドライン
が優先です。
他のライタを使うときは、コントロールポートオプションを変えるだけです。
COMポート接続ISPライタの時: -pc1 (1はCOMポート番号。PCによって変わることがあります。)
COMポートSPI Bridge ライタの時: -pb1 (1はCOMポート番号。PCによって変わることがあります。)
USB-SPI Bridge ライタの時: -pbn (nはCOMポート番号。マイコンピュータのプロパティ→
ハードウエア→デバイス
マネージャ→ポートで調べます。)
USB-SPI Bridge ライタ2の時: -pbn (nはCOMポート番号。マイコンピュータのプロパティ→
ハードウエア→デバイス
マネージャ→ポートで調べます。)
オリジナルはあくまでもChaNさんのソフトavrsp.exeです。オリジナルをダウンロードして、
関係のファイルをお読みください。
hidspx.exe
avrsp(ChaNさん) →拡張→ avrspx(kkkさん) →拡張→ hidspx(senshuさん)
と発展してきたライティングソフトです。avrspxの後半はsenshuさんに引き継がれています。
原作者ChaNさんの意志を引き継いでBSDライセンス準拠となっていますので広く利用できるソフトです。hidspxと名が変わっていますが、avrspxがavrspの機能をすべて含み、hispxがavrspxの機能をすべて含んでいますからavrspxとなるところですが、拡張のための変更で副作用のすべてについて確認できていないのでとりあえず別名にしていると言うことです。(後日、senshさんから『変更が多岐にわたったので混乱を避けるためにhidspxの名称を続ける』との報告がありました。)なお、全二者の'sp'はserial programingの意味だと想像するのですがhidspxでは別の意味づけになっています。
senshuさんのサイトのhidspx-2009-0420.zip(バージョンによって日付が変わります)に含まれていますが、この中のhidspx.exeはBSDライセンス準拠ですが、同時に含まれる他のファイルは別のライセンス条件となっているのでご注意下さい。
Tiny23131個でできるライタHIDaspxに対応しているのが一番大きな拡張ですが、その他にも多くの拡張がなされていますので、同梱の説明事項を読まれることを勧めます。このように機能を拡張されたものですから、たとえばファイル名を avrsp.exe と変更すると原作のavrspの代わりとして使うことができます。
HIDaspxシステムのライタを使うときは -ph オプションで使うことになります。
基本的な使い方は上記の avrspx と変わりません。また、同梱されるGUIソフトを利用するとマウス動作で多様な使い方ができます。GUIとは別にAVR studioやBASCOMからも起動できるとのことです。
多くの拡張機能を含めて使用の感想を作者senshuさんのサイトに報告をお願いしたいと思います。このページを開くと報告する場所がわかります。また、それに対する作者の対応も書かれます。
avrspがそのまま含まれていますから avrsp の代わりに使うこともできます。 もちろん、hidspx を avrsp 、 avrspx とファイル名を変えても正常に動作します。(注意しないと混乱しますが)
メモ: ロックバイト(メモリのロック) -l または -l11111100(-lはエル)読み書き禁止 -l11111110 書き込み禁止
avrdude-GUI[YCIT版] 環境設定と使用メモ
GUIで使える極めて有用なソフトです。これ一つでほとんどのライタが使えます。
senshuさんが開発した多機能ライティングソフトです。avrdudeを独自に機能拡張し、さらにavrdudeをGUIで操作するavrdude-GUIがセットになっています。FT232RLbitbangライタには最も信頼性が高いソフトであると思います。システムの構築がやや複雑なためその手順を書き留めておきます。また、気付いた点をメモします。私の使用環境は OS=Windows XP SP3 です。
環境設定
@ .NET framework WinXP→3.5 Win2k→2.0 GUIはこれを使います。
A avrdude-2011-RC7c.zip 書き込みソフトです(2011.07.11現在の最新版。更新されるとファイル名が変わります)。専用のavrdedu.exeとGUIソフトが用意されています。senshuさんのサイトで検索してダウンロードします。
これを解凍して得られるファイルから setup.bat を実行すると必要なファイルが c:\bin にコピーされますので便利です。このときirukaさんのpic18spxライタで使うpicspx.exeとpicspx.iniもコピーされますが、rukaさんのpicspx-gcc.exeソースをsenshuさんが修正したものですから原典とは異なっています。
B @FTDIドライバ FT232RLBitbangライタに必要です。FTDIのサイトで、少し下にあるダウンロード選択で、 setup executable をダウンロードします。(最新のバージョンに注意します)
実行ファイルですからダブルクリックでインストールされます。なお、FT232RLを実装しないでインストールして、後につなぎますと自動的にドライバが選択されます。
C libusb このサイトでlibusb-win32-devel-filter-1.2.4.0.exe(赤字部分はバージョンで変わります)をダウンロードして実行します。.exeですからダブルクリックで開始して指示に従います。USB機器のコントロールに必要です。
このファイルは場所がわかりにくいので次の順にたどります。
libusb-win32-releases を選択
最新版(例えば 1.2.4.0 )を選択
libusb-win32-devel-filter-1.2.4.0.exe を選択
D hidspx HIDaspxライタに必要です。senshuさんのサイトのサイト内検索で HIDaspx関係ファイル[Download] で調べます。表の中から hidspx-2011-0628.zip をダウンロードします(赤字部分はバージョンで変わります)。
解凍して\binフォルダの setup.bat を実行すれば必要なファイルが(avrdudeと同じ)c:\bin にコピーされます。
以上で環境設定は終わりです。
使用メモ
2011.06.26 プログラマの整理: RC2版からプログラマの配列順が変わりました。プログラマは70数種ありますが手持ちのものは少ないので使わないプログラマは削除しました。
一般のエディタを用いて c:\bin\avrdude.conf の「programmer」から「;」の記述を削除しました。結果として、"avrsp" "hidspx" "picspx" "ft232r1" を残しています。選択がらくになりました。ただ、このファイルはsetup.batで上書きされるので別名でも保存しています。
2011.06.26 自分用helpの作製: C:/bin/avrdude-html/avrdude.html はコンテキストメニューで見えますのでここのトップに自分用のメモ書きをしておきます。手持ちのライタ使用時のオプションを書いています。(もの覚えが悪いので重宝しています) このファイルは存在すれば上書きされないのでバックアップしていません。
2011.06.26 GUIのport窓: (ft232r1)を選択したときに usb の文字が現れません。が、問題なく稼働します。
工事中です
------------------------------------------
avrdude の使い方 (注意;上記avrdude-GUIのものとは違います。)
オリジナルUSBaspは同梱のavrdudeを使うことになっています。その使用法を調べましたので、もう使わないのですが、ここに残します。
AVRasp付属のAVRdeduの使い方を確認するために、Tiny2313のBポートにLEDを接続し(Hで点灯)、10MHzのセラミックレゾネータを付けたものを用意しました。
AVRdude.exeとavrdude.confの2つのファイルはC:\USBaspフォルダに置いてあります。この前提でお読み下さい。
@プログラマとデバイスを指定して認識を確認します。コマンドプロンプトの黒い窓を用意して、AVRdude.exeをDDした後、次のようにタイプします。空白に注意を。
C:\WINDOWS\system32>C:\USBasp\AVRdude.exe -c usbasp -p t2313
ここで -c オプションはプログラマの指定です。usbaspを常に指定します。 -p オプションはデバイスの指定で、t2313はTiny2313の略号です。(-p以下を書かないで
実行すると使用可能なデバイスと略号の一覧が表示されます。)
実行すると次の結果が得られました。
読みとられてsignatureが返されています。
Aヒューズバイトを読みとります。 このときはインタラクティブモードにするのがよいようです。 -t オプションで入ります。
新しいプロンプトに ? を入力すると、使えるオプションが表示されます(略)。
そのうちの lfuse hfuse efuse 続けてをdumpします。
これでヒューズバイトが読みとれました。ChaNさんのavrspに比べて操作に手間がかかります。
インタラクティブモードは quit で終了します。
Bプログラムを書き込みます。上に書いたように -U オプションで、-U flash:w:"c:\data\led8.hex":a とします。flashはプログラムメモリ、wは書き込み、
最後のaは
hexのファイルタイプを自動判別することを示します。書き込みファイルは、「:」が含まれているときはダブルクオートで囲む必要があるようです。hexファイルは
フォルダ
C:\dataに置いています。ダブルクオートで挟まれたファイルパスとファイル名はDDで持ってきます。
書き込みが終了してプログラムが走り出します。なお、このときはTiny2313はデフォルトのクロック0.5MHzですから、lowクロック用にハードウエアを設定しておきます。
Cヒューズを変更します。Tiny2313のクロックはデフォルトで0.5MHzです。このときのヒューズLは 0b01100010=0x62 です。これを 0xe2 にすれば内蔵RC4MHzに、
0x8fに変更すればセラミックレゾネータ(>8MHz)になります。 内蔵RC4MHzにするときは、
# avrdudu.exe -c usbasp -p t2313 -u -U lfuse:w:0xe2:m
と書きます(プロンプトなどは省略しています)。 このとき、-u オプション(小文字の方)が重要です。-uでセーフモードを抜け出します。だからヒューズが
変えられることになるそうです。なお、ファイルタイプの「m」はimmediate mode だそうです。ファイルを用意せず直接書き込めるので便利です。
lfuseと同様にhfuse、efuseが変更できます。
Dhexファイルを読み出します。ファイルに書き出すときは -U flash:r:"パス・ファイル名":i を使います。
もちろん -c -p は必要です。読み出した.hexファイルは当然、書き込みに使えます。
見ればよいだけなら、インタラクティブモード(-t)にして、dump flash ・・・・なのですが、一部しか表示されません。
Usage: dump <memtype> <addr> <len> ですから、dump flash 0 1000 と書きますとはじめから1000バイトが表示されます。
Eその他EEPROMの書き込み読み出しがあります。使ったことがないのですが、「flash」のところを「eeprom」に置き換えるといいようです。
ヒューズの読み出しと変更、プログラムの書き込みと読み出し、これらができたらプログラマとして実用になります。
WinAVR20040720版にはC:\WinAVR\doc\avrdudeがありましたが、20050214版にはないようです。この説明がいいと思いますので、
ここに置きます。(これを見ようとすると、
インストールが必要で、いま使っているものが書き換えられてしまう。ちょっと取り出すわけにはいかない。)
AVRdudeの使い方について日本語で解説されて
いるページを見つけられませんでしたので、自分のメモを兼ねて書いてみました。その他の情報がありましたら、ご連絡をお願いします。
付属のAVRdudeは次のデバイスに対応しているようです。
90S1200 | MEGA103 | TINY12 | 90CAN128 |
90S2313 | MEGA128 | TINY13 | |
90S2333 | MEGA16 | TINY15 | |
90S2343 | MEGA161 | TINY26 | |
90S4414 | MEGA162 | TINY2313 | |
90S4433 | MEGA163 | | |
90S4434 | MEGA169 | | |
90S8515 | MEGA32 | | |
90S8535 | MEGA64 | | |
| MEGA8 | | |
| MEGA8515 | | |
| MEGA8535 | | |
| MEGA48 | | |
| MEGA88 | | |
3.3Vターゲット
特に記載のないライタは、Vccが5Vです。ISPでの書き込みはターゲットボードのVccで動いているAVRデバイスにライタのIOをつなぐわけですから、双方のIOレベルが
あわないと不都合が起こることが考えられます。たとえば、ライタが5V電源で、ターゲットが3.3V電源の時はVccを超える入力になります。過大電流が入力ダイオードに
流れて破損する危険があります。
私のライタは出力段のVccをターゲットから取ることにして、3.3Vでも問題なく使えるようにしています。
(2011.06.02)最近はUSB接続のライタを使いますが、ライタの電源はUSBバスから取っているものを多く使うのでターゲットのISP2番ピンにVccを接続していない場合が多くなっています。Vccが3.3VのターゲットではすべてのライタのIOに120Ωを入れてあるから実害は無いとは思うのですが3.3Vに切り換えるライタを使うか、ライタ電源にダイオードを挿入してVccを4V強にしたものか、3.3V専用のものを使うようにしています。ちなみに、3.3Vのライタでも5Vターゲットに問題なく書けているようです。
にわとり−たまご ライタ
USBaspライタを作るためのライタです。COMポートのないUSBオンリーのノートPCではUSBaspライタが作りやすく使いやすいライタです(kkkさんの
avrspx.exeでそうなりました。)
ところが、これにはファームを書いたAVRが必要です。にわとりが先かたまごが先か....その解決法は...ついに出ました。kkkさんの作品です。
でんし研のTADさんが、石井朋和さんのフリーソフト
EasySend V1.02 を使って信号線1本でAVRに書き込む RS-CR方式 のライタを開発しました。
信号線が1本だけなら、単純にUSB-シリアル変換ケーブルで書けるはず..ということでkkkさんがavrspx.exeにこの方式の書き込みソフトを組み込んでしまい
ました。
USB-シリアルコンバータのTXD(SD)だけを使ってmega8(48,88,168)に簡単にファームを書くことができます。
連絡を受けて、私の環境(はじめはcp2102を使いました)でテストしたのですが、再現する事ができませんでした。手元にノートPCはありません。デスクトップは
COMポートを持っていますが、これを使ってはおもしろくない。変換ケーブルは持っていない。他のライタの関係で FTDI232BM と SiLabのCP2102 を使った自作変換
器を作っていたのでそれを使うことにしました。
CP2102ではなかなか進まなかったのですが、kkkさんが次々に新しい内容を加えてくれて改良されていきました。CP2102では最後のデータがどうしても書けなかったよう
です。変換を232BMに変えると簡単に書き込めました。そのご、kkkさんがダミーデータを追加する方法を組み込んでくれましたので、最終的にはCP2102も正常に動作
するようになりました。
前置きが長くなりましたが、私がテストした方法を元に、このライタの紹介をします。
このライタはシリアル変換ケーブル(RS232Cタイプ)を使うために、負論理となっていますが、変換ICの出力は正論理ですから、位相反転のため(cp2102は
3.3VIOのためレベル変換も兼ねて)トランジスタ2SC2458(2SC1815)1段を入れています。市販の変換ケーブルではA点に入力して10kΩで受けるのですが、
トランジスタを経由したときはSCKのLが十分下がらないようで、書き込みができませんでした。10kをスキップして直接SCK(A'点)につなぎました。
(クリックで大きくなります)
mega48でUSBaspを作るという想定で使い方を書きます。
まず、ソフトウエアavrspx_b10_5.zipをAVR WikiのSandBoxのavrspのUSBasp対応から
ダウンロードします。
中を開けると、eggというフォルダがありますが、この中にすべてが入っています。(以後、説明がくどくなりますがご辛抱ください)
このeggフォルダをc;\(ドライブCのルートディレクトリ)にコピーします。そしてC:\eggのショートカットをデスクトップに作ります。
(作らなくても、フォルダ内容が画面に出ていればよろしい)
eggの中に、egg.pdfがありますからオリジナルの回路図を見てください。(私のものはパスコンをさぼっています)
書き込みのハードウエアを用意します。DIPのmega48とブレッドボードが似合うと思います。書き込み終了時には水晶がないと使えませんので、12MHzの水晶とコンデンサ
は前もって用意しておきます。
PCとのインターフェイス@COMポートケーブル(これは意味がない シリアルポートがあるのだから)、AUSB-シリアル変換ケーブル、BFTDI232BMなどのICを使った
USB-シリアル変換器、のいずれかが必要です。(Bが安い?) Bの時はトランジスタ回路部品も用意してください。
新品のmega48は内蔵RC1MHz発振のクロックになっていますから、水晶がなくても書き込めます(最後の瞬間に発振はしなくなります)。
ハードの結線は慎重にチェックします。ライタの性質から、配線が間違っていても素直にデータを出したら終わります。チェック機能はありません。
書き込みの準備をします。
PCで使用するケーブルのポート番号を調べます。私のPCではUSBシリアル変換ではcom3,4になります。eggのegg48.batをメモ帳などで5行目の SET PORT=1 を変更します。
「鶏と卵.txt」をご覧ください。
書き込み段階です。
eggフォルダをデスクトップに小さく出しておきます。
コマンドプロンプトを立ち上げます。カレントディレクトリをeggに移します。cd スペース \egg と入力すると、プロンプトがC:\egg>になります。
egg48.bat を黒いDOS窓にドラッグアンドドロップ(DD)します。
リターンキーを押すと ....続行するには何かキーを押してください。 と出ますから、ここでmega48の電源スイッチを入れて、リセット解除スイッチを
1秒ほど押してから、リターンキーをたたきます。
1分ほど待ちますと書き込みが終了します。(私は、リセット解除キーを押したままリセットの抵抗1kΩを抜きます)
電源を切って完了ですが、無事書けたかどうかはUSBasp完成までわかりません。
今後の改良で.eepファイルはなくなるかもしれません。(必要がありません)
書き込みテストをつうじて、再現性、信頼性はかなり高いのではないかと思います。書き込みできないときも、不安定な状態でなく、プログラムとハードウエア
が整合していなかったと思われる安定したものでした。
書き込み確認機能のない中で不安もあるかと思いますが、ハードのチェックに注意すれば成功するものと思います。
これでノートのUSBオンリーでもAVRライタ自作が楽になるでしょう。
ご質問・ご感想などは掲示板かメールでお願いします。実行されましたら是非結果をお寄せください。Wikiへでも結構です。
HAG hidspxのGUIツール
hidspx-GUIに刺激を受けて、以前に作ったGUIを変更してみました。Delphi6を使っていますが隔靴掻痒の感があって今ひとつの感はありますが実用にはなると思います。ランタイムルーチンを別途用意することも要らなくてフォルダに置くだけですから便利なこともあります。
デザインは遊び心も含めて小さめにしています。
概略:
・このプログラムをhidspx.exe、hidspx.ini、fuse.txtと同じフォルダに置くと立ち上げでhidspxを認識します。最初はhag.iniファイルが無いのでエラーとなりますが、無視して実行すると2回目からはエラーが出ません。
・コマンドラインオプション に -pb2 -d10 などを書くとポートの変更やクロックの違いに対応できます。
・デバイスの読み取りを行うと、チップを自動認識し、fuseを読み取ります。(同時にターゲットをリセットします。)
・書き込みファイル(.hex)はダイアログからでもドラッグアンドドロップでも可能です。.eepファイルも同じです。
・読み取りはファイルに保存する方法とメッセージボックスに表示する方法の両方を用意しました。
・コマンドプロンプトが使えるように立ち上げボタンを付けました(ディレクトリの優先順位は @.hexファイルのある場所 Aドラッグアンドドロップされた.cファイルのある場所(表示はされません) Bhidspxがある場所 です)。
・進捗状態はaudinさんのお陰でメッセージボックスに表示されます。
・インストール不要なのが唯一の取り得です。
・操作結果はメッセージボックスの内容で判断します(hidspxのメッセージを表示しているだけです)。
・hexファイル、eepファイルの保存時はファイル名の書き込みに関係なくダイアログからきめることになります。ご了承下さい。
・使用後は、画面の大きさ、画面の位置、.hex/.eepファイル名、コマンドラインオプションをhag.iniファイルが記憶します。
・フラッシュ/EEPROM/その他 はボタンで切り換えます。
・黒い窓に コマンド を表示します。hidspxをコマンドラインで使うときのコマンド、オプションを表示することになります。
名前は「ハグ」です。「ハ」には濁点を付けないでください。「醜い鬼婆」でも「沼地」でもありません。読みやすい名が好きですから、HIDaspx用GUIから無理矢理付けました。
ChaNさんの avrsp を使っておられる方は、hidspxがavrspを拡張したものですから hidspxを使うことはavrspを使うことになります。使用するライタのハードによってポートが異なりますので コマンドラインオプション に書き込んでおくと無意識で使うことができます。
実行ファイル/ソース hag.zip
Turbo Delphi でも読めるように標準コンポーネントに変更したもの(少し違います) hag_std.zip
ご使用後の感想など 掲示板 や メール でお送りいただけると幸です。
コンパイルとAVRへの書き込み
プログラムの完成までは、ソース追加・修正 → コンパイル → 書き込み (実機テスト) を繰り返しています。
自分流の方法を書き留めておきます。
ソースの編集には「sakura」エディタを使っています。
コンパイラは WinAVR です。
書き込みソフトは hidspx をコマンドラインで使います。
下の図は細部が見えるように位置を動かして重ねたものです。
準備段階:
@プログラムは1つ毎に単独のフォルダに作ります。このフォルダには .Cソースファイルとmakefileを置きます。
右に見える小さな窓がこのフォルダです。
A書き込みツールとして c:\0avr\フォルダに hidspx.exe hidspx.ini fuse.txt を置きます。
左下の小さな窓がそれです。
Bプログラムファイルのフォルダを右クリックして、このフォルダ(ディレクトリ)にコマンドプロンプトが開くように設定しておきます。→覚え書き
Cコマンドプロンプト画面で↑↓キーを使って以前のコマンドを再実行できるように設定しておきます。→同上覚え書きの「CMDプロンプト画面のコピー&ペーストの方法」
Dソースエディタのショートカットを準備しておきます。makefileと.cファイルをドラッグアンドドロップして編集します。
実行段階:
@makefileをフォルダに置いて(大概はコピーしてくる)、エディタで修正します。
A.cファイルをエディタで書きます。
Bプログラムフォルダのアイコンを右クリックして、このディレクトリでコマンドプロンプトを開きます。
Cコマンドプロンプトで make とタイプしてコンパイルします。右の小窓にhexファイル他多くのファイルができます。
エラーストップしたらソースを修正します。
Dコンパイルが成功したら、コマンドプロンプトのコマンドラインに hidspx.exe をドラッグアンドドロップします。
1つ空白を開けて、プログラムのhexファイルをドラッグアンドドロップします。
EenterキーでターゲットAVRに書き込まれます。
これらを繰り返します。
なお、書き込みの前に hidspx -r を実行して、接続が正常なことを確かめたり、hidspx -fLxxxxxxxx -fHxxxxxxxx などでfuseを設定します。(fuse書き込み時は -d10 オプションを付けて、書き込みを確実にします)
(よく使うhidspxのオプションは -r、-rp、-rp>filename、-rf、hexfilename 、-fL/H/X です。)
ライタ雑感 2011.06.19
最近のPCはUSBポートだけのものが多いようです。USBポート接続のライタについて感じたことを書いてみます。(私のPCにはプリンタポートもCOMポートもあるのですがほとんど使っていません。)
結論からいえば、HIDaspx、pic18spx、FT232bitbang、USB-SPI系について考えます。
HIDaspxは製作が簡単でかつ安価にできます。そして、多くのOSの元で安定に動いていると報告されています。windowsのみならずMACやLINUXでも使えるそうです。極一部のPCでは安定に働かないという報告もあるようです。
pic18spxはHIDaspxとほぼ変わらないコストで製作できて高速で動く上にUSBインターフェイスがハードウエアで用意されているので安定性が特によいとの報告があります。製作にはpicライタまたはHIDaspxが必要ですがHIDaspxに次いで安価に作製できます。読み書き速度が速い特長を持ちます。
FT232bitbangライタはAVRライタが無くても自作できるライタです。FI232RLを使えば安価に製作できます。ハンダ付けの完成しているモジュールを使えばブレッドボードだけでライタができます。かなりの性能を持ちますのでこのライタだけで趣味のAVRを楽しむことができるでしょう。私自身はすでに多種のライタを持っていますので特に必要はないのですが好奇心で作ってみました。
USB-SPI系ライタはChaNさんが以前から公開しているもので、FT232RLのようなUSB-シリアル変換デバイス(cp2102も同じです)にAVRTiny2313を付け加えた標準的使い方のライタを考えています。構造が複雑になり自作の手間は増えますが十分高速で読み書きできるレベルまで開発されています。
ライタにはファームウエアが必要で(FT232bitbangを除いて)、かつPCで書き込むためのアプリケーション(書き込みソフト)が必要です。これらのソフトを自作できるかまたはメンテナンスができれば問題はないのですが、私の場合にはどちらもできません。万一、これらのソフトの更新が途絶えることになるとその後の新しいデバイスは扱えなくなります。(かつて、kkkさんがavrspxを作られ、重宝させていただきましたが更新が止まりました。実質的にhidspxに引き継がれましたから現在では引き続き使えています。)
その意味で2種以上のライタを常用しておくのがよいのではないかと思うところです。HIDaspx、pic18spx、USB-SPI系のソフトウエアはそれぞれ別の方が開発されていますので私としては安心感が大きいところです。
ライタの使い勝手は使用者のスタイルによるところが大きい気がします。私の場合はエディタでプログラムを書き、コマンドプロンプトでmakeを実行してhexファイルを作ります。同じコマンドプロンプトでライタの書き込みソフトを走らせて書き込みます。これを繰り返すわけですがコマンドラインのリピート機能を使えばそれぞれを一度実行した後は↑キーだけでプログラムの開発ができますからコマンドライン実行型のライタソフトが便利だ、ということになります。ただ、Arduino-IDEを使うときはこの方式は使えませんのでArduino-IDEを前提に開発されたavrdude-GUIが便利です。
AVRデバイス使用時はヒューズ設定はほとんど一度かぎりですからかなり神経を使い慎重に書き込みますのでその手間が多少多くても問題にしないことになります。
幸いなことにhidspxはavrspの発展系ですから同じオプションを使える場合が多いので助かります。
先人が苦労して作っていただいた作品を感謝の気持ちを持って使わせていただいているわけですが、結果的に自分の都合のよいところだけを利用することになっています。十分に活用していないことになりますが浅学の身にはやむなきこととご理解をいただきたい次第です。
2011.06.26 AVRで遊んでいるかぎりライタと書き込みソフトは常に使う道具であるわけですが、何種類かのライタを作ってきたその時期にはそれぞれの想い出があります。そのライタを開発し、ライティングソフトをかかれた方がおられてその方の雰囲気を感じつつライタを作り書き込みをしてきました。その意味でいくつかのライタを使い分けることは素人遊びの特権かもしれません。そこでは効率やコストにこだわらず雰囲気を求めて使うことができるからです。後発の道具が便利であることは一般に認められるのですが、能率は悪くてもオリジナルのソフトを使いたくなります。もし、これを職業にするなら考えの根本が変わるでしょう。給料を支払っている技術者にライタの自作を求めると人件費だけで簡単なものでも1万円を遥かに超えることになるでしょう。メーカー品を買いなさい、と言わざるをえません。私がAVR遊びをはじめた頃当時の給料が10数万円(リタイヤ後の嘱託はこの程度)でライタが1万円を超えました。当然自作の道しかありません。また、そのお陰でAVR遊びが一層楽しくなったのは事実です。これからも素人らしくAVRを楽しみたいと考えています。同じような考えの方がおられましたら効率だけにとらわれない楽しみ方を考えていただくのはいかがでしょうか。