g-shinya
2022年5月19日 16時16分
ArmadilloG3LのRS485通信について質問です。
armadilloの状態は下記フォーラム(at16のほう)と同様です。
https://armadillo.atmark-techno.com/forum/armadillo/11827
テストプログラムtest.pyにて、ArmadilloG3Lにデータを100msごとに送信すると、LinuxOSが再起動してしまいます。
こちらはノイズなどの対策用で働いているものでしょうか?
それともバグでしょうか?
テストプログラムと、再起動前に表示されたコンソールの内容、を添付いたします。
ご確認のほどよろしくお願いいたします。
ファイル | ファイルの説明 |
---|---|
test.py_.txt | |
再起動前のコンソール上ログ.txt |
koga
2022年5月23日 7時34分
アットマークテクノの古賀です。
g-shinyaさん:
>ArmadilloG3LのRS485通信について質問です。
>
>armadilloの状態は下記フォーラム(at16のほう)と同様です。
>https://armadillo.atmark-techno.com/forum/armadillo/11827
>
>テストプログラムtest.pyにて、ArmadilloG3Lにデータを100msごとに送信すると、LinuxOSが再起動してしまいます。
>こちらはノイズなどの対策用で働いているものでしょうか?
>それともバグでしょうか?
>テストプログラムと、再起動前に表示されたコンソールの内容、を添付いたします。
ログを見ると、カーネル内部で想定していない例外が起き、その結果カーネルパニックして再起動しているようです。
例外が起きているのは、受信割り込みハンドラのように思われますが、詳細は不明です。
なお、test.py を拝見すると、main() にあるループ中で time.sleep(0.01) による待ち動作を行っており、0.01 秒、つまり 10[msec] の待ち動作となっています。とすると、「データを100msごとに送信」ではなく、「データを10msごとに送信」という動作になっていると思われます(※read_test() での読み出し待ちや、その他のオーバーヘッドがありますので、実際には、もっと長い周期になると思いますが)。
ためしに、time.sleep(0.01) ではなく time.sleep(0.1) にして 100ms 周期に近くした場合は、どうなるでしょうか?