Description
Board
ESP32 generic dev module
Device Description
ESP32 generic dev module. Nothing additional connected.
Hardware Configuration
Nothing additional connected.
Version
latest stable Release (if not listed below)
IDE Name
Arduino IDE 2.3.6 and Platform.IO on VSC
Operating System
Windows 10
Flash frequency
40MHz
PSRAM enabled
no
Upload speed
921600
Description
Since Arduino-ESP32 2.0.14, using an ADC read operation in ESP32 ULP FSM co processor will cause the ULP to get "stuck".
I am including minimal code to reproduce.
Expected: wake due to an ULP wake after 5 seconds.
Actual: wakes due to (a fallback) timer wake after 20 seconds.
If using this code with ESP-IDF directly then it works as expected.
If using this code in a version before 2.0.14, then it works as expected.
If disabling the ADC read operation in the ULP code, then it works as expected.
More details at https://github.com/ayavilevich/ulp_adc_issue_ard_min/blob/main/README.md
Sketch
https://github.com/ayavilevich/ulp_adc_issue_ard_min/blob/main/src/main.cpp Above can can be used with Arduino IDE, PIO or ESP-IDF.
Debug Message
Output, Arduino ESP32 3.2.0 ets Jul 29 2019 12:21:46 rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0030,len:4888 load:0x40078000,len:16516 load:0x40080400,len:4 load:0x40080404,len:3476 entry 0x400805b4 ESP-IDF: 5.4.1, ESP Arduino: 3.2.0 Start Chip revision: 301 Not ULP/timer wakeup TEST: sleeping for 20 sec Entering deep sleep ets Jul 29 2019 12:21:46 rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0030,len:4888 load:0x40078000,len:16516 load:0x40080400,len:4 load:0x40080404,len:3476 entry 0x400805b4 ESP-IDF: 5.4.1, ESP Arduino: 3.2.0 Start Chip revision: 301 Timer wakeup Deep sleep wakeup ULP do adc 1 ULP start counter: 2 ULP wake counter: 2 TEST: sleeping for 20 sec Entering deep sleep Output, Arduino ESP32 3.2.0 with ADC read disabled ets Jul 29 2019 12:21:46 rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0030,len:4888 load:0x40078000,len:16516 load:0x40080400,len:4 load:0x40080404,len:3476 entry 0x400805b4 ESP-IDF: 5.4.1, ESP Arduino: 3.2.0 Start Chip revision: 301 Not ULP/timer wakeup TEST: sleeping for 20 sec Entering deep sleep ets Jul 29 2019 12:21:46 rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:1 load:0x3fff0030,len:4888 load:0x40078000,len:16516 load:0x40080400,len:4 load:0x40080404,len:3476 entry 0x400805b4 ESP-IDF: 5.4.1, ESP Arduino: 3.2.0 Start Chip revision: 301 ULP wakeup Deep sleep wakeup ULP do adc 0 ULP start counter: 51 ULP wake counter: 50 TEST: sleeping for 20 sec Entering deep sleep Output, ESP-IDF 4.4.6 ets Jul 29 2019 12:21:46 rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0030,len:5484 ho 0 tail 12 room 4 load:0x40078000,len:14824 ho 0 tail 12 room 4 load:0x40080400,len:3460 0x40080400: _init at ??:? entry 0x40080638 ESP-IDF: 4.4.6 Start Chip revision: 3, full: 301 Not ULP/timer wakeup TEST: sleeping for 20 sec Entering deep sleep ets Jul 29 2019 12:21:46 rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0xee clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0030,len:5484 ho 0 tail 12 room 4 load:0x40078000,len:14824 ho 0 tail 12 room 4 load:0x40080400,len:3460 0x40080400: _init at ??:? entry 0x40080638 ESP-IDF: 4.4.6 Start Chip revision: 3, full: 301 ULP wakeup Deep sleep wakeup ULP do adc 1 ULP start counter: 51 ULP wake counter: 50 TEST: sleeping for 20 sec Entering deep sleep
Other Steps to Reproduce
also tried on another ESP32 board. it made no difference.
I have checked existing issues, online documentation and the Troubleshooting Guide
- I confirm I have checked existing issues, online documentation and Troubleshooting guide.