[操作疑難] Arduino有嘜方法知道memory不夠

最近用Arduino整緊個自動淋花裝置, 包括
網絡+SD (儲存網頁及有關圖片)
水位檢測模塊
泥土濕度檢測模塊
繼電器模塊
初時好地地, 但後來成日出現D 怪問題. Compile又無問題, program size衹係 24,226 bytes (of a 32,256 byte maximum).
懷疑會否 variables 用memroy太多?
如果要計都好難計,例如 File, Timer, EthernetClient, .... 用左幾多memory?

暫時仍然係Arduino初學者, 以往在PC上好少要考慮variables多少及佔用空間, 但對於Arduino,空間極度短缺, 各位ching可否分享一點經驗.

有咩怪問題出現?

TOP

有咩怪問題出現?
lai113ct 發表於 2015-1-25 12:27


例如:
void setup() {
  ...
  list SD files
  ...
  setup ethernet
  ...
}

正常情況下, 應該係順序運行, 但list SD files會失敗, 當移走 setup ethernet果段, list SD files又正常.

TOP

移走list SD果段 setup ethernet行唔行到
或者試下用arduino mega, 有多d flash memory同RAM

TOP

sd 好似係行3.3v ethernet 行5v?

TOP

https://learn.adafruit.com/memor ... asuring-free-memory
加添以上的 int freeram() 程序, 然後通過 serial 列印出來, 便可知道有多少 free RAM 剩下來。

TOP

移走list SD果段 setup ethernet行唔行到
或者試下用arduino mega, 有多d flash memory同RAM ...
louc 發表於 2015-1-25 14:55


有或無list SD files, setup ethernet果段都可運行, 咁先奇怪.
我都諗緊用mega算. Uno SRAM得2048bytes, 如果變數多, 可能好易死, 網上睇到如果開啟SD 內files, 就要預512 bytes空間, 真係攞命.

   
sd 好似係行3.3v ethernet 行5v?
lai113ct 發表於 2015-1-25 15:36

我用果塊Shield 係Ethernet 5100 + SD, 就咁插落去用, 無理佢係3.3V定5V, 買番黎時已用有關example測試過,運作無問題.



加添以上的 int freeram() 程序, 然後通過 serial 列印出來, 便可知道有多少 free RAM 剩下來。 ...
Charcoal99 發表於 2015-1-25 18:15

謝ching提點. 我會試試.

TOP

最近用Arduino整緊個自動淋花裝置, 包括
網絡+SD (儲存網頁及有關圖片)
水位檢測模塊
泥土濕度檢測模塊
繼 ...
laputafish 發表於 2015-1-25 11:39



    有用很多 printf 嗎

TOP

有或無list SD files, setup ethernet果段都可運行, 咁先奇怪.
我都諗緊用mega算. Uno SRAM得2048bytes,  ...
laputafish 發表於 2015-1-25 21:42



    W5100 ethernet 同SD 都係行3.3V
74LVC1G125DCK做spi bridge,
第時用其他模組要考慮先好上電, 如果唔係會燒

有成8k我估現況係LOAD 完 沒做好release memory步驟
沒CODE係手上既, 我suggest try 左3次都唔得既watchdog佢
if 有CODE 睇, 先可以DEBUG

TOP

有用很多 printf 嗎
xiao 發表於 2015-1-26 15:28


係用左唔少Serial.print, 網上睇過, 所有string 加 F("..") 就可以將 constant string 放晒落 flash memory (program區), 唔洗嘥左 SRAM (variables區), 之後好好多, 真係行到.



W5100 ethernet 同SD 都係行3.3V
74LVC1G125DCK做spi bridge,
第時用其他模組要考慮先好上電, 如 ...
lai113ct 發表於 2015-1-26 18:26

暫時用親d野主要係sensor同relay (5V), 都係由ethernet shield囉電. Ethernet Shield 上保留番原Arudino接口, Vcc, 5V, 3.3V....
暫時未洗用 mega, 如果再添置Arudino,衹會要mega, 廢事煩.

暫時一個問題係用Arduino 作網上遙控, 同一時間衹可以一個user, 例如每秒由arduino更新頁面狀態, 多一個connection 已經不勝負荷.

TOP