@tayanov

Как обработать событие изменения на GPIO esp8266?

Имеется esp2688. Вроде простая задача, без использования ардуины. Только esp 2688.
Нужно послать запрос А при получении импульса на gpio0. т.е. кратковременное изменение уровня на gpio0.
и запрос B при получении импульса на gpio1 на gpio1.
И далее ожидать след. любого из двух импульсов.
Собственно на сколько я понял т.н. прерываний нет в esp 2688.
может какой то хитрый ход поможет?
P. S. импульс с датчиков воды.
  • Вопрос задан
  • 3371 просмотр
Решения вопроса 1
@tayanov Автор вопроса
Используя nodemcu:
Фактически это обработка нажатия кнопки, уже с защитой от дребезга.

local pin = 4    --> GPIO2

function debounce (func)
    local last = 0
    local delay = 200000

    return function (...)
        local now = tmr.now()
        if now - last < delay then return end

        last = now
        return func(...)
    end
end

function onChange ()
    print('The pin value has changed to '..gpio.read(pin))
end


Решение найдено.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Собственно на сколько я понял т.н. прерываний нет в esp 2688.

Интересно, как вы это поняли?
Раздел 7.1 документа 2C-ESP8266__SDK__Programming Guide__EN_v1.2.0.pdf описывает функции для работы с GPIO, среди которых есть ETS_GPIO_INTR_ATTACH, ETS_GPIO_INTR_ENABLE и gpio_pin_intr_state_set.
Не забудьте также перед использованием GPIO настроить PINMUX.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы