Mobile PIC Writer

last up date 2003/07/17

Mobile PIC Writer !?

PIC USB

USB1.1用のコントローラは、個人でも入手可能になってます。 ハードウェアを作るのは問題なくなってます。 ファームやソフトウェアも色々公開されて開発の敷居も低くなってますね。

ただし USBに絶対必要なベンダIDは、個人では取り難いく(取れない?)適当なIDを付けるしかないです。

特定のベンダIDとプロダクトIDを使用して良いって言う方(企業)居ませんか。

元々は親指シフト変換器

PIC16F628とUSBN9604(USBN9602)を繋ぐUSBの構想は、親指シフト変換器用で考えたものです。 ただ値段が倍近く上がるので手つかず状態のまま2年位経ってます。

今回はUSBがメインなのでUSBN9604を使う事はすぐ決めたのです。 がポート数や機能で最初は、PIC16F873を選んだのですが..最終的にPIC16F628へ。 良い選択なのかは、今後の展開に掛かってくるかな?

どうやって開発する!?

回路は簡単に決まります。MicroWireを使うしかないでしょ信号数も少ないから。 世の中にサンプル回路は多いです。

しかしファームウェアは、後閑さんの 『基本デバイスプログラム』が有るもののUSBアナライザ等の測定機器はありません。 PIC16F87x用のプログラムをPIC16F628へ移植することにしました。 願わくば一発動作してくれるを期待して。

::

通常上手く行かないのが常の筈が.. 簡単にWindowsXPでデバイスの接続を認識しました。 『基本デバイスプログラム』の素性の良さがものを言わせたのでしょう。 これでUSBN9604とのやり取りは、問題がない事になりました。

長い道のり..

動きだしたUSBインターフェースですが問題が山積しています。 まずはコード量が多いこと。 プログラム領域は、PIC16F87xでは4kWord以上ありますがPIC16F628では2kWordです。 USBインターフェース部分のプログラムは、多くても1kWord以内に納めたい所です。

次に割り込み処理時間が長いこと。 『基本デバイスプログラム』は、USBの通信処理を全て割り込み処理内で行っています。 これでは、DC-DCコンバータとの並列処理ができません。 のでUSB制御は、ポーリング制御に変更しています。

最後にリロケータブルなプログラム構成になっていないこと。 これは、プログラムの再利用しにくいだけで問題じゃないと言えばそうなんですけど。 やっぱり分割してプログラムを作るには必要でしょ。

::

上の事柄からUSB部のファームウェアは、『基本デバイスプログラム』と全く違うような構造になり原型を留めて居ません。 ただし端折っている部分も有るので本当に上手く動作しているか不安がありますけど。 まだ100%満足できる迄には至っていませんが、通信動作は可能です。