Установить прерывания, которые не являются GPIO или таймером в ESP32
Я делаю проект на ESP32. Он считывает определенные значения датчиков, сохраняет их в памяти RTC и отправляет по MQTT через определенное время. Я хочу, чтобы он передавал данные немедленно, если есть разница, скажем, в 10 единиц, через прерывание. Я полагаю, что это невозможно с помощью прерываний GPIO и, очевидно, не с помощью таймера, так как я хочу, чтобы это происходило только в том случае, если условие истинно, а не периодически. Я поискал в Интернете, но не нашел ничего, кроме GPIO и таймерных прерываний.
Я работаю над Arduino IDE.
Возможно ли то, чего я хочу, и если да, то как? Пожалуйста, также приведите определенный пример на языке Arduino, который я должен изучить. Кроме того, если это возможно с помощью прерываний GPIO, пожалуйста, скажите мне, как это сделать.
Заранее благодарю вас
@P_K, 👍0
Обсуждение1 ответ
Лучший ответ:
Нет такой вещи, как "прерывание при изменении значения", поскольку это то, что существует только в программном обеспечении, а прерывания-это вещи, запускаемые аппаратным обеспечением.
Все, что вы можете сделать, это проверить значение в цикле()
и отправить данные, если оно выше вашего порогового значения. Если вы хотите пробудиться ото сна, то вам придется делать это периодически другими способами.
можно ли использовать сопроцессор 32 с низким энергопотреблением и процедуру сборки, чтобы избежать пробуждения, просто чтобы вычислить разницу?, @dandavis
- Постоянная частота дискретизации АЦП на ESP8266 или ESP32
- Как избежать электромагнитных помех на входе ESP32
- Присоедините функцию Arduino ISR к члену класса
- Внешние прерывания Esp32 иногда отсутствуют
- Как реализовать детектор brown out arduino ESP32?
- Чтение внутренних критических разделов из ISR
- Анимация светодиодной ленты с ESP32 не работает при использовании WiFi
- ESP32 больше не может вводить прерывание после появления прерывания во время функции delayMicrosecond
отправьте его в цикле(), @Juraj