Hi,
I have my SAADC configured with two channels. One for my sensor and one for the battery level measurement.
I only need to measure my battery level every minute for example. But I need to measure my sensor every 30ms.
For now, in my saadc_callback function I do everything. To avoid that I created a variable which I increment every time to avoid doing battery measurement every calls.
void saadc_callback(nrf_drv_saadc_evt_t const * p_event)
{
if (p_event->type == NRF_DRV_SAADC_EVT_DONE)
{
ret_code_t err_code;
err_code = nrf_drv_saadc_buffer_convert(p_event->data.done.p_buffer, SAMPLES_IN_BUFFER);
APP_ERROR_CHECK(err_code);
val_SENSOR = p_event->data.done.p_buffer[0];
// Measure my sensor
// Send my sensor value
// No need to measure battery level every time
// For now update it once every minute so approximately every 2000 times the saadc is called
if(battery_level_update_timer > 2000){
val_BAT = p_event->data.done.p_buffer[1];
// Measure battery level
// Send new value
battery_level_update_timer = 0;
}
else{
battery_level_update_timer++;
}
}
}
Is there a better way than this ? For example create a saadc_callback for each channel ?
Thanks !