標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第650回]
●コマンドデータの取得
前回はやっと
movlw 08
movwf UCON
まで説明が済みました。
;connected to USB looptop clrf UIR movlw 08 movwf UCON ; call setupck
次は
call setupck
です。
setupckルーチンは[第646回]でお見せしていますが、だいぶ時間が経ってしまいましたので、下に再掲いたします。
setupck movlw 08 movwf UCON;clear bit4,for SIE enbl lfsr 0,200 btfsc INDF0,7 goto ck_bd1 lfsr 1,220 goto setupck1 ck_bd1 lfsr 0,204 btfsc INDF0,7 goto notsetup lfsr 1,228 setupck1 movf INDF0,w andlw 3c sublw 34;PID="1101" SETUP bz setupck2 call setbd0 call setbd1 notsetup bcf STATUS,z return ;(1)"setup" received setupck2 movf POSTINC1,w movwf db0 movf POSTINC1,w movwf db1 movf POSTINC1,w movwf db2 movf POSTINC1,w movwf db3 movf POSTINC1,w;dummy db4 movf POSTINC1,w;dummy db5 movf POSTINC1,w movwf db6;send request data bytes call setbd0 call setbd1 bsf STATUS,z return
ここでも
movlw 08
movwf UCON
を実行していますね。
冗長かもしれません。
ここでなにをやっているのかといいますと、EP0(OUT)のDATA0バッファの受信マーク、BD0(アドレス200)のビット7と、EP0(OUT)のDATA1バッファの受信マーク、BD1(アドレス204)のビット7をチェックしているのです。
BD0、BD1のメモリマップは[第639回]にあります。
それぞれのトップアドレスBDnSTATについては[第482回]でDataSheetを引用しています。
ですけれど、こちらもずいぶん時間がたってしまいましたから、もう一度お見せすることにいたします。
なお[第482回]で引用しているDataSheetの17.4.1.1Buffer Ownershipの文章は、BDnバッファの仕組みを説明しているところですから、再読されることをおすすめします。
●BDnSTAT
BDnSTATレジスタはビット7(UOWN)を1にするとSIEがアクセス権をもちます。通常はそのようにセットして、SIEがUSBホストコントローラからコマンドを受信するのを待ちます。
SIEがコマンド、データを受信すると、その受信したエンドポイントのBDnSTATのビット7を0にします。
BDnSTATのビット7が0になったときは、SIEがBDnバッファに受信したコマンド、データをセットしたことを示しています。
そのときのBDnSTATの内容は下記のようになっています。
[出典]Microchip社PIC18F14K50DataSheet
時間がなくなってしまいました。続きは次回にいたします。
2010.10.31upload
前へ
次へ
ホームページトップへ戻る