2025-05-12 2:11 PM
Hi! I have the following code for an ADC1 driver running in ADC1_IN1 (PC0) in an L476RGT6 and it runs fine. However, I am testing it by reading a potentiometer and the value read is constant. I've already double-checked everything, including channel selection in ADCx_SQR1, but I am still not sure why it is not reading correctly when I change the potentiometer resistance.
You can assume systick_us_delay() works fine.
Solved! Go to Solution.
2025-05-14 10:44 AM
It works by setting the OVRMOD bit in ADC1->CFGR! It is a problem related to the ADC_DR register overflowing, so will try to use DMA for buffering. Thank you very much! Your reply actually made me see it from a different perspective.
2025-05-13 3:32 AM
> the value read is constant
Does it change when you move the pot and restart the program?
Read out and check/post the ADC registers content.
JW
2025-05-14 10:29 AM
Yes! Just noticed that. I was kind of frustrated last time I tried debugging it so didn't notice before. I attached the screenshots of the results when moving the pot to one end and then to the other (different runs). The value doesn't change for one run, even if I start moving the pot.
2025-05-14 10:44 AM
It works by setting the OVRMOD bit in ADC1->CFGR! It is a problem related to the ADC_DR register overflowing, so will try to use DMA for buffering. Thank you very much! Your reply actually made me see it from a different perspective.