-
Notifications
You must be signed in to change notification settings - Fork 7.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Reading ADC data during deep-sleep from ULP-RISCV (IDFGH-9700) #11040
Comments
Hi, There is an in-progress issue internally for a known problem with S2 ULP ADC in deep sleep related to some power configurations (it gives the wrong results when reading). I'll remind them that we still have users asking for support with this... |
@ESP-Marius Thanks for your response |
@ESP-Marius I tried the code with ESP32S3 chip and now it's working fine and it's more stable than S2 board. |
@Walid-Adel Yes, S3 supports using the ADC from the ULP RISCV. Sorry, currently I dont have any suggestion for using it with the S2, but I'll keep pushing for a fix for it. |
@ESP-Marius I reckon this is raw voltage. Is there any way to tap into the calibration curves when the main cores are sleeping or any other way to take the calibration into account? |
Currently there is no convenient way of accessing these calibration curves (they are stored in internal RAM, which gets powered down). But I think it should be possible to do some updates to the adc calibration API to allow it be allocated to RTC RAM, as well as make the convert API callable from the ULP. I'll make an internal ticket for this. |
Answers checklist.
General issue report
@sudeep-mohanty
I'm using ESP32-S2
I'm trying to read ADC data from ULP-RISCV :
-----> in this method i was able to read adc data from ulp but in active state (not in deep sleep) and it was reading correct values. but when going to deep sleep it always read 8191.
by the way, if i want to read adc data during active state (not deep sleep) then i just set the variable
once
to 1 and ulp will execute its if block. And also if i want to execute the ulp during deep-sleep then i just set the variableis_sleep
to 1 and ulp will execute its if block.In short, if i want to read adc data during active state then:
ulp_once = 1
And if i want to read adc data during deep-sleep then:
ulp_is_sleep = 1
and then call enter the deep-sleep mode===> but again it was reading fine during active state (when executing the if block of variable
once
). But on the other hand, it always reading 8191 during deep-sleep (when executing the if block of variableis_sleep
)so, how can i solve it so that it reads correct adc data during deep sleep ?
The text was updated successfully, but these errors were encountered: