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.