 |
 |
USBインターフェイスの処理ですが、これについて簡単に説明することは少々困難で、実際にUSBマウスのわずかこれだけの実装をするためだけでもUSBの仕様に関する理解が非常に重要になってきます。逆に、この実装を通してUSBの仕様について多くを学ぶことができました。
USBの仕様書は、USBフォーラムで入手することができます。ただし、この仕様書はアーキテクチャからはじまり電気的仕様、機械的仕様などなど実際に実装をする上で必ずしも理解をする必要がない部分を多々含んでいます。
実際にソフトウェアを実装する上では、もちろんUSBに関する基礎的な知識は必要なのですが、どちらかというと使用するUSBノードコントローラーの仕様に関する理解の方が重要で、USB加速度センサマウスの実装においてもUSBN-9603の仕様の解釈/理解で苦労しました。
参考文献を以下に示しておきます。
1.トランジスタ技術 2000年6月号 作るオリジナルUSBアダプタ
2.インターフェイス 2000年3月号 USBターゲット機器の設計法
3.インターフェイス 2001年1月号 USB機器&ドライバ実践開発手法
4.インターフェイス増刊 TECHI Vol.8 USBハード&ソフト開発のすべて
CQ出版社 4のTECHIは、丁度このUSBマウスの開発でUSBN-9603の仕様の理解とプログラムの実装で思考錯誤を繰り返し泥沼化しつつあった時に創刊されたのですが、サンプルソフトがCD-ROMで添付されており、USBN-9603の仕様の理解とプログラムの実装をする上で非常に参考になった一冊です。とりあえずUSBデバイスに挑戦すると言った場合にはお薦めの一冊です。
なお、IRQ0割込みでの処理は、USBN-9603による割込みが発生したことを外見上判断できるように、LED5を点灯させたのち、USB経由でPCに送信するマウス情報(ポインタの移動量X,Yとボタンの状態)の更新(void update_MS(void)::AccUSBMouse.c)を行った後、USBN-9603に対する処理を void USBN9603_int(void):USBN9603.cを呼び出します。
この処理については4章で説明します。最後にIRQ0割込みフラグをクリアした後、IRQ0割込み処理の終了を外見上判断できるように、LED5を消灯させています。 |