у меня наблюдается другая проблема:
--------------------------------------
Имеем следующую программу:
dofile("wifi_1.lua")
print(node.heap());
dofile("nk_start.lc")
print("1="..collectgarbage("count")..","..node.heap());
collectgarbage()
dofile("srv_1.lua");
print("2="..collectgarbage("count")..","..node.heap());
-------------------------
function cb() -- callback
collectgarbage()
print("3="..collectgarbage("count")..","..node.heap());
dofile("cbAM2302.lua");
print("4="..collectgarbage("count")..","..node.heap());
dofile("cb18b20.lua");
print("5="..collectgarbage("count")..","..node.heap());
dofile("get_tp.lc");
dofile("norm.lc");
print("6="..collectgarbage("count")..","..node.heap());
end
----------------------------
tmr.alarm(3,2000,1,cb) -- call cb()
---end program-------------------
Как видно из программы в ней есть колбек cb() который вызывается alarm каждые две секунды
Ниже даны сообщения об использовании памяти.
Замечу, что нехватка памяти происходит на втором вызове, а не на первом. При этом еще куча свободной.
Во как!!!
-------------------------------------------------
message in debug:
NodeMCU 0.9.5 build 20150318 powered by Lua 5.1.4
> dofile('main.lua')
192.168.0.105
16040 -- free heap
40 96 209 111 6 0 0 149
40 199 186 111 6 0 0 45
1=10.84, 12040
2=12.14, 9664
> 3=10.01, 12512 ---- first callback
26;19.2
4=12.7, 8744
25.0625;25.3125
5=12.9, 8112
30.1;1000.42;10731.77
6=13.2, 8592 ---- in this line 13.2 --Busy Lua , 8592 -- free heap
-----------------------------------------------
3=11.49,10752 --second callback -- in this line 11.49 --Busy Lua , 10752 -- free heap
next we get message:
PANIC: unprotected error in call to Lua API (not enough memory)
PANIC: unprotected error in call to Lua API (attempt to call a string value)
Why not have enough memory, if you have 10,752 free heap?
H!€И©!КвDИяш
NodeMCU 0.9.5 build 20150318 powered by Lua 5.1.4
---------------------------------------
Замечу, что на 5 шаге мы имели меньше свободной памяти но паники не было.