<紙>さんLOG

「パソコンヲタクの雑記帳」
 PC/Linux系/物理・化学で遊んでいます。
思いついたことを綴っています。

PIC(6) USB・Gen

2008年06月29日 | PIC・マイコン
                                                日記@BlogRanking
さて、目標であったUSBデバイスへ挑戦する。

先ずは、mikroBASIC 組み込みの USB HID Library を使ったサンプルプログラムを
コンパイルしてみたが、demo版の制限でダメでした。

ネットであちこち探しまくっていたが、なんのことは無い、本家でよかったのだ。

マイクロチップ テクノロジー ジャパン社のHPにある、「PIC関係のリンク」に載っている
「USBコントローラ内蔵のPIC18F2550の使用例」が、ピッタリであった。

 早速動かしたいところだが、その前に、C18 コンパイラが必要だ。
C言語は知らないけど、何とかなるだろうと、インストールしMPLAB に登録した。

上記HPからDLしたものからクロック数の変更だけで、コンパイル/リンクし、
tiny bootloader で書き込み、添付のテストプログラムを動かした。

 Microchip社のUSBブートローダでなくても、tiny bootloader でも共存可能だ。
(当たり前の話だけど。リンカースクリプトが読めれば。
 マイクロチップ社のUSBブートローダは0番地から常駐し、
 ターゲットプログラムは 0x800 からになる。
 一方、tiny bootloader はROMの最上位番地に常駐する。)

で、このUSBデバイスは、デバイスクラスの分類では「汎用」なので、
デバイスドライバ(inf ファイルと、sys ファイル)が必要であり、
PCでプログラミングするなら、DLL が必要になる。

 その他のデバイスクラスとしては、CDC、HID、Mass Storage がある。
HIDクラスはさらに、「マウス」「KB」「汎用」に分かれる。

デバイスドライバなどの要否は、
       inf      sys     DLL
 汎用    要     要     要 : 上記の通り。
 CDC   要     不要 : システム標準でOK。(serial on usb)
 HID
  マウス  不要 : システムが入力デバイスで使用。(直接入力不可?)
  KB    不要 : システムが入力デバイスで使用。(直接入力不可?)
  汎用   不要   不要   不要*
   (訂正:* kernel32、hid.dll を使うので、宣言(ヘッダーファイル)は必要。)

 それで、このサンプルUSBデバイスを ActiveBASIC プログラムでアクセスしてみたい。
 同梱されていた、柏野政弘さん作のドライバでは、どうしても上手くいかない。
1回目はOKで、2回目はライト(PC->PIC)出来るが読み込みでストールする。

 悪戦苦闘の末、MICROCHIP社のmchpusb.sysなるデバイスドライバにすることにした。やっと、PCソフトも完成し、
PCからPIC(USB・汎用デバイス)への出力・入力が完成した。

お手数をおかけします。2クリック(投票を)お願いします ⇒ 日記@BlogRanking

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。