<紙>さんLOG

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

PIC(7) USB・HID/CDC

2008年06月29日 | PIC・マイコン
                                             日記@BlogRanking
 今度は、「HIDクラス」に挑戦した。
結局はマイクロチップ社のサンプルソースをDLするのだが。

その1:スタンダード(2ボタン)マウスエミュレータ
(マウスカーソルが円を描くように動くもの)

その2:インテリマウス化
(3ボタン目の追加)

その3:スクロールのエミュレーション

その4:KBのエミュレーション

PIC18F2550 を、これらUSBデバイス化するファームウェアを作るには、
「pic18Fusb.online.fr」が非常に参考になったのだが、
この Wiki は削除されたよう(フランス語はチンプンカンプンです。)

これらソースをC18でコンパイルし、tiny bootloader で書き込んで、
PICを、PCに繋ぐと、自動認識し、エミュレーションしてくれた。


 さらに、HID汎用デバイス用のファームウェアは、
「Jan Axelson's Lakeview Research」のUSBのページの中のHIDsのページ
からDLして、汎用デバイスクラスと同じ機能のものを作った。

PC側は、デバイスドライバは不要だが、
デバイスにアクセスするための関数定義は、インクルードファイルを用いた。


 さらにさらに、CDCクラスのファームウェアも、
マイクロチップ社のサンプルソースをDLする。
これを、汎用デバイスクラスのものと見比べながら修正した。

inf ファイルは添付されているので、それを使い、
PCソフトは、以前に作ってあったCOMxのIO用のものを若干修正して用いた。


 これで、PIC18F2550 をUSBデバイス化し、PCから通信することは、
3種類のクラス(汎用、CDC、HID汎用)とも一応完了した。
2月はこれで終わった。

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

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