2018年2月16日金曜日

【AVR】 An HIDaspx in-circuit writer, again

HIDaspxというプログラム・ライタ再考
 【HIDaspxの自作例
 最近になってマイコンのプログラミング環境を更新しました。 おもにArduinoに対応するためですが、従来の開発環境も引き継ぎたいと思って更新作業を始めました。

 写真は自作のプログライタで「HIDaspx」と言うものです。 安定して書き込めることから長い間使っていましたが開発環境のパソコンはWindows-XPのままでした。 Arduinoの開発環境はWindows 7に作ったのでそのに合わせて移行したいと考えたのです。

 移行にあったて心配になったのは「HIDaspx」(ライタ本体のハード・写真のもの)およびパソコン側の制御ソフト「hidspx-GUI」がWindows 7の環境でもそのまま使えるかどうと言うことでした。どちらもWindows-XPの時代のかなり古いものだからです。

 さっそく、ソフトウエアの「hidspx-GUI」の方から確認しました。 これはWindows 7の環境下でもあっさりOKで支障なく使えそうです。 そうなると、ライタ本体であるHIDaspxの方はどうかと言うことになります。

 HIDaspxはパソコン側に特別なUSBデバイスのドライバを必要としないと言うのが特徴だったと思います。 さっそくWindows 7のパソコンのUSBポートに接続してみたのですがエラーが出てしまいました。 「ドライバがない」と言うソフト的な問題ではなくてハードウエア的なトラブルのように感じました。 かれこれ10年にもなるハードですから「やっぱりダメか・・」と思ったのですが・・・。

                   ☆

 いくらか悩んだものの原因がわかってうまく行き、Win-XPで行なっていたマイコンプログラムの開発環境がWindows 7へ移行できました。 基本的にそれだけの話です。大した内容はありませんが、開発環境の移行に関する自身のメモとして要点などを纏めておきました。 マイコンのプログラムをいじるのは少数派でしょうし、たぶん開発環境も違いますからほとんどの人には関係のない話です。
 
 【HIDaspxの回路・簡易版
 HIDaspxというのはAVRマイコン用のプログラムライタ(ハードウエアの方)のことです。 山形県立産業技術短期大学校情報制御システム科 千秋広幸教授(2010年当時)の研究室で開発されたものです。 長らく同学科の公開サーバでサポートされていましたが、千秋先生は数年前にご栄転されたようで現在は同学科でのサポートは途絶えています。

 AVRマイコンのプログラム開発環境はArduinoの登場ですっかり様子が変わりました。Arduinoなら特別なプログラムライタなしで開発ができます。 すでにHIDaspxの役目は終わったのでしょうか? さらにサポートが途絶えてしまったことで消え去ろうとしています。愛用者としてはちょっと残念だと思っています。

                   ☆

 新しい環境で動かないのでは価値はありません。しかしわかってみたら初歩的な問題でした。 以前使っていたパソコンではUSBインターフェースのデータライン:D+とD-をクランプするダイオードは必要ありませんでした。 そのため回路図のDZ1とDZ2というダイオード(2個)は付けていなかったのです。 ただしこのダイオードがないとうまくないことが多いとしてHIDaspxが流行った当時は話題になっていたことを思い出します。 新しい環境ではどうやらこれが問題でした。

 新しいパソコンではデータラインのD+とD-を3.6V程度にクランプする必要があったのです。 あいにく3.6Vのツェナ・ダイオードは手持ちがなかったので、代用品として青色のLEDを使いました。青色LEDの順方向電圧は3V少々ありますから十分代用になります。 しかもLEDは光るのでクランプの状態が見えて好都合です。USBでデータのやり取りがあると明滅しますからデータ・モニタの機能が付加されました。 クランプダイオードの追加であっさり問題解決しWindows 7のパソコンでも支障なく使えることがわかりました。

 改造のついでですから、Arduino unoやnanoのISP(=ICSP)端子に直結できるようなピン配置のコネクタを設けておきました。あとでわかるように図面に書いておきます。 実態はコネクタと言うよりも変換ケーブルなのですが・・・。

 HIDaspxライタは少し古くなっていますが汎用プログラムライタとして今でも役立ちます。 回路図のような省部品で作れば容易です。 これから作ってみたいなら以前ダウンロードした製作関連のファイル一式がありますのでメールでもどうぞ。
 ネット上を探すとかつてのミラーサイトに最終版が残っているようなのでダウンロードできそうです。(2018年2月現在) なお、何もないところからHIDaspxライタを作るのでしたら、しばらく前のBlog(←リンク)が参考になるかもしれません。必要に応じてご覧を。

 今でしたらArduinoをプログラムライタにしてhexファイルをいきなり書き込むことも可能でしょう。 HIDaspxの開発関連情報一式の中にあるbinフォルダにATtiny2313用のファームウエア:main-12.hexがあるので書き込んでやればOKです。 外付け水晶で使いますから、もちろんヒューズビットも書き換えます。 ヒューズビットは:Lo=FF、Hi=DB、Ext=FFとします。 (ファームウエアも含めて)難しいようでしたら書き込み済みをサポートします。

 【HIDaspxの配線面
 以前はHIDaspxを作るためのプリント基板も売っていたようです。 しかし現在は望み薄でしょう。 ユニバーサル基板に手配線で 作ることも難しくありません。 あるいは実験程度でしたらブレッドボードでも大丈夫です。

 AVRマイコン用のプログラム・ライタとして応急用以上の働きをしてくれますので恒久的なものを作っておくと良いと思います。 ファームウエア書き込み済みのATtiny2313が一つあれば他に特殊な部品はありません。あとはせいぜい12MHzの水晶発振子くらいでしょう。これも必要なら差し上げます。 製作例ではUSB-B型のコネクタが基板に付けてありますが、不要になったUSBケーブルをカットしてコネクタなしに直接配線してもよいでしょう。 図面左端のコネクタがUSB-Aとなっていますが上記の回路図はそのつもりで書かれています。 USBケーブルの配線色は回路図の通りになっているものが多いようです。

 なお、この写真のようにライタ基板側にコネクタを設ける場合は基板側にUSB-B型のメスを付けます。 USB-Bのメス側コネクタは秋葉原なら手に入りますが、地方では売っていませんので既存のケーブルをカットして直接配線する方法をお薦めします。 USBケーブルでしたら100均で手に入ります。

クランプ・ダイオードの追加
 データラインのクランプ用ダイオードですが、最近はツェナ・ダイオードがほとんど使われなくなったので入手難かも知れません。

 無理にツェナ・ダイオードを探すよりも青色LEDを順方向に使って代用するのが良いでしょう。 もし手持ちに青色LEDがなければ普通の輝度の赤色 LEDを2つ直列にしたものを2組使っても大丈夫です。


                   ☆

  初めてパソコンに接続すると自動的にUSBドライバを探してインストールしようとするかも知れません。 そんな時はドライバ探しはやめさせます。 そうするとドライバがないので云々・・・というアラートが出ますがこれは無視して大丈夫です。 このライタは特にドライバがなくてもUSBコネクタに接続するだけで使えます。 これはWindows 7の環境になっても感じる便利さです。

 HIDaspxですが、コマンドプロンプトの画面からコマンドのキーインで使えます。 しかしGUIソフトを使う方が便利ですし操作間違いもずっと少ないです。 HIDaspxの開発関連情報一式の中にある「hidspx-GUI.exe」というアプリを常用しています。(これは、新環境で真っ先に試したアプリですが・・・笑) デスクトップにショートカットを作っておきました。

 このライタはBASCOM-AVRというプログラムの統合開発環境で使うことがほとんどです。 BASCOM-AVRにExternal Programmer(外部プログラマ)として設定しておきました。具体的な設定方法は以前のBlog(←リンク)にあります。 ほかにBASCOM-AVRに向いたプログラム・ライタとしてはUSBaspという有名なライタがあって海外ではそちらを使う例が多いです。しかしHIDaspxも支障なく使えるのでWindows-XP時代に使い慣れた環境をそっくり継承しました。 USBaspの中華製クローンがあるので、そちらを使えるようにするのも課題です。

HIDaspxを使ってみる
 Arduinoは直接USBに接続して使うのが普通でしょう。 しかし、この例のようにライタがあればICSP(=ISP)端子を経由してAVRマイコンを直接書き換えることができます。 Arduinoのブートローダが書かれていないナマのAVRチップでも大丈夫です。

 Arduino基板をArduinoではなく「単なるAVRマイコン基板」として使うようなこともできますし、プログラムをBASCOM-AVRやC++などで開発する際には必要です。 多少マニアックかも知れませんが、汎用のプログラムライタを一つ持っていると重宝します。 まあ余計なことを考える元凶とも言えますけれど。(笑)

参考:BASCOM-AVRの移行(正規ユーザの場合)
 BASCOM-AVR(正規版)の新しいパソコンへの移行は思ったよりも簡単にできました。 まず、古い方のPCにあるBASCOM-AVRのフォルダから「bascavrl.DLL」というファイルをUSBメモリか何かにコピーしておきます。このファイルはBASCOM-AVRの実行プログラムが置いてあるフォルダに入っています。
 次に新しいパソコンの方でブラウザを立ち上げてMCS-Electronicsのサイトに正規ユーザとしてログインします。このとき登録ユーザー名とパスワードが必要です。 BASCOM-AVRのところに入ったら、アップデータではなく最新版がまるまる入った方の.zip圧縮のファイルをダウンロードします。 それを展開したら古いパソコンからコピーしてきた 「bascavrl.DLL」をBASCOM-AVRの実行プログラムが入っているフォルダにコピーしてやります。要するに新しいほうへ引き継ぐわけです。これだけで正規の登録済みユーザーとして継続使用できました。
 面倒だったのはMCS-Electronicsにログインするためのユーザ名とパスワードを見つけることでした。以前のメモをしまい込んでいたんです。 これがないとどうにもなりませんので・・・あとはごくスムースです。hi hi
  今後のアップデートはMCSのサイトからアップデータ(アップデート専用のアプリ)をダウンロードして走らせれば済みます。 これは従来も行なってきたのですから。

                   ☆

 安定している開発環境があるならそのまま維持した方が好ましいと思っています。 面倒な環境構築を頻繁にやりたいとは思いません。 むしろ自身のプログラム開発に注力したいところです。 しかし、安定しているとは言っても年数が経過すると徐々に支障が出てきます。 例えばあまり古いPCでは開発ツールのサポートがされなくなってしまいます。 老朽化でハードウエア的にも問題が出てくるかも知れません。 古いPCはいつまでも使える訳でもありませんからいずれ開発環境の移行は必要です。

 たとえArduinoがメインになったとしてもBASCOM-AVRは必要です。 過去に書いたプログラムを全てArduinoに移植するのは大変ですし特にメリットもありません。Arduinoとのハードウエアの違いからそのまま移植できないプログラムも結構あります。 新しい開発環境でもBASCOM-AVRがそのまま継続でき、ツール類も継続できる必要がありました。10年以上前に購入したBASCOM-AVRでしたがトラブルもなく無償で移行できて良かったです。

 マイコンのプログラム開発に使う程度ならWindows-XPでもまだまだ十分な性能があります。コンパイラやツールをアップデートせずそのままの状態で使っている限り何の支障もありません。 そうは言っても流石にWindows-XPではツールのサポートも怪しくなっているし、ネットに繋ぐのも危険になってきました。 やむなく重い腰を上げて始めたら今度はちょっとトラブルもあって時間を取られてしまいました。 しかしほぼ問題ない状態に開発環境の移行ができてホッとしているところです。 Windows 7もそんなに先は長くはないのですが、遅まきながらWin-XPから脱却できて良かったです。もうしばらくはこのまま行けるでしょう。 さて、次回はまたアナログな話に帰るつもりです。 ではまた。 de JA9TTT/1

(終わり)