(Untitled)

Jan 23, 2019 18:34

Народ, кто разбирается в библиотеках ESP8266 Arduino core? У меня вопрос есть ( Read more... )

arduino, Программизмы, esp8266

Leave a comment

Comments 8

moonkan January 23 2019, 21:28:25 UTC
а что грит гугл про WDT reset

Reply

aterentiev January 23 2019, 22:04:06 UTC
В основном говорит про проблемы с ним. И когда народ yield-ит длинеые циклы - проблема проходит.

Reply


ex0_planet January 24 2019, 10:21:09 UTC
Кооперативная многозадачность такая кооперативная!

Я подозреваю это связано чисто с тем, что норот использует эту функцию чисто в виде:
while ( ! wifi->available() ) delay(1); // ждем данных
wifi->read();

В более нормальных системах этой проблемы просто не возникает, потому что там и select() и read() являются сисколлами, yield'ящими за тебя.

Reply

aterentiev January 24 2019, 13:54:32 UTC
Похоже, ты прав. И хорошо, если используется while ( ! wifi->available() ) delay(1);, ведь delay() делает внутри себя yield().

Намного хуже, если кто-то сделает while (! wifi->available() ) ; // как бы do nothing, а это гарантированно вгонит систему в вотчдог. Поэтому сделать вызовы available() тоже "yield'ящими за тебя" оказывается меньшим из зол.

Reply

ex0_planet January 24 2019, 17:55:51 UTC
Когда что-то непонятно - выбирай наиболее циничное объяснение! В 80% случаев будешь прав :-)

PS. А под delay я и имел в виду busy loop. Просто busy loop с yield'ом обычно называется sleep или как-то еще заковыристее.

Reply


elchupanibrei December 12 2019, 17:53:25 UTC
delay() нужен для работы wifi и tcp/ip стека иначе через 3.5сек срабатывает WDT. вот такая у Arduino ESP8266 многозадачность

Reply

aterentiev December 12 2019, 18:44:45 UTC
Ты понимаешь, я думаю, что этому конкретно тут не место. Да, нужен delay() или yield(), но не принудительно там, где его по идее не ожидается.

Reply

elchupanibrei December 12 2019, 19:46:11 UTC
Согласен. Но пейсатели framework-а решили применить костыль delay() и теперь это особенность архитектуры. Но никто не мешает написать лучше.

Reply


Leave a comment

Up