denshikobo’s blog

PICプログラミングやPCの操作で感じた日々の由無し事を綴ります

Oscilogi2(PIC基板)の動作がおかしい

(2016.10.02)
Raspi3に乗せたOscilogi2の動作がおかしいことに気付きました。
Osci_Logi_Consoleの起動直後に計測ボタンが点滅しています。計測ボタンを押していないのにPICは計測中のようです。しかも、中断ボタンを押しても止まりません。データ・ロガー・モードばかりテストしていたので、通常計測の異常に気付きませんでした。orz

リセット直後のOscilogi2に異常は見られません。しかし、計測を開始すると中断できなくなります。驚いたことにRaspi2Bの方はこれまで同様、計測開始/中断が出来るのです。

いったい何が起きているんでしょうか?

データ・ロガーと通常計測の大きな違いは、計測中にコマンドとデータの送受を行うか否かです。通常計測の場合は、計測を終了(または中断)するまで、受信コマンドの解析を行いません。(I2C割り込みで受信は出来ます)
唯一、BRKコマンド(最初の文字B)だけ、I2C割り込みの中で識別してbreak_flagを立てています。それによって計測を中断しています。

PICkit3でOscilogi2の動作を調べてみると・・・

(1)I2C割り込みの中でbreak_flagを立てる所にbreakポイントをセットする
(2)Osci_Logi_Consoleで中断ボタンを押す
(3)PICkit3がbreakで止まる
(4)break_flagはセットされている

ふむ、正常。

(1)通常計測ループを抜けた所にbreakポイントをセットする
(2)Osci_Logi_Consoleで中断ボタンを押す
(3)PICkit3がbreakで止まる
(4)break_flagはセットされている

ふむ、正常。

(1)breakポイントを外す
(2)Osci_Logi_Consoleで中断ボタンを押す
(3)PICkit3でbreakを掛ける
(4)通常計測ループを走っている

一旦計測ループを抜けて、また計測を再開している?
えーとコマンド・ステータスは・・・LOG_COMMAND?
LOGコマンドを送っていないのに?

あっ!

2016.09.28のブログの中で”計測終了時にコマンド・ステータスをCOMMAND_NULLにする処理は削除した”と記しましたが、単純に削除してはいけなかったようです。

denshikobo.hatenablog.com

Raspi2Bの場合
(1)文字Bを受信して計測を中断
(2)BRKコマンドを全て受信してから(30μS以上経過)
(3)コマンド・ステータスがBRK_COMMANDになると
(4)Oscilogi_mainループで計測再開判定==>再開せず

Raspi3Bの場合
(1)文字Bを受信して計測を中断
(2)BRKコマンドを全て受信する前に(20μS未満)
(3)コマンド・ステータスがLOG_COMMANDのまま
(4)Oscilogi_mainループで計測再開判定==>計測再開

と言うことことではないでしょうか?

以前判定したLOG_COMMANDステータスで計測を再開しないよう、新たにコマンド・ステータスの有効/無効を示すフラグを設けて、不具合は解決しました。

やれやれ