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

☆☆☆☆☆

やっとのことで、ND80ZV組立キットの発売のご案内をUPいたしましたところ、さっそく皆様からご注文のメールをいただき、感謝いたしております。有難うございました。
ですので、本日も朝からずっと出荷のための作業をしておりました。
大変ですけれど、やっと半年ぶりに一区切りつきましたので、なにか肩の荷がおりたようで、ほっと一息ついております。

しばらくぶりにちょっと充電期間を設けたいと思っております。
その間に残っておりますPICUSBプログラムの説明などを少しずつ書いていきたいと思います。

●PIC18F14K50のフローチャート(2)

前回PIC18F14K50プログラムの概略フローチャートをお見せしました。
じつはそのフローチャートは、Z80CPUとPIC18F14K50との間のデータの受け渡しを中心に説明したもので、そもそもの問題でありますUSB接続時のEnumerationのフローとしましては、ほとんど省略してしまっております。
これから先はそこのところが肝心のポイントになりますので、もう少し詳しくそのあたりについてフローチャートを補完することにいたします。



前回のチャートのその部分はこのようになっていました。
もちろん、こんな簡単なものではありません。

最初のsetupのところをもう少し詳しく描いたのが下のフローチャートです。


実際の処理はもう少し複雑なところもあるのですが、まあ大体こんな感じです。
セットアップパケットを受信したら、どういうコマンドが送られてきたのかをチェックしてそのコマンドに合った動作をします。
USB(HID)に首を突っ込んだ当初はこのあたりが、もうさっぱりちんぷんかんぷんで訳がわからない状態でした。
しかしだんだん理解が進むにつれて、それほど複雑なプログラムを書かなくてもよさそうだ、という感じがしてきました。
こうやってフローチャートを描いてみますとますますその感が強くなります。

セットアップパケットが送られてきたら、PIC18F14K50のHID処理プログラムがやることは、ホストからのコマンドが
1)デバイス デスクリプタの送信要求か?(”80 06 00 01”?)
2)コンフィグ デスクリプタの送信要求か?(”80 06 00 02”?)←ここは01 or not 01というように簡略化しています。
3)アドレスセットか?(”00 05 02”?)
4)HID CLASS デスクリプタの送信要求か?(”81 06 00 22”?)
をチェックして、それぞれの処理をすることです。
こうやってみると、それほど複雑な処理ではないことがおわかりいただけると思います。
1)2)4)のときは、このコマンドに続くINトランザクションで、それぞれ要求されたデスクリプタの「最初の8バイト」を送出するようにします。
ここで「最初の8バイト」と書いたのにはもちろん意味があります。
今回はちょっと時間がありませんので、それについては次回に説明することにいたします。
上の1)〜4)以外のときは0バイトデータを送出します。
”21”をチェックしていますが、これは冗長でした。このようにフローチャートを描いてみればすぐにわかったことなのですが、この”21”チェックが無駄作業であることにはいままで気がつきませんでした。

2010.10.12upload

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