2011-09-04

XP : Extreme Programmer

2010-12-15 NEW !! 人柱募集

専用基板を制作しましたので、近日中に基板頒布、または完成品の販売を計画しています。詳細は後ほどここに掲載しますが、ぜひ早く使ってみたいという方は、トップページのフィードバックフォームからご連絡ください。

概要

以下のような特徴を持ったPIC/AVR/H8読み書き装置(プログラマ/ライタ)が欲しかったので自作しました。

短所

要するに、マルチホスト・マルチターゲットなPIC/AVR/H8プログラマが欲しい!というのが本機のコンセプトです。

私のメインPCはWindowsで、PIC/AVR/H8の開発環境は、Windows上のVMware上のLinux上に構築しています。旧来の、シリアルポートの信号線(RTSやDTR)をダイレクトにON/OFFするタイプのプログラマでは、USBシリアルコンバータとあまり相性が良くありません。極めて低速に動作するか、まったく動いていないかわからないほどです。同様に、VMwareなどの仮想マシンとも相性が良くありません。これらを解決するには、プログラマの装置側にマイコンを搭載してインテリジェント化するしかありません。一つの装置でマルチターゲット対応するとなると、通信プロトコルも独自のものとなるため、ファームウェアや制御プログラムも独自開発となります。

書き込みソフトは、Makefileの中から起動することを想定しているので、現時点でCUI(コマンドライン)のプログラムしかありません。今のままだと、チップ毎のヒューズビットやコンフィグレーションワードの設定がやりにくいので、GUIの書き込みプログラムも開発するか検討しています。

設計

ある程度大きなファームウェアを格納できて、C言語で開発できて、5V単一電圧とシリアルポートだけ書き込みできて、供給が安定していて値段が安いマイコン、といえばH8/3664で決定です。というわけで、秋月電子通商のAKI-H8/3664を採用します。3664Fでも3664Nでもどちらでも結構です。

マイコンよりも重要(かもしれない)な部品は、ZIF(Zero Insertion Force)ソケットです。PIC用の18ピンと、AVR用の20ピンを用意します。見た目以上に高価ですが仕方ありません。ここにはコストを投じて良質なものを購入しましょう。まぁ、安価に済ませたい方は普通のICソケットで。

電源は秋月電子通商で購入できる12VスイッチングACアダプタを推奨します。この電源が書き込み電圧として、PICやAVRのリセットピンに接続されるので、電圧は重要です。15Vでも運が良ければ動作しますが、かなり規格外ですので、チップを破壊するおそれがあるので、12Vに安定化されたスイッチングACアダプタを使用します。もっとまじめに作りたい方は、入力を15Vとして、12Vの安定化回路を付けるのが良いかもしれません。チップ毎に最適な書き込み電源が異なるという話もあるので、電圧の微調整ができるような仕組み改良できれば理想です。今後の改良点としては、15~18Vといった、高電圧なアダプタを接続しても、9~14V程度の範囲で調整できる機能を付けたいと思っています。

制作

試作

ユニバーサル基板での試作です。専用基板については下記をご覧ください。

配線図(PDF)

XP基盤表基盤裏

配線は錫メッキ線と、ウレタン被服線(UEW)またはラッピング用線(ETFE)を使います。太さはφ0.3~0.4mmくらいが良いでしょう。

専用基板

pcb0

回路図(PDF)です。

試作時の設計と最も違うところは、PIC/AVRの書き込み電圧調整のための、LM317Tを使った、可変型安定化電源回路を追加した点です。

主な部品

マイコンボード AKI-H8/3664 1 秋月電子通商
ZIFソケット TEXTOOL18ピン 1  
ZIFソケット TEXTOOL20ピン 1  
D-SUBコネクタ 9ピン・オス 1  
DCジャック 外径5.5mm/ピン経2.1mm 1  
電解コンデンサ 100μF 1  
積層セラミックコンデンサ 0.1μF 2  
抵抗 470Ω 1  
抵抗 4.7kΩ 5  
可変抵抗 10kΩ 1  
トランジスタ 2SC1815 1  
三端子レギュレータ 7805 1  
可変型三端子レギュレータ LM317T 1  
LED   1  
電源スイッチ   1  
スイッチングACアダプタ 15V 1  

部品配置図

マイコンボードAKI-H8/3664にあらかじめ搭載されている電源レギュレータは使用しませんので、JP1をカットしてください。

完成写真

ソフトウェア

基本的には各自コンパイルしてお使いいただきますが、Windowsのみ特別にコンパイル済みEXEファイルも提供します。

制御プログラム

コマンドラインプログラムのみです。GUIツールはありません。

Windows

自分でコンパイルするには、Visual C/C++が必要です。無償公開されているExpress版でもコンパイル可能です。ソースコードのZIPファイルを展開し、 xp\client\win32\xp.sln を開きビルドします。 ビルドが完了すると xp.exe が生成されます。

Mac OS

Mac OS X でシリアルポートを使う

コンパイルするにはgccが必要です。Xcodeをインストールすると、gccが使えるようになります。ソースコードのZIPファイルを展開した後、xp/clientに移動してmakeコマンドでコンパイルできます。正常に終了するとxpというコマンドが生成されます。

Linux

コンパイルするにはgccが必要です。各ディストリビューション毎の方法に従って、gccをインストールしてください。ソースコードのZIPファイルを展開した後、xp/clientに移動してmakeコマンドでコンパイルできます。正常に終了するとxpというコマンドが生成されます。

ファームウェア

何よりまず、H8/3664にファームウェアを書き込まなければなりません。xp/h8/xp.motがファームウェアです。これをH8/3664に書き込む必要があります。

ファームウェアを書き込むに先立って、AKI-H8/3664のブートモード用ジャンパをショートしてください。書き込みが終わったら、ジャンパを取り外すのを忘れずに。

下記コマンド例でのシリアルポート名は、お使いの環境に合わせて、適宜読み替えてください。

Windows

Windowsで、カレントディレクトリが xp/client/win32/[debug|release] である場合、書き込みコマンドは以下のようになります。

xp -p com1 -d h8/3664 -f mot -w -i ..\..\..\h8\xp.mot

Mac OS X

Mac OS Xで、カレントディレクトリが xp/client である場合、書き込みコマンドは以下のようになります。デバイス名は秋月電子通商のUSBシリアルアダプタを使用した場合の例です。USB : RS-232Cコンバータの機種により異なります。

./xp -p /dev/cu.usbserial-A30015RP -d h8/3664 -f mot -w -i ../h8/xp.mot

Linux

Linuxで、カレントディレクトリが xp/client である場合、書き込みコマンドは以下のようになります。

./xp -p /dev/ttyS0 -d h8/3664 -f mot -w -i ../h8/xp.mot 

動作確認

ファームウェアの書き込みが終わったら、H8/3664の書き込み用ジャンパピンを取り外して、電源を入れ直します。そして、

xp -p xxx -vf

を実行して、メッセージが表示されたら、通信が成功しています。(上記コマンドのパスやシリアルポート名は環境に応じて適宜読み替えてください)

何も表示されない場合、以下のような原因が考えられます。

ファームウェアとの通信が成功したら、チップとの通信を試してみましょう。

C:\develop\xp\client\win32\Release>xp -qa
Signature: 1E 91 0A
Device: ATTINY2313

私の開発環境での実行例です。 -p オプション(シリアルポート)を省略したため、デフォルト値としてCOM1が選択されました。 -qa はAVRに対してシグネチャバイトを読み取るコマンドです。この結果 ATTINY2313 が装着されていることがわかります。

もう一つ例を挙げます

C:\develop\xp\client\win32\Release>xp -qp
  +0   +1   +2   +3   +4   +5   +6   +7   +8   +9   +A   +B   +C   +D   +E   +F
---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 1066 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF 3FFF

Device: PIC16F628A

      CP: 1
     CPD: 1
     LVP: 1
   BODEN: 1
   MCLRE: 1
   FOSC2: 1
   PWRTE: 1
    WDTE: 1
   FOSC1: 1
   FOSC0: 1

-qpコマンドによりPICの情報を取得することを指示しています。その結果PIC16F628Aが装着されていることがわかります。

リファレンス

xpコマンドで使用できるオプションを挙げます。

 

 

準備中