]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
arm_atsam ADC0 factory calibration correction
authorpatrickmt <40182064+patrickmt@users.noreply.github.com>
Mon, 28 Jan 2019 18:07:22 +0000 (13:07 -0500)
committerDrashna Jaelre <drashna@live.com>
Tue, 29 Jan 2019 01:16:33 +0000 (17:16 -0800)
Factory calibration data was not being loaded properly for ADC0, which affects the accuracy of 5V readings.

tmk_core/protocol/arm_atsam/adc.c

index ab77f92402ebd7de40b18778acad1546ee298c72..cb5c349b7305b65e539b5b6e32147e0e21d99a67 100644 (file)
@@ -74,9 +74,9 @@ void ADC0_init(void)
     while (ADC0->SYNCBUSY.bit.SAMPCTRL) { DBGC(DC_ADC0_SAMPCTRL_SYNCING_1); }
 
     //Load factory calibration data
-    ADC0->CALIB.bit.BIASCOMP = (ADC0_FUSES_BIASCOMP_ADDR >> ADC0_FUSES_BIASCOMP_Pos) & ADC0_FUSES_BIASCOMP_Msk;
-    ADC0->CALIB.bit.BIASR2R = (ADC0_FUSES_BIASR2R_ADDR >> ADC0_FUSES_BIASR2R_Pos) & ADC0_FUSES_BIASR2R_Msk;
-    ADC0->CALIB.bit.BIASREFBUF = (ADC0_FUSES_BIASREFBUF_ADDR >> ADC0_FUSES_BIASREFBUF_Pos) & ADC0_FUSES_BIASREFBUF_Msk;
+    ADC0->CALIB.bit.BIASCOMP = ((*(uint32_t *)ADC0_FUSES_BIASCOMP_ADDR) & ADC0_FUSES_BIASCOMP_Msk) >> ADC0_FUSES_BIASCOMP_Pos;
+    ADC0->CALIB.bit.BIASR2R = ((*(uint32_t *)ADC0_FUSES_BIASR2R_ADDR) & ADC0_FUSES_BIASR2R_Msk) >> ADC0_FUSES_BIASR2R_Pos;
+    ADC0->CALIB.bit.BIASREFBUF = ((*(uint32_t *)ADC0_FUSES_BIASREFBUF_ADDR) & ADC0_FUSES_BIASREFBUF_Msk) >> ADC0_FUSES_BIASREFBUF_Pos;
 
     //Enable
     ADC0->CTRLA.bit.ENABLE = 1;