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にする処理は削除した”と記しましたが、単純に削除してはいけなかったようです。
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ステータスで計測を再開しないよう、新たにコマンド・ステータスの有効/無効を示すフラグを設けて、不具合は解決しました。
やれやれ