マウス用USBホスト
マウス用のUSBホストをつくってみる
・はじめに
久しぶりに何かをつくってみたくなってきたため
USBの理解も兼ねてPICでUSBホストをつくってみることにした。
これができるとインターフェースとかに使えたりして色々とできそうだなと
夢を膨らませながらトライ!!
・資料集め
USBの知識がまったくない状態のためネットで調べてみる。
ふむふむ、USB1.1がLowSpeed(1.5Mbps)とFullSpeed(12Mbps)があって
USB2.0がHighSpeed(480Mbps)で動くらしい。
今回はPICをつかうのでUSB1.1なら大丈夫かなと。さらに調べると
DescriptorやらInterfaceやらCRCやら横文字のものがいっぱいでてくる。。。
なにやら怪しげな処理をたくさん行わないとデバイスとは接続できないようである
これはRS232Cと比べるとだいぶ敷居が高く、あまり自作が行われていないのも
なんか分かる気がする。
USBの仕様書
も読もうとしたけど英語いっぱいで読む気が起きないし
でもそんなUSBの世界でも果敢に
マイコンで挑んでいる方
がいるみたいで今回はだいぶ参考にさせていただきました。
本当にこのように技術的にチャレンジされている方には頭が下がります(_ _)
・つくってみる
USBマウスとブレットボードとPIC(P18F4550)を準備して
ごりごりプログラムをアセンブラでつくっていく。
とりあず家にあったマウスをつなぐことができました!!
動作
左ボタン右ボタンでLEDが光るだけ。。。
マウスカーソルのデータも取りたかったのですが
ビットスタッフィングとかいう1がいっぱいきたら0が挿入される処理を
対応する必要があったのでそこは力及ばず断念無念。
・マウスとの接続
マウスとの接続について、今回は
1. Setup信号をマウスに投げる
↓
2. マウスからACKを受け取る
↓
3. Configuration Descriptorをマウスに投げる
↓
4. マウスからACKを受け取る
↓
5. IN信号をマウスに投げる
↓
6. マウスからボタンの状態のデータを受け取る
(データがないときはNAK)
↓
以下5と6の繰り返し
ってな感じでやりました。そんときのソースはここ
他のマウスでもやってみたんですがアドレスをセットしてあげないと
動かなかったりしてマウスでも色々な仕様があるみたいです
活線処理など色々と追加したいことはあるのですが
今回はこの程度で妥協することに。
'11.03.08作成