Can anyone give me a tip on porting the code below, which works great in sdk12, to sdk14? I'm using the nrf52832 and the ble_app_hids_keyboard example and need to get a real battery level measurement. The code below was originally found here.
#define VBAT_MAX_IN_MV 3000 uint8_t battery_level_get(void) { // Configure ADC NRF_ADC->CONFIG = (ADC_CONFIG_RES_8bit << ADC_CONFIG_RES_Pos) | (ADC_CONFIG_INPSEL_SupplyOneThirdPrescaling << ADC_CONFIG_INPSEL_Pos) | (ADC_CONFIG_REFSEL_VBG << ADC_CONFIG_REFSEL_Pos) | (ADC_CONFIG_PSEL_Disabled << ADC_CONFIG_PSEL_Pos) | (ADC_CONFIG_EXTREFSEL_None << ADC_CONFIG_EXTREFSEL_Pos); NRF_ADC->EVENTS_END = 0; NRF_ADC->ENABLE = ADC_ENABLE_ENABLE_Enabled; NRF_ADC->EVENTS_END = 0; // Stop any running conversions. NRF_ADC->TASKS_START = 1; while (!NRF_ADC->EVENTS_END) { } uint16_t vbg_in_mv = 1200; uint8_t adc_max = 255; uint16_t vbat_current_in_mv = (NRF_ADC->RESULT * 3 * vbg_in_mv) / adc_max; NRF_ADC->EVENTS_END = 0; NRF_ADC->TASKS_STOP = 1; return (uint8_t) ((vbat_current_in_mv * 100) / VBAT_MAX_IN_MV); }