void uartf_isr(void)においてdefault:while(1){} break;

ホーム フォーラム Lazurite IDEについて void uartf_isr(void)においてdefault:while(1){} break;

このトピックには 3 返信 、 2 ボイス が含まれます。 最終更新 by  Lazuriteの開発者 1号 1 週、 1 日 前.

表示中の投稿 1 (合計 4 中)
  • 著者
    投稿
  • #12749 返信

    渡辺 政彦

    ラズライトIDEとともに配布されているAPIにおいて
    uart割り込みハンドラ内でstatusが想定された値以外の場合無限ループになるように記述されています。
    void uartf_isr(void)においてdefault:while(1){} break;

    どうやらここで無限ループに落ちる場合が多発するようです。
    while(1){}を削除しても良いでしょうか。

    #13153 返信

    Lazuriteの開発者 1号
    キーマスター

    どのようなエラーが発生しているのか調べていただくことはできるでしょうか?
    Swhile(1){}を、Serial.println_long(status,HEX);
    に変更して頂き、シリアル出力されるステータスをお教え頂けないでしょうか?

    #13176 返信

    渡辺 政彦

    Lazuriteの開発者 1号 様
    お世話になり感謝申し上げます。

    status == 0 です。

    set_bit(UF0IRQ); が関数の末尾で実行されるため だと思われます。

    #13179 返信

    Lazuriteの開発者 1号
    キーマスター

    渡辺様
    ご確認ありがとうございました。次回更新時にwhile(1){}は削除するようにします。
    ただし割込み要因が無いのに割込みが発生しているということであり、それ自体が異常な動作と思います。
    当方ではGPSをはじめ様々なデバイスをUARTFに接続しましたが、同じような問題は起きておりませんので、割込み要因が発生している原因が解れば知りたいです。

    set_bit(UF0IRQ)は、割込み処理を抜ける最後に実行するコマンドとのことなので、挿入場所は問題ないと考えています。

表示中の投稿 1 (合計 4 中)
返信先: void uartf_isr(void)においてdefault:while(1){} break;
あなたの情報:




× 6 = 54