From 3912d9d82712f0b5c711a73784a2a5bf952f7230 Mon Sep 17 00:00:00 2001 From: Claudio Indellicati <c.indellicati@arduino.cc> Date: Fri, 27 Mar 2015 20:57:45 +0100 Subject: [PATCH] Loaded ADC calibration values at startup. --- cores/arduino/startup.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/cores/arduino/startup.c b/cores/arduino/startup.c index 01171446..ecec7cbd 100644 --- a/cores/arduino/startup.c +++ b/cores/arduino/startup.c @@ -343,6 +343,21 @@ void SystemInit( void ) PM->APBCSEL.reg = PM_APBCSEL_APBCDIV_DIV1_Val ; SystemCoreClock=VARIANT_MCK ; + + /* ---------------------------------------------------------------------------------------------- + * 8) Load ADC factory calibration values + */ + + // ADC Bias Calibration + uint32_t bias = (*((uint32_t *) ADC_FUSES_BIASCAL_ADDR) & ADC_FUSES_BIASCAL_Msk) >> ADC_FUSES_BIASCAL_Pos; + + // ADC Linearity bits 4:0 + uint32_t linearity = (*((uint32_t *) ADC_FUSES_LINEARITY_0_ADDR) & ADC_FUSES_LINEARITY_0_Msk) >> ADC_FUSES_LINEARITY_0_Pos; + + // ADC Linearity bits 7:5 + linearity |= ((*((uint32_t *) ADC_FUSES_LINEARITY_1_ADDR) & ADC_FUSES_LINEARITY_1_Msk) >> ADC_FUSES_LINEARITY_1_Pos) << 5; + + ADC->CALIB.reg = ADC_CALIB_BIAS_CAL(bias) | ADC_CALIB_LINEARITY_CAL(linearity); } /** -- GitLab