Skip to content

Commit 511573a

Browse files
committed
Add offset calibration
1 parent f1d78e4 commit 511573a

File tree

1 file changed

+6
-26
lines changed

1 file changed

+6
-26
lines changed

cores/nRF5/wiring_analog_nRF52.c

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -286,41 +286,21 @@ uint32_t analogReadVDD( void )
286286

287287
analogCalibrateOffset()
288288
{
289-
const uint32_t calibrate_done = ( (SAADC_EVENTS_CALIBRATEDONE_EVENTS_CALIBRATEDONE_Generated <<
290-
SAADC_EVENTS_CALIBRATEDONE_EVENTS_CALIBRATEDONE_Pos )
291-
&& SAADC_EVENTS_CH_LIMITH_LIMITH_Msk );
292-
293-
const uint32_t calibrate_not_done = ( (SAADC_EVENTS_CALIBRATEDONE_EVENTS_CALIBRATEDONE_NotGenerated <<
294-
SAADC_EVENTS_CALIBRATEDONE_EVENTS_CALIBRATEDONE_Pos )
295-
&& SAADC_EVENTS_CH_LIMITH_LIMITH_Msk );
296-
297-
const uint32_t saadc_enable = ( (SAADC_ENABLE_ENABLE_Enabled << SAADC_ENABLE_ENABLE_Pos)
298-
&& SAADC_ENABLE_ENABLE_Msk );
299-
300-
const uint32_t saadc_disable = ( (SAADC_ENABLE_ENABLE_Disabled << SAADC_ENABLE_ENABLE_Pos)
301-
&& SAADC_ENABLE_ENABLE_Msk );
302-
303-
const uint32_t calibrate_trigger = ( (SAADC_TASKS_CALIBRATEOFFSET_TASKS_CALIBRATEOFFSET_Trigger <<
304-
SAADC_TASKS_CALIBRATEOFFSET_TASKS_CALIBRATEOFFSET_Pos)
305-
&& SAADC_TASKS_CALIBRATEOFFSET_TASKS_CALIBRATEOFFSET_Msk );
306-
307289
// Enable the SAADC
308-
NRF_SAADC->ENABLE = saadc_enable;
290+
NRF_SAADC->ENABLE = 0x01;
309291

310292
// Be sure the done flag is cleared, then trigger offset calibration
311-
NRF_SAADC->EVENTS_CALIBRATEDONE = calibrate_not_done;
312-
NRF_SAADC->TASKS_CALIBRATEOFFSET = calibrate_trigger;
293+
NRF_SAADC->EVENTS_CALIBRATEDONE = 0x00;
294+
NRF_SAADC->TASKS_CALIBRATEOFFSET = 0x01;
313295

314296
// Wait for completion
315-
while (NRF_SAADC->EVENTS_CALIBRATEDONE != calibrate_done);
316-
//bool done = false;
317-
//for (int i = 0; (i < 20) && !(done = (NRF_SAADC->EVENTS_CALIBRATEDONE == calibrate_done)); i++ ) delay(1);
297+
while (!NRF_SAADC->EVENTS_CALIBRATEDONE);
318298

319299
// Clear the done flag (really shouldn't have to do this both times)
320-
NRF_SAADC->EVENTS_CALIBRATEDONE = calibrate_not_done;
300+
NRF_SAADC->EVENTS_CALIBRATEDONE = 0x00;
321301

322302
// Disable the SAADC
323-
NRF_SAADC->ENABLE = saadc_disable;
303+
NRF_SAADC->ENABLE = 0x00;
324304
}
325305

326306
#ifdef __cplusplus

0 commit comments

Comments
 (0)