У меня есть датчик ds18b20, подключенный к контакту D3, и датчик Холла на контакте D1. Я использую tmr.trig на выводе D1 для подсчета событий с падающим фронтом. Когда я звоню ds18b20:read_temp(callback, pin, ds18b20.C)
, все работает как положено.
Странная вещь начинает происходить, когда начинают поступать прерывания от датчика Холла. Достаточно просто прерывания в секунду. read_temp
зависает и не перезванивает, и я не получаю показаний. Через некоторое время много вызовов read_temp накапливаются, и esp8266 сбрасывается.
Я проследил проблему до строки 205 ds18b20.lua
:
if lcb then node_task_post(node_task_LOW_PRIORITY, lcb) end
Если я заменил node_task_LOW_PRIORITY
с node.task.HIGH_PRIORITY
проблема исправлена. Похоже, что планировщик истощает задачу с низким приоритетом.
Мне интересно, что я делаю что-то не так? Или это ошибка? Прерывания мешают работе node.task?