Расходомер с использованием Wemos Mini - ISR не в IRAM!
Я пытаюсь использовать расходомер с Wemos Mini. Большинство учебников используют платы Arduino ( код и HW работают НОРМАЛЬНО ), но так как я хочу, чтобы это устройство отправляло оповещения через Интернет при обнаружении аномального использования/утечки, я хочу использовать Wemos Mini, используя How to Use Water Flow Sensor - Arduino Tutorial. Поверх if добавлю свой код для уведомлений с помощью Telegram.
НО - после загрузки исходного кода (перед добавлением изменений Telegram) во время выполнения кода возникает ошибка : ISR не в IRAM!
Я попытался сменить пин -но все равно получил эту ошибку,
@Guy . D, 👍0
Обсуждение2 ответа
Это происходит из-за конфликтов между последовательными и внешними прерываниями
Поставьте ICACHE_RAM_ATTR перед вашей функцией прерывания, например, ICACHE_RAM_ATTR void ISR()
Для 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
- Почему необходимо использовать ключевое слово volatile для глобальных переменных при обработке прерываний в ардуино?
- Серийное прерывание
- Прерывание ардуино при смене контакта
- Влияет ли `millis()` на длинные ISR?
- Как прервать функцию цикла и перезапустить ее?
- Задержка Arduino внутри прерывания
- Аппаратное прерывание срабатывает случайным образом
- Какой правильный способ запроса устройства I2C из процедуры обслуживания прерывания?
Вы видели [этот выпуск на github](https://github.com/esp8266/Arduino/issues/6127)? Они утверждают, что вы можете избежать этой ошибки, добавив
ICACHE_RAM_ATTR
к функциям ISR. Может быть, ты попробуешь это., @chrislэто ошибка в исходном коде и новых версиях ядра проверьте, находится ли обработчик ISR в IRAM, потому что без ICACHE_RAM_ATTR обработчик иногда работал, а иногда нет, @Juraj