2010年3月21日日曜日

【AVR】HIDaspx_Writer(1)

【Egg Writer】
 何台も同じモノを作る可能性は低いのですが、これは自身の備忘録です。 過去の製作と類似のモノをもう一度作ろうと思ったのですが、些細なことのようであって、実は重要なところを忘れてしまっていました。当時の簡単なメモも残っていたのですが・・・。もう少し詳しく書き置くことにしましょう。

 テーマ:これはAVRマイコンのプログラム開発に使う「メモリ書込器」を1から自作する話しです。

 パソコン(PC)のUSBインターフェース経由でマイコンにプログラムを書込む「USBライタ」の自作トレンドはATtiny2313を使った「HIDaspxライタ」が主流の勢いです。それが無いと世間の進歩に遅れをとり、不都合もあるようなので製作することにしました。なお、類似のライタとしては、ATmega48を使ったUSBaspと言うモノを作ったことがあって愛用していました。類似なので同じように旨く行くだろうと思って始めたら、意に反して思ったようには行かないところがありました。だから忘れぬうちの備忘録作りなのです。(笑)

 作るにあたって、すでにあるAVRマイコン用プログラム・ライタの助けを借りるのでは面白くありません。つまり、AVRマイコンに初めて取り組む人と同じ条件で始める訳です。(そこで所謂「鶏と卵」の関係にあたるエッグ・ライタの製作で行くことにしました) 使うノートPCはレガシーフリー、即ちUSBインターフェースくらいしかなくてRS-232Cシリアルポート(COMポートとも言う)やパラレルポート(LPTポートとも言う)が省かれた(最近の)マシンを想定することにしました。

 既にPICやAVRマイコンにお馴染みの人には以下の説明など無用だと思います。しかし、簡単に書いておきましょう。 マイコン工作ではプログラムを書込む道具が必要なのですが、「その道具を自分で作るにはプログラム書込み済みのマイコンが必要」と言う問題があるのです。 簡単には、よそから「書込み済みのマイコン」を貰ってくれば良い訳です。 しかし、よそを頼らずにごく簡単な「簡易書込器」・・・しかもマイコンは使わない・・・を作って「最初の卵」を産み落とせば良いことになります。 その簡易書込器がこの【Egg Writer】と言う訳です。

 プログラムのライタ(書込器)もUSB接続の市販品があって驚くほど高価でもないので購入してしまうのも手でしょう。労力を考えたら案外安いものかも知れません。しかし、ひと手間掛けて自分で作れば数100円の費用で手軽に遊ぶことができます。 実用に「使える道具」を自分で作ると言う楽しみもあります。 そうした趣旨からライタを自作する人も多く、製作を扱う記事には人気があるようです。

 上の写真は秋月電子通商で売っているUSBをRS-232Cに変換するケーブルを使って、USB経由でプログラム書込器用のAVRマイコンを作っている所です。これが「簡易書込器」を使った最初の一歩になるわけです。その作業手順をメモっておくのが、このBlogを書く意味です。

【Egg Writerの回路】
 何はともあれ、最初の1個だけプログラム書込済みのAVRマイコンを強引(?)に作ってしまおうと言う訳です。 図がそのための回路です。(上の写真参照)中央にあるATtiny2313と言うのがマイコンです。秋月電子通商で@¥100-で売っている。(参考:2017年現在では値上がりしています)もちろん買って来たままでは何のプログラムも書込まれていません。これに書込んだらプログラム・ライタ用のマイコンに変身する訳です。(注:旧型のAT90S2313は使えません。プログラムの書込み方に違いがあるからです)

 新品チップに書込むのが前提なら12MHzの水晶発振子と22pFのコンデンサ(2個)は不要です。 但し、あとで必要なので持っていなければ買っておきます。取りあえずの目的なら、抵抗4本とコンデンサ2本、あとダイオード1本だけでも良いでしょう。(ダイオードはなくても大丈夫そうですがマイコンの端子に逆電圧が印加されるのが気になるので私は入れておきました)
 右のD-SUB 9pinコネクタにUSB-RS232C変換器(USBシリアル変換ケーブル)を接続し、その先をパソコンのUSBに接続します。 なお書込む時には回路に+5Vを与える必要があるので、DC+5Vが出せる電源装置も必要です。(+3〜5Vの範囲で良いので単三乾電池を2〜3本直列にし電源の代用にしても良いです。電池は1本では電圧が足らず4本では高すぎます)

 一回こっきりしか使わないのが普通ですから、立派なものを作る必要はなくバラック配線あるいはブレッドボードに作れば良いでしょう。 これもプログラム・ライタには違いないですが非常に簡易なものであって常用には適しません。常用するために必要な確実に書込めたか否か確かめる重要な機能がないのです。 なので、上の写真のようにブレッドボードに組み立てました。恒久的に使う物ではないからそれで十分でしょう。 厳密に言えば不確実なライタなのですが、なるべく単純化し危なげな要素を極力なくすことで信頼性を上げているとも言えます。

書込手順の備忘以下、手順+ポイントを書いておく。
(1)USB-RS232C変換ケーブル・・・・
秋月電子通商で売っているものを使う。@¥950-だそうだ。(リンク→これ)PCには付属説明書の指示に従い専用のドライバソフトをインストールしておく。

(2)Setcom25・・・・
エレコム製のCOMポートの割付け変更用プログラムをどこかで探してPCにインストールしておく。このソフトは様々な場面で有用なので持ってると便利だと思う。なお、本家エレコムさんのサイトのSetcom25はこちら

(3)LEDと4.7kΩの抵抗器・・・・
直列にしたものを作っておく。LEDはお好みの色で。これはUSB-RS232C変換ケーブルが確実に動作しているかビジュアルに確認するために使う。実際はオシロスコープを使ったが、無ければ「LED+抵抗器」でも十分役立つ。D-SUB9ピンコネクタのTXD(Pin3)に4.7kΩを通してLEDのアノード側を、カソード側をSG(Pin5)に仮に接続しておく。なお、オシロを使う場合は、プローブのGNDをPin5に接続し、Pin3の変化を監視する。垂直軸は5V/divにセットする。水平軸は適当でも良いが1mS/divくらいで。

(4)COMポートのセット・・・・
Setcom25をつかって、USB-RS232C変換ケーブルがCOM 1に割り当てられるよう変更する。 既に別のなにかがCOM 1に存在すれば、事前にそれを空いた番号へ割り当てておく。ポート番号を移したら一旦PCは再起動が必要なようだ。なおポート番号を移さずに済む方法もありそうだが、これが一番簡単で確実そうに思えた。

(5)HIDspxのダウンロード・・・・
ライタに命を吹き込むプログラムである。ネット上から圧縮されたファイルをダウンロードし、解凍してPCにインストールしておく。これは真っ先にやっておいても良い。HIDspxは取りあえず、ここにあるようだ。2011年3月6日現在のバージョンは「hidspx-2010-0823.zip」のようだがアップーデートされる可能性もあるからその時は最新版を。付いてくるHIDaspx.pdf:説明書は良く目を通しておくこと。(しかし如何にも良くわかった人が書いた説明であって無知の人に理解は難しそう。パソコンやマイコンに馴染みが無いと用語も含めてチンプンカンプンで難解だろうと・・。読み返すと多少はわかってくるのかも・笑)

(6)egg-writeバッチ(ソフトの一種)を準備・・・・
実行の前に(3)のLED+抵抗器が付けてあることを確認。Eggライタへの接続はまだしない。 hidspxを解凍したその中にあるbinフォルダを開き、さらにその中のfirmwareフォルダを開いてみる。中にegg-write.batと言うのがある。これをマウスで選んで実行する。バッチファイルと言うのは一連の作業を自動的に実行するためのもの。ここでは簡易書込み器へのプログラムの転送やヒューズビットの書き替えなどの一連が記述してある。中身をいじる必要はないがTEXTエディタで見ることができる。

(7)egg-writeバッチを試行・・・・
さっそくegg-writeバッチを実行し指示に従って進めると、先に接続しておいたLEDが40秒間ほど明滅るだろうか? 明滅すればデータはRS232Cの先端まで出て来ているとわかる。 これが確認できるまでは「Eggライタ」に接続しても意味は無い。 なお、オシロスコープで見ると約±10V振幅のパルス信号が40秒間くらい継続するのが観測されるだろう。 もし旨く行かなければUSB-RS232C変換ケーブルがCOM 1にセットされていないのが原因では? この試行は何回やっても支障はないから旨く行くまで再確認しながら試して見ること。

(8)簡易ライタ(=Eggライタ)に接続・・・・
上記でRS232Cの所まで信号が来ているのが確認できたら、D-SUB9ピンコネクタのTXD(Pin3)とSG(Pin5)を上記Eggライタ回路図の所定の場所に接続する。

(9)書込む・・・・
Eggライタに+5V電源を与える。上記(7)と同じことを実行する。PCのDOS窓画面(黒い背景の小画面)に「リセット解除ボタンを押せ」と出るので、その通り行なう。2〜3秒も押せば十分だ。済んだらPC画面の指示に従いReturnキーを押す。画面には試行した時と同じように進行状況が刻々と表示されるだろう。約40秒ほどで終了しDOS窓画面も消える。これで書込み完了だ。


 文章で書くと長ったらしいが、実際は手順を飲み込んでいれば5分も掛からずに終わるでしょう。特別難しいこともありませんが、しょっちゅうやることではないから忘れ易いのです。あとで辿れるように記憶が鮮明な今のうちにメモっておいたと言う訳です。さらに書き切れなかった細部は忘れても必要な事項さえ網羅されていればおそらく何とかなるでしょう。(笑)

 この簡易なEggライタは、一見怪しそうな方法にも思えます。しかし説明を読めばAVRマイコンの書込み原理に従った旨い方法で実現していることがわかります。したがってPCから来るコネクタの所に確実にデータ信号が出ていて、Eggライタの配線に間違いが無ければ、あとは指示された手順通りに行なえばちゃんと書込める訳です。

【確認方法・1】
 上の回路では書込めたかどうかを確認する術がありません。 確認方法の一つは、さっそく簡単な回路を作ってPort B2(Pin14)にR+LEDを付けてみることです。 このように点灯すれば成功したと思って良いです。

 書込みに成功していれば、外部水晶で動作するモードにプログラムされているので、もちろん外付けの水晶発振子が必要です。 従って、水晶発振子を付けると上記のLEDが点灯し、水晶がないと点灯しなければ、書込みの成功・不成功がわかります。
 その派生の方法として12MHzの水晶が発振しているか直接確かめる方法でも書込みが行なわれたか否かの判定にはなります。ジェネカバ受信機があれば12MHz付近を探ってみるのも良いでしょう。

【確認方法・2】
 これは反則ワザですが、もう少し確実な確認方法があります。BASCOM-AVRとパラレルポートに付けるライタが動作していれば、このようにメモリの読み出しができるから、書込めたことがわかる。

 もっとも、そんなライタがあるなら何も上記のようなEggライタを作る必要はないのですが・・・。(笑)

◎以下は既に別のプログラム・ライタを持っている場合の記述です。
 HIDaspx用のATtiny2313を作るには、ダウンロードして解凍したフォルダの中にある「main-12.hex」と言う、intel-hexa形式のプログラム・ファイルを書込めばよいです。

 手順ですが、まずhidspxを解凍したら、その中にあるbinフォルダを開き、さらにその中のfirmwareフォルダを開いて見ます。 firmwareフォルダの中に「main-12.hex」と言うファイルがあるでしょう。これをBASCOM-AVRのプログラム・メニューの画面に入って読み込んでからマイコン(ATtiny2313)に書込めば良いのです。

 もちろん、この方法ではヒューズビットの書替えも手作業で行なう必要があります。 ヒューズビットLowは「11111111」で、Highは「11-11011」にします。これでUSB接続用の書込器に使えるATtiny2313が作れます。

 AVRマイコンの開発環境をデスクトップ機から最近のノートPCに移行したいならUSBライタを自作すると良いでしょう。既に稼働中のプログラム・ライタがあればhidspxからもBASCOMからでも簡単にできるでしょう。Eggライタを使う方法よりも簡単です。 以上詳細な記述は端折ったのですがBASCOM-AVRの使用経験があるならこれで概ねわかると思います。


 この続きでは上記のATtiny2313を使ったライタの製作記を予定します。 Eggライタによって、すでに内蔵のプログラム(ファームウエア)は書込めた訳ですから、あとは単に配線するだけです。 製作自体は目新しくもありません。 製作後の動作確認を含め専用の書込みプログラムの使い方とそのGUI版を紹介し、さらにBASCOM-AVR側の初期設定の方法を扱う予定です。HIDaspx Writerを実用するための重要情報があるので参照して下さい。 de JA9TTT/1

このBlogの続きは→こちらから。

# 読んでいて、わかりにくい部分あるいは勘違いなど発見されればコメントをぜひ。

きょうは、このあとお彼岸の墓参です。

(Bloggerの新仕様に対応済み。2017.04.03)

8 件のコメント:

T.Takahashi JE6LVE/JP3AEL さんのコメント...

おはようございます。

昨日は暖かくすごい風でした。

AVRはISPで書き込みが出来てFBなのですが、
その反面、PIC普及期の秋月ライターの様な
標準ライターが無く色々なライターが乱立しているので
最初に取りかかる敷居を上げていますね。
今ではBASCOMでも使える純正のAVRISPmkIIを秋月で購入するのが一番確実なのでしょうが。

[確認方法・2]は笑いました。
それが出来たらそっちを使いますって。HiHi

TTT/hiro さんのコメント...

JE6LVE/3 高橋さん、こんにちは。 こちらも暖かですが、強風で空が霞んでいます。 黄砂の影響でしょうか?

さっそくのコメント有難うございます。
> 最初に取りかかる敷居を上げていますね。
初心者には「定番の道具」が有難いですからね。 あれもこれもと道具が乱立では混乱するばかりだと思います。多くの人のお陰でライタが進歩して来たことは理解していますが、初心者は途中はどうであれ「決定版」が欲しいだけなんですからね。 まあ、当分はC/Pも良いのでHIDaspxがライタの定番になるのでしょう。PC側のライティング・ソフトもHIDspx-GUIが適宜改訂されながら継続するのでしょう。

> 今ではBASCOMでも使える純正のAVRISPmkIIを・・
これが一番でしょうね。HIDaspxを自作するにもUSB-RS232C変換ケーブルを買ったり一通りの部品を購入すれば合計¥2kくらいにはなります。ライタは道具であって目的ではないはずですから、その製作労力はアプリケ−ションの方に傾ける方が賢いのではないかと・・・。(笑)

> 購入するのが一番確実なのでしょうが。
既製品を使うメリットはもう一つあると思います。BASCOM-AVRが新チップに対応すれば、当然ライタも対応するようにバージョンアップされます。しかし、自作品は有志が新チップに対応してくれるまで使うことができないでしょう。やはりBASCOMが対応してくれる純正品が私自身の環境下では総合的に見て有利なように思いました。

> [確認方法・2]は笑いました。
はい、そうですよねェ。お馬鹿なことでした。(笑)書込みは大丈夫そうだったのですが、念のためにヒューズビットとファームウエアがきちんと書けている検証をしてみたくなったのです。 このあと実用ライタを作ればすぐ確認できますね。実用ライタの回路もかなり簡単ですから。hi hi

JA6IRK@岩永 さんのコメント...

TTT/加藤さん、こんばんは。
鶏と卵ライターですね!
確か、以前実験されてうまく行ったと報告があったかと思います。
当時当局は、何故かうまく行かず、その後うまく行ったので、WEBで紹介していたのですが、MICROSOFTの当局のサイトは消滅してしまいましたので、記録が全て無くなってしまいました。
その意味でこの記事は貴重だと思います。

TTT/hiro さんのコメント...

JN3XBY 岩永さん、こんばんは。

コメント有難うございます。
> 以前実験されてうまく行ったと報告があったかと・・・
ATmega48を使った、USBaspを作った時に、同じ方法でやりました。 当時それは旨く行ったのですが、今回は同じではない部分があって少し手間取りました。(笑)

> WEBで紹介していたのですが・・消滅してしまい・・・
そうでしたか。たしか岩永さんの所に詳しい手順があったように思い探したのですが発見できませんでした。そうしたご事情だったのですね。

> その意味でこの記事は貴重だと思います。
多少はお役に立ちそうでしょうか? 自分では概ねわかるのですが・・・。(笑)

exJE1UNX tamura さんのコメント...

JA9TTT/1
加藤さん こんにちは

USB接続ライターはとても便利ですね。
レガシーコネクタ類は背面にありますので
工作中に散らかった机で、いよいよ書き込みといったときに、パソコンを前にひっぱりだしたり、覗き込んだりせず前か横の
端子にさすだけで済みますので重宝しています。
時々書き込みはノートパソコン。そして回路図、データーはデスクトップなどといった使い方をするときにも
すぐにライターを抜いて差し替えることができるのが良いです。

長くなりましたが、続編を楽しみにしています。

TTT/hiro さんのコメント...

exJE1UNX 田村さん、こんにちは。

コメント有難うございます。
> USB接続ライターはとても便利ですね。
そうですね。 最近のPCにはUSBがたくさんあって重宝します。いろいろなUSB機器があるので、それでも足りないこともあるのですけれど。(笑)

> すぐにライターを抜いて差し替えることができる・・
それもUSBのメリットですね。 HIDaspxライタは使う前の特別なドライバのインストールがいらないので更に便利とのことです。

Marvie40 さんのコメント...

はじめまして。
昨日からHIDaspexを製作しEggWriterで書き込みをした所、全然だめで、
本日パラレルライターを作ろうかと思っていた時、こちらのサイトにたどり着きました。

回路図をプリントしBBの写真と照らし合わせもう一度BBで組みなおし
(昨日はsenshu氏の回路図で組んでました。)
何度かやってみました。ICの逆指しなどやってしまいましたが2・3回目で成功しました。
うれしいです。

ノートからレガシーに変えてやっても駄目だったので物凄くうれしいです。

明日は、パラレルライターを作ってBASCOMで試したいと思います。

今回の事は忘れないようにBlog か サイトにしておきたいです。

気分はFB!ありがとうございました。

TTT/hiro さんのコメント...

Marvie40 さんこんにちは。

コメント有難うございます。
> EggWriterで書き込みをした所、全然だめで・・・
HIDaspexの説明書にあるEgg Writer回路図も基本的に同じと思いますが、何が問題だったのでしょうね。

> 回路図をプリントしBBの写真と照らし合わせ・・
そのように参照していただけるようでしたら、もう少し詳しく(わかり易く)説明しておくと良いかも知れませんね。検討課題にしておきましょう。

> 2・3回目で成功しました。うれしいです。
成功したようで良かったです。 まずはライタが出来れば、それを足がかりに発展できますから。

> BASCOMで試したいと思います。
BASCOMをお使いでしたら、USBaspライタもお勧めできます。HIDaspexを使いUSBaspを製作されたら良いでしょう。

> 気分はFB!ありがとうございました。
Blogがお役にたってよかったです。

Marvie40さんは、HAMのようですので次回はぜひともコールサイン+実名でお願いします。hi hi