File tree Expand file tree Collapse file tree 1 file changed +8
-3
lines changed
ports/atmel-samd/common-hal/microcontroller Expand file tree Collapse file tree 1 file changed +8
-3
lines changed Original file line number Diff line number Diff line change 61
61
* POSSIBILITY OF SUCH DAMAGE.
62
62
*/
63
63
64
+ #include "py/mphal.h"
64
65
#include "common-hal/microcontroller/Processor.h"
65
66
66
67
#include "samd/adc.h"
@@ -286,11 +287,15 @@ float common_hal_mcu_processor_get_voltage(void) {
286
287
287
288
#ifdef SAMD51
288
289
hri_supc_set_VREF_SEL_bf (SUPC , SUPC_VREF_SEL_1V0_Val );
289
- // ONDEMAND must be clear, and VREFOE must be set, or else the ADC conversion will not complete.
290
- // See https://community.atmel.com/forum/samd51-using-intref-adc-voltage-reference
291
- hri_supc_clear_VREF_ONDEMAND_bit (SUPC );
292
290
hri_supc_set_VREF_VREFOE_bit (SUPC );
291
+
293
292
adc_sync_set_reference (& adc , ADC_REFCTRL_REFSEL_INTREF_Val );
293
+
294
+ // On some processor samples, the ADC will hang trying to read the voltage. A simple
295
+ // delay after setting the SUPC bits seems to fix things. This appears to be due to VREFOE
296
+ // startup time. There is no synchronization bit to check.
297
+ // See https://community.atmel.com/forum/samd51-using-intref-adc-voltage-reference
298
+ mp_hal_delay_ms (1 );
294
299
#endif
295
300
296
301
adc_sync_set_resolution (& adc , ADC_CTRLB_RESSEL_12BIT_Val );
You can’t perform that action at this time.
0 commit comments