pic18hidkey の変更点


*PIC18Fを使ったUSBキーボード変換器の作成 [#ba242054]

~
工事中
~

元ねた
[[mcc18]] [[usbserial]]


----

''ダウンロード''(仮)
-[[hidkey.zip:http://psp.dip.jp/web/upload/PIC/hidkey.zip]]

現在のところ、
-[[Microchip_Application_Libraries_2009_1118_Installer:http://www.microchip.com/microchip.www.securesoftwarelist/whatsnewsoftware.aspx?lang=en]]の%%USBDevice-HID-Keyboard をそのままMakefileが通るように配置しただけのものです。%%

-不完全ですが、PS/2 Keyboard to USB 変換アダプタとして一応機能するようになっています。

----
元のサンプルにあった eyboard.c の動作内容は、以下のように、かなり投げ槍っぽいです。
元のサンプルにあった keyboard.c の動作内容は、以下のように、かなり投げ槍っぽいです。

-sw3 (HardwareProfile.h 経由で各マイコンごとに定義されているポート) が押されたら、キー番号 key をホストPCに送信し、key を +1 する。
-変数 keyの初期値は4 で、40になったらまた4に戻す。

----
*HID-Keyboardで使用されているHID Reportはどんなものなのか? [#xe758299]

-1回あたり8バイトのデータ列になっている。
-先頭バイトは「GUI,ALT,SHIFT,CTRL」 キーの押された状態を4bitであらわしたもの(押されていれば1)
-さらにその上位4bitは、キーボード右側にある、同名のシフト系キーの押された状態(並びは同じ)

-2バイト目は使用しない。
-3〜8バイト目は、押されているキーの固有番号が最高6個まで(同時押しに対応するため)詰め込まれて送信される。
-押されていない、あるいは空の箱には0がセットされる。

-各キーの固有番号についてはusb.orgのマニュアルを参照すること。



----
*おまけ [#k529c1fd]

-ついでなので hid-mouse , hid-joy , hid-generic , hid-bootloader も用意しました。

''ダウンロード''(仮)
-[[hidmouse.zip:http://psp.dip.jp/web/upload/PIC/hidmouse.zip]]

-[[hidjoy.zip:http://psp.dip.jp/web/upload/PIC/hidjoy.zip]]

-[[hidgeneric.zip:http://psp.dip.jp/web/upload/PIC/hidgeneric.zip]]

-[[hidbootloader.zip:http://psp.dip.jp/web/upload/PIC/hidbootloader.zip]]

hidbootloaderに関しては、とりあえずビルドが通るようになっているだけで、メモリー配置等を修正していませんので
HIDデバイスとしての動作はすると思いますがブートローダーとしての実用性はありません。

----
*ApplicationLibrariesをMakefileでビルドするやりかた。 [#t879184d]



(例えば)ここのhidgeneric.zipを元にします。
-hidgeneric.zipを展開すると、Makefile , リンカスクリプト , main.c , fuse*.h などは
配置済みなので、残りのファイルの取得方法を書きます。

-(VerUp等で)必要なら、include/ , usb/ ディレクトリを元のApplicationLibrariesを展開した場所から
コピーします。
 C:> xcopy /s AMYDRIVE:\ApplicationLibraries\Microchip\Include include
 C:> xcopy /s AMYDRIVE:\ApplicationLibraries\Microchip\USB     usb
かなり不要なファイルもコピーされますので、あとで掃除します。

--不足ファイルや更新ファイルがない場合はコピー作業は不要です。

-ApplicationLibraries\USBDevice-HID-CustomDemos\ など、それぞれのファームソースがある場所から、 usb_config.h とか mouse.cのような元ソースを拾ってきます。
-main.cという名称だと、こちらのフレームワークのmain.cと被るので、適当にリネームします。
-Makefileを編集して、ターゲット名(hexファイルのファイル名)と、必要なソースファイルのリストを書き換えます。
-(例えば)mouse.c だったら、その中にある fuse設定をばっさりと削除します(ソースが見にくいので)
-ついでに、main()関数もmain.cにすでに記述しているので削除します。
-割り込みベクターも特に何もしていなければ単に削除します。何かしているときはmain.c側に同じ変更を入れておきます。

だいたいこんな感じです。
-最初からMakefileを用意してくれていれば、苦労することはないのに・・・。

~
~
~
~
~
----------
*今後の課題 [#j4b3e289]
-6 keyまでのロールオーバーの処理
-(PS/2コードで)E0が前置される拡張キー(のUSBコードへの変換)をちゃんとサポートする。
-リピート間隔の設定を有効にする。
-LEDインジケータを有効にする。
-18F14K50への対応。
-日本語キーボードへの対応。