/**@brief Function for configuring ADC to do battery level conversion. */ static void adc_configure(void) { #ifdef NRF51 nrf_adc_config_t adc_config = NRF_ADC_CONFIG_DEFAULT; adc_config.scaling = NRF_ADC_CONFIG_SCALING_SUPPLY_ONE_THIRD; nrf_adc_configure(&adc_config); nrf_adc_int_enable(ADC_INTENSET_END_Msk); NVIC_EnableIRQ(ADC_IRQn); NVIC_SetPriority(ADC_IRQn, 3); nrf_adc_input_select(NRF_ADC_CONFIG_INPUT_DISABLED); #else // NRF52 ret_code_t err_code = nrf_drv_saadc_init(NULL, saadc_event_handler); APP_ERROR_CHECK(err_code); nrf_saadc_channel_config_t config = NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(NRF_SAADC_INPUT_VDD); err_code = nrf_drv_saadc_channel_init(0,&config); APP_ERROR_CHECK(err_code); err_code = nrf_drv_saadc_buffer_convert(&adc_buf[0],1); APP_ERROR_CHECK(err_code); err_code = nrf_drv_saadc_buffer_convert(&adc_buf[1],1); APP_ERROR_CHECK(err_code); #endif //NRF51 }
void adc_init(void) { nrf_saadc_channel_config_t adc_channel_config = NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(MBED_SHIELD_A0_POT_1); nrf_drv_saadc_config_t adc_config = NRF_DRV_SAADC_DEFAULT_CONFIG; adc_config.resolution = NRF_SAADC_RESOLUTION_8BIT; nrf_drv_saadc_channel_init(0, &adc_channel_config); nrf_drv_saadc_init(&adc_config, &adc_event); }
void saadc_init(void) { ret_code_t err_code; nrf_saadc_channel_config_t channel_config = NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(NRF_SAADC_INPUT_AIN1); err_code = nrf_drv_saadc_init(NULL, saadc_callback); APP_ERROR_CHECK(err_code); err_code = nrf_drv_saadc_channel_init(0, &channel_config); APP_ERROR_CHECK(err_code); }
void analogin_init(analogin_t *obj, PinName pin) { ret_code_t ret_code; NVIC_SetVector(SAADC_IRQn, (uint32_t)SAADC_IRQHandler); ret_code = nrf_drv_saadc_init(&saadc_config, analog_in_event_handler); MBED_ASSERT(((ret_code == NRF_SUCCESS) || (ret_code == NRF_ERROR_INVALID_STATE))); //NRF_ERROR_INVALID_STATE expected for multiple channels used. uint8_t saadcIn = nrf_drv_saadc_gpio_to_ain(pin); MBED_ASSERT(saadcIn != NRF_SAADC_INPUT_DISABLED); obj->adc = ADC0_0; // only one instance of ADC in nRF52 SoC obj->adc_pin = saadcIn - 1; nrf_saadc_channel_config_t channel_config = NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(saadcIn); //Single ended, negative input to ADC shorted to GND. ret_code = nrf_drv_saadc_channel_init(obj->adc_pin, &channel_config); MBED_ASSERT(ret_code == NRF_SUCCESS); }
/* ADC channel used to call conversion. */ static nrf_drv_adc_channel_t adc_channel = NRF_DRV_ADC_DEFAULT_CHANNEL(0); #elif defined(SAADC_PRESENT) #include "nrf_drv_saadc.h" /** * @defgroup saadc_defines SAADC defines to count input voltage. * @{ */ #define SAADC_RES_10BIT 1024 #define SAADC_INPUT_PRESCALER 3 #define SAADC_REF_VBG_VOLTAGE 0.6 /* @} */ /* SAADC channel used to call conversion. */ static nrf_saadc_channel_config_t saadc_channel = NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(NRF_SAADC_INPUT_AIN0); #endif //ADC_PRESENT #endif //USE_COMP #if USE_COMP /* Number of channels required by PPI. */ #define PPI_REQUIRED_CHANNELS 3 /* Array of PPI channels. */ static nrf_ppi_channel_t m_ppi_channels[PPI_REQUIRED_CHANNELS]; /** * @defgroup timer_instances Timer instances. * @{ */