PICでUSBを!(知識ゼロからのスタートです)
PIC18F14K50のUSB機能を100%自前のソフトで制御する試みです。しかもアセンブラで!
当記事は2009年12月から「TTLでCPUをつくろう!」というタイトルの もとにほとんど毎日連載をしてきたものを再編集したものです。 2011.7.12

前へ
次へ
目次へ戻る
ホームページトップへ戻る
☆USB(HID)送信プログラム

パソコンからPIC18F2550へデータを送信するプログラムの試験的なものはすでにできています。
そのプログラムをもとに実用的なプログラムに作り上げました。
実用になったHID送信プログラムの説明です。

[第68回]

●HID送信プログラムの送信速度

HIDのデータ送信速度については、HIDについていろいろ調べる過程でわかってきました。
64バイトのデータを1msecごとに送信する速度です。
64バイト/msecですから、64KB/秒です。
ただし、HIDの場合には、送信(OUT)だけのプログラムを実行しても、間に受信(IN)動作が実行されてしまいます。
そのあたりのことについては、[第38回]で説明をいたしました。

とにかくHIDでは受信のためのプログラムは実行していなくても、勝手に受信動作が行われてしまいますから、送信のみのプログラムを実行させても、実際の送信速度は64KB/秒ではなくて、せいぜい32KB/秒になってしまいます。
それでもRS232Cに比べたら桁違いの送信速度です。
RS232Cは1バイトのデータにスタートビットとストップピットをつけて、少なくとも10ビットのデータとして送信します。
たとえば9600ボーの場合、9600/10=960ですから、960バイト/秒にしかなりませんから、32KB/秒は文字通り桁違いの速さだと言えます。

ところで、[第38回]で行ったHIDの送受信テストは、WindowsパソコンとPIC18F4550を接続して、機械的に送信、受信をただ繰り返しただけでした。
しかし実際には、PIC18F4550(PIC18F2550を使うことにしましたから、以下の説明ではPIC18F2550と書くことにします)とZ80CPUとの間で、データの受け渡しをしなければなりません。
送信時間には、Z80CPUがPIC18F2550からデータを受け取って、それをメモリに格納する時間も含めて考える必要があります。

今回、Z80版TK80ボード(ND80ZH)の試作基板にPIC18F2550を接続して、HIDを通じてTK80モニタプログラムのSTORE、LOADの機能が働くところまでできましたから、さっそくLOADを使って、パソコンからHID経由でPIC18F2550にデータを送り、さらにそのデータをND80ZHのRAMに書き込むところまでの時間がどれほどになるかを測定してみました。

●PIC18F2550からZ80にデータを渡しているところをオシロスコープでモニタしました


上側(CH1)はPIC18F2550からのストローブ出力で、下側(CH2)はZ80回路からのREADY/BUSY出力信号です。

1回1バイトのデータの転送に大体50μsecかかっています。
これは実はZ80がPIC18F2550からデータを受け取って、それをRAMに書き込むまでに必要な実行時間なのです。
Z80はクロック4MHzで動作させていますから、1バイトのデータをPIC18F2550から受け取って、それをRAMに書き込むために、その程度の時間がかかってしまいます。

1バイト50μsecですから、1000000/50=20000(バイト/秒)になります。20KB/秒です。
これはHIDの送信速度よりも遅い速度ですが、ここがネックになってしまいますから、結局このZ80ボードでのHID通信速度は20KB/秒ということになります(それでもRS232Cに比べればまだまだ十分桁違いの速さです)。
CPUをつくろう!第495回(2010.5.6upload)を再編集

PICでUSBを![第68回]
2011.7.12upload

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