なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

USBマイコン基板で作るPICプログラマ

Posted by arms22 on 2008年07月26日 5  0

tr0808picprog02.jpg

ここ7日ほどSNSを活用した技術コンテストEnginner Awardに向けて製作していたPICプログラマ「TR0808 PIC Programmer」が完成したのでここでも公開します。

tr0808picprog01.jpg

今回製作したのはタイトルの通り、トランジスタ技術8月号付録のUSBマイコン基板を使ったPICプログラマです。

当初USBマイコン基板を汎用IO化させて製作していたのですが、2kWの読み込みに20秒ほどかかりました。少し遅いのでファームウェアにPICとのシリアル通信の処理を移して10秒まで短縮させました。まだもう少し改良すれば高速が可能でしたが、コンテストの締め切りが迫っていたので、ここまでとしました。

制御ソフトウェアはpicburn-0.3.0をベースに作成しました。picburnは元々色々なプログラマに対応できるよう設計していたので、付録基板への対応も容易でした。

使い方-ハードウェアの製作
次の回路図を参考にハードウェアを製作してください。トランジスタ周りはデジタルトランジスタを使うと部品点数を減らせます。書き込みようの12V電源は006P電池で代用しても構いません。
tr0808picprog_sch.png

使い方-ファームウェアの書き込み
USBマイコン基板をPICプログラマとして使うためにはフラッシュにファームウェアを書き込む必要があります。フラッシュへ書き込みはトラ技BIOSから行います。次のURLからHEXファイル(picpfw.hex)をダウンロードし、ターミナルソフトを使って書き込んでください。

TR0808 PIC Programmer ファームウェア
http://xfind.hp.infoseek.co.jp/electric/tr0808/picpfw-0.1.zip

使い方-制御ソフトウェアのインストール&使い方
次のURLから制御ソフトウェアをダウンロードしてください。tr0808picprog.exeとtr0808picprog.devを任意の場所にコピーしてください。

TR0808 PIC Programmer 0.1 Windows用バイナリ
http://xfind.hp.infoseek.co.jp/electric/tr0808/tr0808picprog-0.1-mingw-i386.zip

TR0808 PIC Programmer 0.1 ソースコード
http://xfind.hp.infoseek.co.jp/electric/tr0808/tr0808picprog-0.1.tar.gz

# PICとの接続確認
% tr0808picprog -d /dev/com5 -c 12f683 -k
# 読み込み
% tr0808picprog -d /dev/com5 -c 12f683 -ro something.hex
# 書き込み&ベリファイ
% tr0808picprog -d /dev/com5 -c 12f683 -pvi something.hex

対応デバイス一覧
http://arms22.blog91.fc2.com/blog-entry-157.html

トランジスタ技術8月号USBマイコン基板を試す(3)。

Posted by arms22 on 2008年07月19日 16  0

前回の解析結果からデバイスを開いた後、OPEN_CLOSEコマンドをコントロール転送で送ってやると、トラ技BIOSと通信を行うことができるようになった。MacOSX用のトラ技BIOSターミナルアプリを作成した。

トラ技BIOSターミナルアプリ for MacOSX
trterm4osx-0.1.zip

インストール方法

1.libusbのインストール
trterm4osxはトラ技BIOSとの通信にlibusbを使用します。
こちらでバイナリパッケージが配布されています。対応するOS(10.3 or 10.4)のパッケージをダウンロードして、インストールしてください。

2.trterm4osxのインストール
trterm4osx-0.1.zipにはコンパイル済みの実行ファイルが含まれています。実行ファイルを適当なフォルダにコピーしてください。

使い方
ターミナルを開いて実行するだけです。数回リターンキーを押すとトラ技BIOSからスタートアップメッセージが送られてきます。あとターミナル->ウィンドウ設定->ディスプレイで文字セットエンコーディングを「日本語(Shift JIS)」を選択しておく。

% ./trterm4osx

ToragiBIOS Version 1.20A
(C)Copyright 2008 NEC Electronics Corporation
(C)Copyright 2008 Tokushu Denshi Kairo Inc.
>
プログラムをRAMにロードして実行するには、次のようにloadと打ち込んで、HEXファイルの内容をペーストします。D&Dは使えないのでHEXファイルを適当なテキストエディタで開いて内容をコピーしておきます。この時、ファイルの終端文字(^Z)はコピーしないようにします。最後にjmp f000でプログラムが実行されます。
>load
load
Drop a HEX file.
...
complete.
>
>jmp f000


トランジスタ技術8月号USBマイコン基板を試す(2)。

Posted by arms22 on 2008年07月17日 4  0

前回の続き。ソフトウェアUSBプロトコルアナライザ(SourceUSB)を使って、デバイスドライバがデバイスに対して送っているコマンドを解析してみた。ベンダリクエストを使って、幾つかのコマンドを送信しているのが分かる。NECのサンプルコードを元にコマンドの意味を割り当てると次のようになった。

TeraTermでデバイスを開いて、スタートアップメッセージが帰って来るまでの間。

RequestType Request Value Index Length Data[Length]
40 0b 0000 0000 0002 03 01 // OPEN_CLOSE
40 0b 0000 0000 0002 01 03 // SET_DTR_RTS
40 0b 0000 0000 0003 00 04 01 // LINE_CONTROL
40 0b 0000 0000 0003 04 00 00 // SET_ERR_CHR
40 0b 0000 0000 0002 01 03 // SET_DTR_RTS
40 0b 0000 0000 0003 00 04 01 // LINE_CONTROL
40 0b 0000 0000 0003 04 00 00 // SET_ERR_CHR
40 0b 0000 0000 0003 02 00 00 // SET_XON_XOFF_CHR
40 0b 0000 0000 0003 04 00 00 // SET_ERR_CHR
40 0b 0000 0000 0003 00 04 01 // LINE_CONTROL
40 0b 0000 0000 0003 04 00 00 // SET_ERR_CHR

TeraTermから接続を解除した時。
40 0b 0000 0000 0002 03 00    // OPEN_CLOSE

トランジスタ技術8月号USBマイコン基板を試す。

Posted by arms22 on 2008年07月15日 4  0

トランジスタ技術2008年8月号を買ってきました。早速、付録基板を試そうと思ったのですが、デバイスドライバがWindows用しかありません。。MacOSXで動かせません!まいった。。このまま本棚にしまってしまうのは勿体ないので、なんとかしようと思います。

で、思いついたのがlibusbを使って直接付録基板と通信してみる。Windows用のデバドラは仮想COMポートとして実装されています。恐らくシリアルデータはバルク転送を使って行われているはずです。エンドポイントはデバイスのコンフィグレーション一覧から知ることができるので、libusb経由で該当エンドポイントに対してバルク転送で読み書きしてやれば、シリアルデータの送受信ができるはずです、たぶん。。

早速、試してみる。

1.libusbのインストール
http://libusb.wiki.sourceforge.net/からlibusb-0.1.12.tar.gzをダウンロードしてきます。展開して次のコマンドを入力。

% ./configure
% make
% sudo make install

2.テストコード
Linux工作室のlibusbについてを参考にテストコードを書く。とりあえず、改行コードを送って、デバイスのスタートアップメッセージを受信してみる。処理内容はこんな感じ(全ソースコードは続きを読むで)。
  • libusb初期化
  • ベンダID、プロダクトIDでデバイス検索
  • デバイスオープン
  • コンフィグレーション、インターフェース設定
  • stdinからの入力待ち
  • 0xaを0xdに変換する
  • 入力された値をWrite(バルク転送:EP2:0x02)
  • デバイスからRead(バルク転送:EP1:0x81)
  • stdinからの入力待ちに戻る

3.結果
うーん。。何度改行コードを送っても、スタートアップメッセージが受信されません。。バルク転送がうまくいっていると仮定してトラ技BIOSのコードを読むと、
  • USBステータス確認
  • 改行コード入力待ち
  • スタートアップメッセージ送信
となっている。USBステータスの確認で止まっていそう。デバイスオープンの後にコントロール転送で何らかの操作が必要なのかもしれん。。

トラックボールの修理

Posted by arms22 on 2008年07月07日 0  0

修理したのはこいつ(分解した写真は撮り忘れた)。
Microsoft Trackball Optical
ms_trackball_optical.jpg

http://www.microsoft.com/japan/hardware/mouse/track_optical.mspx

症状
左ボタンの利きが悪い。1クリックがダブルクリックになったり、ドラッグ操作が途中で解除されたり。

原因
スイッチの磨耗による接触不良、、だと思う。

対策
左ボタン、右ボタン、スクロールホイールに使われているスイッチが同じものなので、使用頻度の低いスクロールホイールのスイッチと左ボタンのスイッチ入れ替える。

修理手順

  • 滑り止めのゴムをめくるとねじが2本づつあるのではずす
  • スイッチが実装されている基板を本体からはずす
  • 半田吸取り器などを使いスイッチを基板からはずす
  • 外したスイッチを入れ換え、半田付けする
  • 元通り組み立てる
このトラックボールは使い始めてそろそろ3年くらいになるが、もうあと3年は使えそうだ。またスイッチがだめになったら、右ボタンのスイッチと入れ換えよう。

該当の記事は見つかりませんでした。