コメを噛め

コメを噛め

rerofumi の電子工作メモ

hatena bookmark

そもそもで PIC 工作を始めたのは、センサー計測の結果を PC に取り込むために PIC をコントロール&通信インターフェースにしようというのが発端であった。PC へ取り込む手段としてはシリアルがお手軽かつ着実なのだけれども、今時ならばやっぱり USB で繋ぎたいじゃんということで USB 搭載 PIC には熱い眼差しを向けていたのですよ。
結局当初の目的としてはシリアルで満足しちゃっているのだけれども、いつかは「俺 USB機器」が作りたいという願いが捨てきれない次第。
そのために PIC18F4550 が手元にあるわけだし。

てなわけで USB 作成プロジェクト始動。
USB デバイスや USB搭載PIC についての詳しい情報としては「PICと言えば後閑さん」の「PICで楽しむ USB機器自作のすすめ」という本が出ている。
取り敢えずそちらをどうぞと勧めておいて、ここではそれらに因らず適当な知識で行き当たりばったりに進行させていきまする。(おい)

■ USBで何を作るか
何を作るのかは意外と重要です。デバイスが PIC なのでプログラム次第でどんな USB デバイスも作れるという夢の環境なのですが、デバイスを作ったら当然ホスト(PC)側でもデバイスドライバーを作成しなければならない。
なのでデバイスドライバーが既に存在していてそれを利用できる “HID” (Human Interface Device)がお勧め。キーボードとかマウスとかジョイスティックですな。それ以外の HID だと自分でオープン・リンクを行うプログラムを作成する必要があるが、まあデバイスドライバを作らないだけ楽なもんである。

■ USB搭載PICの開発環境
USB をコントロールするスタックを一から自分で書くのは大変過ぎるので Microchip 社がサンプルとして提供しているコードが存在している。最近はマスストレージのサンプルも追加された模様。
これをベースにしていくので、深淵なる USB の知識がなくてもまあなんとかなるかなという次第。流石に開発者として最低限の知識は必要だけれども、私個人が既に知っていることはここに書いていかないので注意。
でまあ、このサンプルが当然というか C言語で書かれており、MPLAB C18 COMPILER が利用されている。
C18 compiler は $495.00 もするのでちと困るところ。物の本には「お試し版が1〜2ヶ月使えるからそれでコンパイルすればオッケー」的な事が書かれているけれども、それもどうかと。
今私が所有しているのはSourceBoostの安価な CコンパイラBoost C なんだよな。個人使用限定の Full バージョンで $69.95 ほど。
USB のサンプルコードが Boost C でコンパイルできるかといえば、これが見事に出来なかった orz
エラーを眺めていると決定的に色々違っているので細かい手直しとかでは済みそうもない感じで。
でも、そこはそれ、Microchip の HID Mouse デモを Boost C に移植(というか作り直しに近いけど)している御仁がいて、SourceBoost のページからダウンロードできる
この Boost C 版サンプルは流石にあっさりとコンパイル完了。

できあがった HEX ファイルを PIC にプログラムしようといつも通り SPWriter を立ち上げて書き込み作業。……失敗。あれ?
色々試すけれどもコンフィギュエリアでエラーとか言われて止まってしまう。デバイスリストをいじったり確認するも今ひとつ駄目。SPWriter では(今すぐ) PIC18F4550 に書き込みできないのかしらん。
そんな理由と他の理由が積み重なって、ついに買ってしまいました。


丸くてニクイあいつ。MPLAB ICD2。満を持しての投入。
ちなみに Microchip 直販経由で購入。


チップに USBコネクタと ICSP 用の最低限配線だけを行ったテスト基板を作成。こいつを使ってプログラミングする。
ICD2 は MPLAB からしかプログラミング&デバッグできないので、SourceBoost IDE から使えない様子。うーむ、せっかくお気に入りだったのだけれども、しかたないので MPLAB に戻ってくる。
MPLAB から Boost C を利用することは可能。SourceBoost IDE をインストールするとき、先に MPLAB がインストールされていたら「コンパイラを MPLAB に登録しますかえ?」と聞いてくるのでそこで「くるしゅうない」と承諾しておけば、以後コンパイラスイーツから Boost C が選択できるようになる。

そんなこんなを経てようやく、Boost C 版 HID Mouse デモがチップに焼き込まれた。
テストボードに USB ケーブルを繋いで PC に接続。デバイスが認識されて……、おおマウスカーソルがくるくると八の字を描き始めた。(そういう動作をするデモなのです)
自作 USB 機器の第一歩完了なのです。

■ まずは下ごしらえ
さて、これからサンプルコードに手を入れて改造したり実験したりするわけだけれども、ここでちょっとソースコードの整理をしておきたいところ。
というのも usbtestCC.c というサンプルコードは、1つのファイルに全てが詰め込まれている上に、私の目から見て少々汚いソースコードになっているのだ。私自身が理解し、手を入れやすくするためにもちょっと細かい単位でファイル分割を行いたい。
関数の役割毎に分割し、一部冗長で見づらいところを整理したソースコード。
usbtestCC_restruct.zip
この作業を行うことで、コードの理解も深まるので一石二鳥。

いつもなら自身のコードで描き起こし直すところだけれども、それをしないあたりが USB デバイスコードのめんどくささを物語っていたりいなかったり。
単に手を抜きたいだけかもしらんが。
—–

Leave a Reply