2

マシンに送信された SMS に応答しようとすると、Arduino (Arduino Duemilanove クローン) が再起動します。これはメモリの問題でしょうか (2048 バイトの RAM しかありません)。

変数はあまり使いません。送信のみOK。

4

3 に答える 3

2

GSM ライブラリのサイズは 1000 バイト弱です。デバッグ用のシリアル ポート (それを使用すると仮定)、さらに 100 程度。したがって、メモリが不足しているため、デバッグコンソールにガベージが発生したり、Arduino が再起動したりしていると思います。

Arduino クックブックで見つけた情報に基づいて、このコードでメモリをチェックできます。

int memory_free()
{
    int free_value;
    if ((int)__brkval == 0)
        free_value = ((int)&free_value) - ((int)&__bss_end);
    else
        free_value = ((int)&free_value) - ((int)__brkval);
    return free_value;
}

私の経験では、それが 150 バイト未満を返す場合、問題が発生しています。

SMS のバッファ サイズが最大 160 文字の場合は、最小に減らします。すべてが機能したら、デバッグ コンソールへのロギングを切り替え (100 バイト以上節約)、SMS サイズを増やします。SMS を送信することで、メモリの状態を含めて実際にデバッグを行うことができます。

于 2012-05-23T15:17:58.007 に答える
2

電源とメモリに問題がなければ、プログラムのエラーにより Arduino が再起動しています。漂遊ポインタを探します。

于 2012-05-24T16:37:46.090 に答える
2

Arduino と GSM モデムが同じ電源にある場合は、より良い電源で試して、テストを繰り返すことができます。電源を Arduino 用と GSM モデム用に分けて、テストを繰り返すこともできます。GSM モデムが Arduino の近くにある場合は、さらに離してみてください。これらすべての対策を行った後でもリセットが発生する場合は、ソフトウェアに問題があります。

于 2012-05-24T07:42:43.087 に答える