Расходомер с использованием Wemos Mini - ISR не в IRAM!

isr

Я пытаюсь использовать расходомер с Wemos Mini. Большинство учебников используют платы Arduino ( код и HW работают НОРМАЛЬНО ), но так как я хочу, чтобы это устройство отправляло оповещения через Интернет при обнаружении аномального использования/утечки, я хочу использовать Wemos Mini, используя How to Use Water Flow Sensor - Arduino Tutorial. Поверх if добавлю свой код для уведомлений с помощью Telegram.

НО - после загрузки исходного кода (перед добавлением изменений Telegram) во время выполнения кода возникает ошибка : ISR не в IRAM!

Я попытался сменить пин -но все равно получил эту ошибку,

, 👍0

Обсуждение

Вы видели [этот выпуск на github](https://github.com/esp8266/Arduino/issues/6127)? Они утверждают, что вы можете избежать этой ошибки, добавив ICACHE_RAM_ATTR к функциям ISR. Может быть, ты попробуешь это., @chrisl

это ошибка в исходном коде и новых версиях ядра проверьте, находится ли обработчик ISR в IRAM, потому что без ICACHE_RAM_ATTR обработчик иногда работал, а иногда нет, @Juraj


2 ответа


1

Это происходит из-за конфликтов между последовательными и внешними прерываниями Поставьте ICACHE_RAM_ATTR перед вашей функцией прерывания, например, ICACHE_RAM_ATTR void ISR()

,

-1

Для WEMOS или NODEMCU вы должны, например, предопределить процедуру прерывания

аннулировать ICACHE_RAM_ATTR ServiceLimitSwitchUpperShield_12_D6();

//это решает проблему для ATTACHINTERRUPT - вы должны предварительно определить этот метод перед использованием установки (очень важно) Тогда это сообщение об ошибке ISR not IRAM не будет отображаться.

В настройке вы можете, например, определить attachInterrupt(digitalPinToInterrupt(12), ServiceLimitSwitchUpperShield_12_D6 , FALLING );

Искать страницу https://community.blynk.cc/t/error-isr-not- in-iram/37426/23

,

это неправда, @Juraj