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


PIC−USBIO using BASIC

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

[第138回]



●PICUSBIO−03(87)ICモード(9)マスターモード(8)DS1307受信プログラム(2)

前回作ったDS1307受信プログラムですがプログラムの作成後に実行してみたところDS1307の日時データが正しく受信できました。
そこまでは良かったのですが念のために続けてもう一度プログラムを実行してみたところ信じられないことがおきてしまいました。
これがそのときの画像です。

このときは何がどうなったのかまったくわからずただただ困惑するばかりでありました。
今あらためてこの画像を見てみると全てがD1という値になっています。
D1というのは受信モードの最初にDS1307に送信したスレーブアドレス+R/Wビットです。
そういうことか。
今は何がおきたかわかっていますから大体のところは納得できています。
ある理由から突然MSSPモジュールが通信できない状態になっていたのですがBASICの受信プログラムは簡略化するためにMSSPモジュールの状態を確認することなくプログラムを実行していました。
システムが機能していませんからまともに受信などできません。
受信したつもりでSSPBUFを読んだ結果その直前にSSPBUFに書き込んだD1が毎回読み出されてしまったようです。
現象はおそらくそういうことなのでしょうが問題はなぜ突然受信プログラムがまともに実行できなくなってしまったのかということです。
この状態で送信プログラムをもう一度実行したあとで再度受信プログラムを実行してみたのですが状況は全く変わらずD1が読み出されるばかりでした。
そこで一旦PICUSBIO−03の電源をOFFにしてからもう一度BASICを起動して送信プログラムを実行し続いて受信プログラムを実行してみたところ今度は日時データが読み出せました。
しかし続いてもう一度受信プログラムを実行してみたところやっぱりD1ばかりが読み出されてしまいました。
どうやら受信プログラムを実行するとその実行後に何か不具合が発生してしまうようです。
なぜなのか?
DS1307は新独立化セットやND80KL/86ボートで使っています。
DS1307の通信プログラムはZ80マシン語だったり8086マシン語だったりしているのですがこんなおかしなことはおきていません。
一体そのマシン語のプログラムと今回のBASICの受信プログラムのどこが違っているのか?
そこでそれを探るべくDS1307のData Sheetに戻って確認をしてみたところその違いがみつかりました。

説明の途中なのですが本日は時間がなくなってしまいました。
続きは次回にいたします。

PIC−USBIO using BASIC[第138回]
2022.12.25upload

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