PIC−USBIO using BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
USBインターフェースを内蔵したPICを使ってWindowsパソコンで外部回路を制御するための各種I/O基板の製作記事です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第61回]
●PICUSBIO−03(10)picout、picin、TRISC、TRISB、PORTC、PORTB
前回はダイレクトモードでPICOUT、PICINを使ってTRISC、TRISB、PORTC、PORTBにアクセスしてみました。
今回はBASICプログラムの中で使ってみます。
[第56回]と同じテストをOUTをPICOUTに、INをPICINに置き換えてやってみます。
PICOUT、PICINでPORTC、PORTBにアクセスするときはその前にTRISC、TRISBに対してポートの向きを設定しておく必要があります。
上側のプログラムではPORTCを出力に、PORTBを入力に設定しています。
逆に下側のプログラムではPORTBを出力に、PORTCを入力に設定しています。
そのようにプログラムを変更してから実行しました。
うまくいったように見えましたがよく見るとちょっとおかしなところがあることに気が付きました。
上側の実行結果では出力値(左側)と入力値(右側、エコーバック)にずれがあります。
また下側の実行結果はときどき値が飛んだりF0が入力されたりしています。
こんなおかしなことはないはず、と思ってログを確認したところ異常表示の原因がわかりました。
うっかりしてコマンドライン引数をつけないでPICIO10OT[Enter]でBASICを起動していました。
コマンドライン引数については[第56回]で説明をしています。
本来はコマンドライン引数をつけてBASICを起動しなければならないのにつけないで起動してしまったので[第58回]と同じ状況になってしまいました。
ふたつのBASICプログラムが同じ1台のPICUSBIO−03にアクセスしていたのです。
[第58回]のときはOUT命令、IN関数のプログラムなので相当にぎくしゃくした動きだったのですが、今回はPICOUT命令とPICIN関数のプログラムなので出力ポートに対して入力命令を実行するとラッチされた出力値がそのまま読み出されます。
そのために割りとなめらかな動きになっています。
しかしやはり同じ1台のPICUSBIO−03に対して異なるプログラムから出力、入力の要求が出されますからどうしても得られる値はちぐはくなものになってしまいます。
異常な値の原因はわかりましたので、もう一度今度はちゃんとコマンドライン引数をつけてテストをしてみます。
その結果については次回に書くことにいたします。
PIC−USBIO using BASIC[第61回]
2022.9.25upload
前へ
次へ
ホームページトップへ戻る