M5StickC and ULP wakeup



  • When I try to program the ULP and enable esp_sleep_enable_ulp_wakeup();

    I use the following code with esp_sleep_enable[...] before M5.Deepsleep()

      esp_sleep_enable_ext0_wakeup(GPIO_NUM_37, LOW); // button A 1 = High, 0 = Low
    #define BUTTON_PIN_BITMASK 0x8000000000 // 2^39 in hex (button B)
      esp_sleep_enable_ext1_wakeup(BUTTON_PIN_BITMASK, ESP_EXT1_WAKEUP_ALL_LOW);
      esp_sleep_enable_timer_wakeup(takeSampleTime);
      esp_sleep_enable_ulp_wakeup(); // conflict with ext0/ext1/touch/ulp?
    

    If I use ButtonA&ButtonB wake EXT0 and EXT1 on the log the ESP tells me something like:

    E (16967) sleep: Conflicting wake-up trigger: ext0
    

    And If I disable the buttons wakeup, also tells me about GPIO TOUCH conflict :(

    What are the steps to get button wakeup, timer wakeup and ULP wakeup at same time?



  • Hello @sharek

    you don't need both ext0 and ext1 for the two buttons. You should be able to cover both buttons with ext1 by adding both to the bitmask:

    #define BUTTON_PIN_BITMASK ((1UL << 37) | (1UL << 39))
    

    Thanks
    Felix