S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 |
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
PCから自作電子回路を制御したい場合どうするか。
インターフェースとしてRS232Cが良く使われてきたが、昨今はこれを持たないPCも多いので、USBによる制御を行いたい。
最近、USB制御に関する書籍など情報も増えてきてはいるが、何かとややこしくて取っ掛かりが掴みにくい。
下記は、細かいシキタリはさておきとにかく動かしてみるまでのメモ。WinXP MCE SP3
PIC18F2550を使う。これはコネクタ付きのマイコンボード完成品が入手容易であるため。
ソフトウェア開発にはmikroCを使う。これは、私が慣れているCで開発したいためと、USB周りのライブラリが存在しているため。接続にあたっての初期化など定型処理は既存のものに任せたい。デモ版は2KBまでのhex出力は自由に行えるが、それ以上だと要レジスト。未確認だがデモ版で下記は作製できないかもしれない。
1) mikroCでプロジェクトを新規作成し、PICとしてPIC18F2550を選択し、クロック周波数として20MHzを選択。プロジェクトへのファイル追加は行わない。
2) Library Manager から"USB"にチェック
3) Tool => HID Terminal からディスクリプタを作成する。VIDは適切な値を入れる必要があるが、電気的な動作を定めるものではない。あとは下のラジオボタンでmikroC形式を選択し"Save descriptor"する。この時デフォルトで拡張子".c"がつかないので、あらわに要指定。
4) 3)で作成したUSBdsc.cをプロジェクトに追加する
5) mikroCのExample中の"HID Read Write Test"などにある Definit.h、VARs.h をプロジェクトのディレクトリにコピーする。
6) Project => Edit Projectする。"96MHz PLL Prescaler"を"Divide by 5 (20MHz input)"に、"Full-Speed USB Clock Source Selection"を"Clock src from 96MHz PLL/2"に、"USB Voltage Regulator"を"Enable"にする。
7) 既に自動的に作成された(殆ど)カラのcソースファイルがあるので、下記を記述しビルドし書き込んで終了。
unsigned char buf_read[16], buf_write[16]; void interrupt() { HID_InterruptProc(); } void main() { HID_Enable(&buf_read, &buf_write); Delay_ms(1000); while (1) { if(HID_Read()){ switch(buf_read[0]){ case 'a': buf_write[0] = 'z'; break; default: buf_write[0] = '?'; break; } while(!HID_Write(&buf_write, 1)); } } HID_Disable(); }
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
最終更新時間: 2010-03-08 22:21