Esp32 пробуждение если на одной или двух ногах появится 0

Тема в разделе "ESP8266, ESP32", создана пользователем DayGaik, 5 май 2021.

  1. DayGaik

    DayGaik Гик

    Добрый день.
    Продолжаю эксперименты с питанием.

    У меня есть две ноги подтянутые к 3.3V. Нужно, чтобы МК проснулся если на одной из них (или обеих) появится 0.

    Читаем доки:
    https://docs.espressif.com/projects.../system/sleep_modes.html#entering-light-sleep
    esp_sleep_enable_ext0_wakeup - отлично подходит, но работает только с одной ногой. Если вызвать два раза, то работать будет только второй.

    esp_sleep_enable_ext1_wakeup - подходит для множества ног, но её режимы:
    • ESP_EXT1_WAKEUP_ALL_LOW: wake up when all selected GPIOs are low
    • ESP_EXT1_WAKEUP_ANY_HIGH: wake up when any of the selected GPIOs is high
    А мне нужно ANY_LOW.

    Есть ещё esp_sleep_enable_ulp_wakeup, но сходу понять пример не получилось. https://github.com/espressif/esp-idf/blob/master/examples/system/ulp/main/ulp_example_main.c

    А пока погружаюсь, вопрос, как бы вы решили эту задачу? Может у вас есть пример с пояснениями?
     
  2. DayGaik

    DayGaik Гик

  3. DayGaik

    DayGaik Гик

    Моя задача легко решилась так:

    Код (C++):
        esp_sleep_enable_ext0_wakeup(GPIO_NUM_34, LOW);
        esp_sleep_enable_ext1_wakeup(GPIO_SEL_35, ESP_EXT1_WAKEUP_ALL_LOW);