標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第643回]

●PIC18F14K50のHIDプログラム(その初期設定部分その4)

今回もPIC18F14K50を使ったHIDプログラムの初期設定部分の続きです。
前回までのプログラムでUSB接続の準備は全て終わり、あとはUSBホストコントローラからのコマンドを待つばかりです。

;
	movlw 48
	movwf UCON;clear bit4,for SIE enbl
loop_ucon
	btfss UCON,4
	goto loop_ucon
;
;connected to USB !
;

USB接続スタンバイにするために最後に行うのがUCONレジスタの設定です。
UCONレジスタについては[第511回]で説明をしています。
Datasheetもお見せしておりますけれど、いちいち戻るのも面倒な話ですので、下に再掲いたします。


[出典]MICROCHIP社PIC18F14K50DataSheet

UCONレジスタはその名の通り、USB Control Registerです。
このレジスタを設定しないことには、USBSIE(PIC内蔵USBコントローラ)は動作してくれません。
EP0(OUT)をping−pong bufferとして使いますから、bit6=1にします。
bit4=0、bit3=1にします。
bit5、bit2、bit1は0にしておいて問題はありません。
ですからUCONの初期設定は48を指定します。

UCONレジスタを初期設定したあとは[第511回]で説明をしましたように、UCONレジスタのbit4が1になるまでループしながら待っています。
UCONレジスタのbit4はプログラムでは0を書き込むことしかできません。
このビットはUSBSIEがUSBホストコントローラからのSETUPトークンパケットを受信すると、SIEによって1がセットされます。
ですから、USBのための初期設定を完了したあとは、USBホストコントローラから送られてくるSETUPトークンパケットが検出されるまで(つまりUCONレジスタのビット4が1にセットされるまで)ひたすら待っている(あるいはその間はUSB以外のなにかの作業をしながら待っている)ということになります。
2010.10.21upload

前へ
次へ
ホームページトップへ戻る