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


PIC−USBIO using BASIC

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[第51回]



●PICUSBIO−10(4)STROBE/READYプログラム

STROBEとREADY(BUSY)による制御はデータ送受信の定番です。
その制御を行なうためにはデータラインのほかにSTROBE(データ出力確定信号)とREADY(送信可信号)の2ラインが必要です。
READY信号はその意味の取り方によってBUSY(送信不可)信号という場合もあります。
STROBE/READYによる信号制御はノイズのない状況下では安定した送受信が行なえます。
ということで問題はSTROBEライン、READYラインの確保なのですが。

あるじゃありませんか。
はなから無いものと諦めてはいけません。
じっくり考えてみれば道は開けるものです。
確かにデータラインのほかにはSTROBE、READYに使えるラインはありません。
しかし。
データラインそのものを利用するという手がありました。
いつもそのようにできるということではありません。
今回の場合には、という但し書きつきです。
今回I/Oポートから入出力する値は01、02、04、08、10、20、40、80に限られています(4ビットのポートでは01、02、04、08の4種)。
ということはそのほかのデータは「制御コード」として使えることになります。
それ以外のデータ(コード)ならなんでもよいのですが最もわかりやすい値としてSTROBE、READYともにFFを使うことにしました。

下はその概念図です。

82C55のBポートからはデータを出力します。
今までと違うのはデータを出力しない期間にはFFを出力するようにしているところです。
この場合には出力データ=STROBE信号になります。
PICUSBIO−10の側も同じように入力可能な期間中はREADY信号としてFFを出力します。
前に戻りますが82C55の側はAポートに入力されるPICUSBIO−10からの出力値がFFであることが確認できたときに先にCポートの下位4ビットに12ビットデータのうちの上位4ビットを出力し続いてBポートから下位8ビットのデータを出力します。
このデータ出力が同時にSTROBE信号として働きます。
PICUSBIO−10の側は先にBポートからデータを入力し続いてCポートからデータを入力します。
Bポートから入力した値がFFでなければそれが同時にSTROBE信号であると認識して入力値を確定します。
Cポートから入力した下位4ビットの値を上位4ビットに変換してCポートから出力し続いてBポートから入力した8ビットの値をAポートから出力します。
この値が同時にBUSY(NOT READY)信号になります。
そうしておいて入力した値をPRINT文で表示し82C55からの出力がFFになるのを待ちます。
前に戻りますが82C55の側はAポートから入力されるPICUSBIO−10からの出力値がFF以外の値になるのを待ってBポートからFFを出力します。
PICUSBIO−10の側もBポートからの入力値がFFになるのを見てAポートからFFを出力して次の入力サイクルに戻ります。

ND80Z3.5のZB3BASICの画面です。

110行と120行のループで82C55のAポートとCポートに入力される値はPICUSBIO−10から出力されたエコーバックデータです。
この値は今までのプログラムと違ってSTROBE、READYのハンドシェークによって確実にPICUSBIO−10に送信され、そしてエコーバックされた確実な値ですから、もしその値が82C55から出力した値と相違していたらなんらかのエラーが発生したと考えられます。
130行、140行はその場合にエラー表示ルーチンへジャンプするGOTO文です。

PICUSBIO−10側のBASIC画面です。

STROBE信号によって確実な値を1回だけ入力しますから今までのプログラムのように2度表示しないためのプログラムループはありません。

プログラムの実行結果です。


今までのプログラムはあくまで簡便なテストプログラムです。
2つのシステムの間で確実なデータ伝送を行なうことを目的としたプログラムではありません。
それに対して今回のプログラムは82C55側もPICUSBIO−10の側も少し面倒なプログラムになっていますがSTROBE/READYによる確実なデータ送受信が行なえるハンドシェークのサンプルプログラムになっています。

PIC−USBIO using BASIC[第51回]
2022.9.9upload

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