/**@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 }
/** * @brief ADC initialization. */ static void adc_config(void) { const nrf_adc_config_t nrf_adc_config = NRF_ADC_CONFIG_DEFAULT; // Initialize and configure ADC nrf_adc_configure( (nrf_adc_config_t *)&nrf_adc_config); #if defined(BOARD_BVMCN5102) nrf_adc_input_select(NRF_ADC_CONFIG_INPUT_3); #elif defined(BOARD_BLENANO) nrf_adc_input_select(NRF_ADC_CONFIG_INPUT_5); #else # error unknown board #endif nrf_adc_int_enable(ADC_INTENSET_END_Enabled << ADC_INTENSET_END_Pos); NVIC_SetPriority(ADC_IRQn, NRF_APP_PRIORITY_LOW); NVIC_EnableIRQ(ADC_IRQn); }
static void adc_config(void) { const nrf_adc_config_t nrf_adc_config = NRF_ADC_CONFIG_DEFAULT; nrf_adc_configure((nrf_adc_config_t *)&nrf_adc_config); nrf_adc_input_select(NRF_ADC_CONFIG_INPUT_4); nrf_adc_int_enable(ADC_INTENSET_END_Enabled << ADC_INTENSET_END_Pos); NVIC_SetPriority(ADC_IRQn, NRF_APP_PRIORITY_HIGH); NVIC_EnableIRQ(ADC_IRQn); }
/** * @brief ADC initialization. */ void adc_config(void) { const nrf_adc_config_t nrf_adc_config = NRF_ADC_CONFIG_DEFAULT; // Initialize and configure ADC nrf_adc_configure( (nrf_adc_config_t *)&nrf_adc_config); nrf_adc_input_select(NRF_ADC_CONFIG_INPUT_7); nrf_adc_int_enable(ADC_INTENSET_END_Enabled << ADC_INTENSET_END_Pos); NVIC_SetPriority(ADC_IRQn, NRF_APP_PRIORITY_HIGH); NVIC_EnableIRQ(ADC_IRQn); //printf("\n\rADC Configured Corectly\r\n"); }
/** * @brief Blocking function for executing single ADC conversion. * * This function selects desired input, starts single conversion, * waits for its finish and returns result. * ADC is left in STOP state, given input is selected. * This function does not check if ADC is initialized and powered. * * @param[in] input is requested input to be selected * * @return conversion result */ int32_t nrf_adc_convert_single(nrf_adc_config_input_t input) { int32_t val; nrf_adc_input_select(input); nrf_adc_start(); while (!nrf_adc_conversion_finished()) { } nrf_adc_conversion_event_clean(); val = nrf_adc_result_get(); nrf_adc_stop(); return val; }
/** * @brief Function for configuring ADC. * * This function power on ADC and configure it. ADC is in DISABLE state after configuration, * so it should be enabled before using it. * * @param[in] config is requested configuration */ void nrf_adc_configure(nrf_adc_config_t * config) { uint32_t config_reg = 0; config_reg |= ((uint32_t)config->resolution << ADC_CONFIG_RES_Pos) & ADC_CONFIG_RES_Msk; config_reg |= ((uint32_t)config->scaling << ADC_CONFIG_INPSEL_Pos) & ADC_CONFIG_INPSEL_Msk; config_reg |= ((uint32_t)config->reference << ADC_CONFIG_REFSEL_Pos) & ADC_CONFIG_REFSEL_Msk; if (config->reference & ADC_CONFIG_EXTREFSEL_Msk) { config_reg |= config->reference & ADC_CONFIG_EXTREFSEL_Msk; } /* select input */ nrf_adc_input_select(NRF_ADC_CONFIG_INPUT_DISABLED); /* set new configuration keeping selected input */ NRF_ADC->CONFIG = config_reg | (NRF_ADC->CONFIG & ADC_CONFIG_PSEL_Msk); }