19 #include "simple_adc.h" 20 #include "common_util.h" 21 #include "hal_pin_analog_input.h" 23 int16_t saadc_result[1];
27 NVIC_ClearPendingIRQ(SAADC_IRQn);
28 NVIC_DisableIRQ(SAADC_IRQn);
31 NRF_SAADC->INTENCLR = 0xFFFFFFFF;
33 NRF_SAADC->TASKS_STOP = 1;
35 NRF_SAADC->EVENTS_END = 0;
36 NRF_SAADC->EVENTS_STARTED = 0;
38 NRF_SAADC->RESOLUTION = SAADC_RESOLUTION_VAL_12bit << SAADC_RESOLUTION_VAL_Pos;
39 NRF_SAADC->RESULT.PTR = (uint32_t) saadc_result;
40 NRF_SAADC->RESULT.MAXCNT = 1;
46 & SAADC_CH_CONFIG_RESP_Msk)
47 | ((SAADC_CH_CONFIG_RESN_Bypass << SAADC_CH_CONFIG_RESN_Pos) & SAADC_CH_CONFIG_RESN_Msk)
48 | ((gain << SAADC_CH_CONFIG_GAIN_Pos) & SAADC_CH_CONFIG_GAIN_Msk)
49 | ((SAADC_CH_CONFIG_REFSEL_Internal << SAADC_CH_CONFIG_REFSEL_Pos)
50 & SAADC_CH_CONFIG_REFSEL_Msk)
51 | ((SAADC_CH_CONFIG_TACQ_10us << SAADC_CH_CONFIG_TACQ_Pos) & SAADC_CH_CONFIG_TACQ_Msk)
52 | ((SAADC_CH_CONFIG_MODE_SE << SAADC_CH_CONFIG_MODE_Pos) & SAADC_CH_CONFIG_MODE_Msk)
53 | ((SAADC_CH_CONFIG_BURST_Disabled << SAADC_CH_CONFIG_BURST_Pos)
54 & SAADC_CH_CONFIG_BURST_Msk);
56 NRF_SAADC->ENABLE = SAADC_ENABLE_ENABLE_Enabled << SAADC_ENABLE_ENABLE_Pos;
58 NRF_SAADC->TASKS_START = 1;
59 while(NRF_SAADC->EVENTS_STARTED == 0);
61 NRF_SAADC->TASKS_SAMPLE = 1;
62 while(NRF_SAADC->EVENTS_END == 0);
64 NRF_SAADC->TASKS_STOP = 1;
66 NRF_SAADC->EVENTS_END = 0;
67 NRF_SAADC->EVENTS_STARTED = 0;
74 if(saadc_result[0] < 0)
78 NRF_SAADC->ENABLE = (SAADC_ENABLE_ENABLE_Disabled << SAADC_ENABLE_ENABLE_Pos);
81 return (uint32_t) saadc_result[0];
uint32_t simple_adc_get_value(simple_adc_gain_t gain, simple_adc_input_t pin)
This function initializes the SAADC peripheral, gets an ADC value and then deinitializes The function...
simple_adc_gain_t
Gain factor of the ADC input source.
simple_adc_input_t
Input selection for the analog-to-digital converter.
#define SIMPLE_ADC_CHANNEL_USED