PIC−USBIO using BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第53回]
●PICUSBIO−03(2)ND80Z3.5に接続
前回はPICUSBIO−03をLED表示ボードに接続してとりあえず簡単な出力テストを行ないました。
出力テストは前回のテストのようにLEDをつなぐことでできますが入力のテストは簡単ではありません。
一般的には外部にトグルスイッチなどを並べて取り付けてそれをパチパチやりながら行なうことになります。
ですけれど。
幸いそんな面倒なことを考えなくても今までのボードのようにND80Z3.5の82C55と接続して簡単にテストをすることができます。
そのような考えもあって前回は片方が16pinでもう片方が26pinのフラットケーブルコネクタを作りました。
今回はそのケーブルコネクタを使ってテストを行ないます。
PICUSB−03をND80Z3.5の82C55入出力コネクタに接続しました。
前回は16pin−26pinフラットケーブルコネクタとLED表示ボードの間に変換用のコネクタを置きましたが今回は16pin−26pinフラットケーブルコネクタを直接ND80Z3.5の82C55入出力コネクタに接続しました。
この場合に問題になるのはGND線の接続です。
前回製作した16pin−26pinフラットケーブルコネクタでは16pin側のGNDと26pin側のGNDが合いません。
前回はそこのところを合わせるために間にコネクタボードを置いてGNDをつなぎました。
今回はそのようにする代わりに裏技を使います。
16pin側のGNDは26pin側ではPC6になっています。
これを利用します。
今回はND80Z3.5の82C55のCポートは下位4ビットは使いますが上位4ビット(PC4〜PC7)は使いません。
そこでND80Z3.5のBASICプログラムの先頭で82C55の上位4ビットを出力に設定します。
82C55は初期設定で出力に設定したポートの出力は0(Lレベル)になります。
PC6がLレベルになる(出力トランジスタを通じてGNDラインにつながる)ため82C55の出力許容電流以内ならば見かけ上はPICUSBIO−03とND80Z3.5の82C55のGNDがつながった状態になります。
ただの入出力テストをするだけでそれほど電流は流れませんからこれで大丈夫です。
ND80Z3.5のBASICプログラムです。
これだけを見ると何をやっているのかわからないところが出てきます。
下のPICUSBIO−03側のプログラムと合わせてみると合点できます。
30行で82C55の初期設定をしています。
BポートとCポートの上位4ビットを出力に、下位4ビットを入力に設定します(設定コマンドについては[第34回]参照)。
データはBポートから出力しますがSTROBEを兼ねるためまず$FFを出力します。
STROBE/READYを使ったデータの入出力については[第51回]を参照してください。
今回はCポートの下位4ビットをPICUSBIO−03のREADY信号の入力に使います。
PC0〜PC3が$0Fになるまで(PICUSBIO−03がREADYになるまで)待ちます。
前回書きましたようにPICUSBIO−03のPORTCが82C55のBポートにつながっていますがビットの配列は両者で異なっています。
しかし今回はそれを承知の上であえてそのままデータ(A%)を82C55のBポートから出力します。
そのあとPICUSBIO−03がREADYからBUSYになる(PICUSBIO−03がBUSY信号として、入力データをエコーバックする)まで待ちます。
BUSYを確認したらBポートから$FFを出力して次のデータ出力処理をします。
プログラムを実行しました。
ND80Z3.5側のBASIC画面です。
左側は82C55のBポートから出力した値です。
1のビットを右から左にシフトさせながらその値を出力しています。
右側はPICUSBIO−03からエコーバックされた値です。
下のプログラムを見ればわかりますが、PICUSBIO−03はPORTCから入力した値(の上位4ビット)をそのままPORTBの上位4ビットから出力します。
それを82C55のCポートの下位4ビットから入力しますから本来ならば送出したデータ(左側の値)の上位4ビットが右側の下位4ビットに表示されるはずですがフラットケーブルの16pinと26pinの信号配列がずれているために異なった値となって表示されています。
PICUSBIO−03側のBASICプログラムです。
プログラムの動作は上で説明した通りです。
プログラムを実行したときの82C55側から入力したデータです。
82C55の出力とPICUSBIO−03の入力のビット配列が異なっているために1のビットが右から左にまっすぐにシフトするのではなくて途中で行きつ戻りつしながら進んでいっています。
フラットケーブルの16pinと26pinの信号配列を見ながら82C55の出力データとPICUSBIO−03の入力データのそれぞれの表示された値を比べてみると正しく送受信されていることがわかります。
わかりますけれどこのままでは「中途半端なプログラム」です。
せっかくのプログラムですから正しい値に直して表示してこそプログラムらしいプログラムであるといえるでしょう。
次回はそのようにプログラムしてみることにいたします。
PIC−USBIO using BASIC[第53回]
2022.9.13upload
前へ
次へ
ホームページトップへ戻る