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


PIC−USBIO using BASIC

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

[第55回]



●PICUSBIO−03(4)PICUSBIO−03同士を接続する

私達の思考や判断はともすればそれまでの経験に引きずられてしまいがちです。
PICUSBIO−03より前のPICUSBIOボードのI/Oはすべて82C55か82C55的働きをするボードでした。
その入出力コネクタも互換性を考慮してND80Z3.5の82C55の入出力用26pinフラットケーブルコネクタと同じ信号端子配列にしました。
その流れで当然のこととしてPICUSBIOボードのI/OテストはND80Z3.5のI/Oコネクタに26pinフラットケーブルで接続して行なってきました。

で。
今回のPICUSBIO−03なのですが。
I/Oの数は12で82C55の丁度半分です。
I/Oコネクタも16pinでその信号端子配列もND80Z3.5の82C55用I/Oコネクタ(26pin)とは異なっています。
それをなんとかしようと考えて片方が16pinで片方が26pinのフラットケーブルコネクタを作りました(その26pinは通常とは逆の向きにフラットケーブルにとりつける形です)。
それを使ってND80Z3.5と接続してI/Oテストをしました。
そのままではPICUSBIO−03とND80Z3.5のI/Oコネクタの入出力信号のビットの並びが異なるのでそれをプログラムを工夫して補正しました。

しっかり今までの経験、思考にひきずられてしまいました。
そんな面倒なことをしなくても、PICUSBIO−03を2台用意してお互いを16pinケーブルで接続すればよかったのでした。
なんでこんな簡単なことに気が付かなかったのでしょうかねえ。
今まではPICUSBIOをテストするのにND80Z3.5を使ってきたのでつい今回も同じレールに乗ってしまいました。
フラットケーブルコネクタの接続に困った時点で他の選択肢がないかどうか一度思考をクリアしてよく考えてみるべきでありました。
常に柔軟な思考でありたいものです。

ということで。
2台のPICUSBIO−03を16pinフラットケーブルコネクタで接続しました。

片方のPICUSBIO−03はWindows7パソコンにUSB接続し、もう片方のPICUSBIO−03はWindows98SEパソコンにUSB接続しました。

Windows98SEの画面です。

私のところではWindows98SEはまだ現役です。
便利なので手放す気にはなれません。
むしろこのようにMSDOSプロンプトで使うならば使い勝手の良さはWindows7よりも上です。
このWindows98SEパソコンには今までND80Z3.5をUSB接続していました。
今回はND80Z3.5の代わりにPICUSBIO−03をUSB接続しました。
ND80Z3.5で実行したプログラムをPICUSBIO−03用に書き直しました。
といってもほとんど同じです。
もとのBASICプログラムは[第53回]で使いました。
今回はビット列を直す必要はありませんからビット列を変更する前のプログラムです。
今までのPICUSBIOボードのBASICプログラムは小文字を使っていますが今回のプログラムはND80Z3.5のBASICプログラムをもとにして手直ししたため大文字になりました。
PICUSBIOボード用のBASICは大文字でも小文字でもどちらでも使えます。

こちらはWindows7の画面です。

こちらは今までPICUSBIO−03用に使っていたBASICプログラムをそのまま使います。
ただ今までのプログラムとは一箇所だけ違っているところがあります。
今までのプログラムはプログラムの先頭にc=in(0)がありました。
一見すると無駄な文に思えます。
なんでこんなところに余分な文を書いたのか、と思って今回はその文は削除しました。
今になってその文には意味があったことを思い出しました。

PICのI/Oは82C55と同様にI/Oポートの向きを初期設定してから使います。
しかし上のBASICプログラムにはその初期設定命令がありません。
実はBASICプログラムを簡単にするため、PICUSBIO用のBASICに対応するPICのプログラムはBASICのOUT文が実行されたときにそのポートの向きを出力に設定し、IN文が実行されたときにそのポートの向きを入力に設定するようにプログラムしてあります。
ということはBASICプログラムが最初に実行されるときにはそのプログラムの中でINかOUTが実行されるまではPICのポートの向きは決定されていないことになります。
それってちょっとまずいのでは?
そのように考えてプログラムの先頭でポートの向きを入力に設定するためにc=in(0)という文を入れたのでした。

とここまで書いてきて、そういえばひょっとして、と思いついたことがあります。
たしかPICのI/Oポートは電源ON(またはリセット)のときには向きが入力に設定されるのではなかったか?
ということでPICのDATASHEETを確認してみましたところ。
思った通りでありました。
PICは電源ONまたはリセットによってI/Oポートの向きを入力に初期設定します。
そういうことなら今までのプログラムにあった先頭の一見無駄なc=in(0)を削除した今回のプログラムはそれで正解だったことになります。

うーん。
トシをとると考えたことも思いついたことも何でも簡単に忘れてしまうのですよねえ。
そういうことのないように、以上は私自身の備忘録として書きました。

プログラムを実行しました。
こちらはWindows7の画面です。


こちらはWindows98SEの画面です。


PIC−USBIO using BASIC[第55回]
2022.9.16upload

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