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

BLE + ADC + Timer

Hey everyone. I'm trying to read ADC value from sensor and send it via ble.

I use timer to get the value from sensor every 5 seconds, however ADC interruption correlates with BLE interruption and I get an error via serial port

APP_ERROR:ERROR:Fatal
:INFO:Health Themometer Sensor Start!
:INFO:Fast advertising
:INFO:ADC event counter: 1
:INFO:Temperature: 24°C
:INFO:ADC event counter: 2
:INFO:Temperature: 24°C
APP_ERROR:ERROR:Fatal
:INFO:Health Themometer Sensor Start!
:INFO:Fast advertising 

I looked at hts example where it uses timer for simulation battery level and it works, but my not.

I have 3 main functions:

static void lmt70_event_handler(nrf_drv_adc_evt_t const * p_event) // this is adc conversion interruption, if I remove everything below, I don't have errors, but even though I remove everything instead of first NRF_LOG I get this error again
{
    if (p_event->type == NRF_DRV_ADC_EVT_DONE)
    {
        adc_counter++;
        NRF_LOG_INFO("ADC event counter: %d\r\n", adc_counter);

        float LMT70_reading = ADC_RESULT_IN_MILLI_VOLTS(p_event->data.done.p_buffer[0]);
        float A_val = LMT70_AMul * (LMT70_reading * LMT70_reading * LMT70_reading);
        float B_val = LMT70_BMul * (LMT70_reading * LMT70_reading);
        float C_val = LMT70_CMul * LMT70_reading;

        float degC = A_val + B_val + C_val + LMT70_DMul;
        if (isConnected)
            temperature_measurement_send(degC);
        NRF_LOG_INFO("Temperature: %d°C\r\n", degC);
       
    }
}

static void lmt70_timeout_handler(void * p_context) // this is timer interruption
{
    UNUSED_PARAMETER(p_context);
    APP_ERROR_CHECK(nrf_drv_adc_buffer_convert(adc_buffer, ADC_BUFFER_SIZE));
    for (uint32_t i = 0; i < ADC_BUFFER_SIZE; i++)
    {
        nrf_drv_adc_sample();
        __SEV();
        __WFE();
        __WFE();
        NRF_LOG_FLUSH();
    }
}

I use 2.0.1 softdevice

Parents Reply Children
No Data
Related