PIC18F4550でカーソルが回転する DEMO HID プログラムを実行 Microchip社のPIC18F4550とPICDEM. FS USB DEMONSTRATION BOARD USER S GUIDEに有るカーソ ルが回転するHID プログラムを確認しました。 USBの動作を確認するには、内容が判る物が必要です。PIC18FXxxとそのフレームワークは内容が公開さ れているので動作確認用に適していると思い動作させることにしました。 ハードウエアは、写真の様に汎用基板で手配線です。動作確認は単純な物の方が分かりやすいので最小 必要品だけにしました。 プログラムは、PICDEM. FS USB DEMONSTRATION BOARD USER S GUIDEをインストールすると _MCHPFSUSB_v12\MCHPFSUSB\fw\Hid\Mouse に有るカーソルが回転するHID プログラムをC18(期間限 定版)でコンパイルしました。 そのままコンパイルしたら動くだろうと簡単に考えていたのですが、難儀しました。単純な思いこみで時間 が掛かりました。それをクリアしたら変更無しで問題なく動きました。 単純な思いこみは、「バスパワーセンスの処理」をしてなかったのです。リセットしてプログラムを開始する と、1秒程度で停止しました。停止する時間はバラツキが有ります。かなり悩んだのですが、usbcfg.hの次の 様にコメントアウトで解決しました。 //#define USE_SELF_POWER_SENSE_IO //#define USE_USB_BUS_SENSE_IO //See MCHPFSUSB Firmware User's Guide // for more details about these features. プログラムを動作させてカーソルが回転するのを確認しました。又、USBスコープでパソコンとのやり取り を調べて、プログラム内容やUSB規格と見比べました。詳細な見比べは今後の課題とします。 PIC18F4550 DEMO HID プログラムのカーソルが回転する仕組みを USBスコープで調査 PIC18F4550 DEMO HID プログラムのカーソルが回転する仕組みをUSBスコープで調べた内容は左と上 です。そして、デバイスクラスが判るSOF = 520の詳細とReport Descriptor (Mouse)を、矢印で示します。 又、 Report Descriptor (Mouse)で定義されたデータフォーマットを下に示します。 PIC18F4550 DEMO HID プログラムは、リセットして、プログラム開始からUSBスコープで調べています。デ ータ長を調べるGET_DESCRIPTORから始まり、SET_ADDRESSで固有アドレスの設定とエニュメレーションが 続きます。ここでは、カーソルが回転する仕組みを調べるのでエニュメレーションの中から、SOF = 520とSOF = 54Cに注目します。SOF = 520とSOF = 54Cの詳細は矢印で示します。 SOF = 520でデバイスクラスをHID,サブクラスをMouse、転送タイプ、転送方向等を定義しています。 SOF = 54Cで下のデータフォーマットをDevice Class Definitionで定義しているのですが、このUSBスコー プでは見えないので「Device Class Definition for Human Interface Devices (HID)」を参考にしました。 PIC18F4550 DEMO HID プログラムの「usbdsc.c」に同じ内容が定義されています。 上のSOF = 568を見ると、3バイト単位のデータ転送です。データの内容はマウス移動量です。 USBスコープのデータを省略していますが、データは、「00 FC FC」→「00 FC 00」→「00 FC 04」→「00 00 04」→ 「00 04 04」→ 「00 04 00」→ 「00 04 FC」→ 「00 00 FC」→ 「00 FC FC」→ を繰り返しています。変化 点のSOFは78h毎です。「FC」は、ー4です。 データ転送は、PIC18F4550 DEMO HID プログラムの「user_mouse.c」のEmulate_Mouse(void)にそのような 内容がプログラムされています。 Report Descriptor (Mouse) Item Value (Hex) Usage Page (Generic Desktop), 05 01 Usage (Mouse), 09 02 Collection (Application), A1 01 Usage (Pointer), 09 01 Collection (Physical), A1 00 Usage Page (Buttons), 05 09 Usage Minimum (01), 19 01 Usage Maximun (03), 29 03 Logical Minimum (0), 15 00 Logical Maximum (1), 25 01 Report Count (3), 95 03 Report Size (1), 75 01 Input (Data, Variable, Absolute), ;3 button bits 81 02 Report Count (1), 95 01 Report Size (5), 75 05 Input (Constant), ; 5 bit padding 81 01 Usage Page (Generic Desktop), 05 01 Usage (X), 09 30 Usage (Y), 09 31 Logical Minimum (-127), 15 81 Logical Maximum (127), 25 7F Report Size (8), 75 08 Report Count (2), 95 02 Input (Data, Variable, Relative), ;2 position bytes (X & Y) 81 06 End Collection, C0 End Collection C0 データフォーマット Byte 0 1 2 3 to n Bits 0 1 2 4 to 7 0 to 7 0 to 7 0 to 7 Description Button 1 Button 2 Button 3 Device-specific X displacement Y displacement Device specific (optional)
© Copyright 2024 ExpyDoc