2012-05-23 29 views
2

當我嘗試回覆發送到機器的短信時,我的Arduino(Arduino Duemilanove克隆)重新啓動。這可能是一個內存問題(它只有2048字節的RAM)?Arduino在寫短信時重新啓動

我對變量沒有太多用處。只有發送作品OK。

回答

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個字節 ,你有麻煩了。

如果最大長度爲160個字符,則將SMS的緩衝區大小降至最小。一旦一切正常,將任何事情記錄到調試控制檯(保存超過100字節)並增加SMS大小。實際上,您可以通過發送SMS(包括內存狀態)來進行調試。

+0

這似乎是,GSM庫是內存飢餓 – user1400924

2

如果您的Arduino和GSM調制解調器使用相同的電源,那麼您可以嘗試使用更好的電源並重複測試。您也可以分開電源 - 一個用於Arduino,一個用於GSM調制解調器,然後重複測試。如果GSM調制解調器接近Arduino,則可以嘗試將其移動得更遠。如果在所有這些措施後復位仍然發生,則會出現軟件問題。

+0

事情工作正常,只發送或只接收的程序,如果它是一個powersupply問題不會工作。我不願意拔掉GSM屏蔽並擁有ca – user1400924

2

如果電源和內存正常,那麼您的Arduino正在重啓,因爲程序中有錯誤。尋找流浪的指針。