2

当我尝试响应发送到机器的 SMS 时,我的 Arduino(Arduino Duemilanove 克隆)重新启动。这可能是内存问题(它只有 2048 字节 RAM)吗?

我对变量使用的不多。只有发送工作正常。

4

3 回答 3

2

GSM 库占用的字节数略少于 1000 个字节。您用于调试的串行端口(假设您使用它),另外 100 个左右。所以我猜你内存不足导致调试控制台出现垃圾或重新启动Arduino。

您可以根据我在 Arduino Cookbook 中找到的信息使用此代码检查您的记忆:

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 大小。您实际上可以通过发送短信来进行调试,包括内存状态。

于 2012-05-23T15:17:58.007 回答
2

如果您的 Arduino 和 GSM 调制解调器使用相同的电源,那么您可以尝试使用更好的电源并重复测试。您还可以分离电源 - 一个用于 Arduino,一个用于 GSM 调制解调器,然后重复测试。如果 GSM 调制解调器靠近 Arduino,您可以尝试将其移得更远。如果在所有这些措施之后仍然发生重置,则您有软件问题。

于 2012-05-24T07:42:43.087 回答
2

如果电源和内存都正常,那么您的 Arduino 正在重新启动,因为程序中有错误。寻找杂散指针。

于 2012-05-24T16:37:46.090 回答