2013-05-15 67 views
0

我寫了一個用於Arduino Uno Rev3的Arduino sketch來監測溫度和電流。 6個小時後,我的Arduino'崩潰'。6小時後Arduino崩潰

重置Arduino後,它再次運行良好。我在代碼中寫了什麼會導致這個問題?

代碼,在引擎收錄

http://pastebin.com/1G8SwHge

+0

'crash'是什麼意思?您必須提供更多的細節,更好的是,調試您的應用程序並針對導致錯誤的行。 – Jesse

+0

@Jesse,他肯定在談論Arduino的硬件崩潰。一旦它崩潰,你不能調試它。 – FeliceM

+0

這是否發生過多次? – Dancrumb

回答

1

那麼,首先,你溢出你的字符串緩衝區。

您分配15個字節cc

char cc[15]; 

但是你必須代碼:

strncat(cc,o,20); 
strncat(cc,"|",20); 
strncat(cc,m,20); 
strncat(cc,"|",20); 
strncat(cc,n,20); 

這可以把多達62個字節在那裏。大多數其他緩衝區也是如此。

另外,您正在使用多個第三方庫。其中任何一個都可能包含內存泄漏。

-1

則很可能耗盡SRAM內存。嘗試取消某些變量的註釋並再次運行以檢查是否存在問題。你有很多變量,這可能是Arduino Uno上只有2個  KB SRAM的問題。

+2

如果存在內存泄漏,而不是由於變量數量的原因,6小時後,內存不足將只是原因。 – Dancrumb

+0

@Dancrumb,正是我想說的。謝謝! – FeliceM