This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

ADC Pin Calculation

Hi,

I am working on the ADC and trying to sense the battery level to measure it voltage.

And I have configure the ADC with normal conditions as present in example of SDK-10(S110).

I have connected my battery sense line followed by the Voltage dividing rules as mentioned in this page.

I am facing problem while taking reading from the ADC pin, it gives the constant value continuously, however if voltage goes it gives the same value.

I don't that ADC conversion is working or not.

Here I am sharing small portion of code for adc configuration kind reference. If I have gone wrong in something please correct me.

Output of ADC:

173 continuously without any changes(however voltages drops it shows the same).

My code for ADC

volatile int32_t adc_sample = 0;  

void ADC_IRQHandler(void)
{
    nrf_adc_conversion_event_clean();

    adc_sample = nrf_adc_result_get();
}

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_1);   // batt adc_sense pin at ch no. 1
    nrf_adc_int_enable(ADC_INTENSET_END_Enabled << ADC_INTENSET_END_Pos);
    NVIC_SetPriority(ADC_IRQn, NRF_APP_PRIORITY_HIGH);
    NVIC_EnableIRQ(ADC_IRQn);
}


int main(void)
{
    adc_config();                //Initialize ADC
	nrf_adc_start();
	nrf_gpio_cfg_output(12);
    err_code = ble_advertising_start(BLE_ADV_MODE_FAST);
    APP_ERROR_CHECK(err_code);
    
    // Enter main loop.
    for (;;)
    {
	  uint8_t str[4];
      sprintf((char*)str, "%d", (int)adc_sample);
      ble_nus_string_send(&m_nus, str, strlen((char*)str));
	  nrf_gpio_pin_clear(12);
      power_manage();
    }
}

Looking forward for the possible guidance...

Thanks 

Parents Reply Children
No Data
Related