I'm using SAADC like this:
nrfx_saadc_config_t config = NRFX_SAADC_DEFAULT_CONFIG; config.resolution = NRF_SAADC_RESOLUTION_14BIT; config.oversample = NRF_SAADC_OVERSAMPLE_DISABLED; config.interrupt_priority = NRFX_SAADC_CONFIG_IRQ_PRIORITY; config.low_power_mode = true; err_code = nrfx_saadc_init(&config, adc_event_handler); APP_ERROR_CHECK(err_code); nrf_saadc_channel_config_t config = NRFX_SAADC_DEFAULT_CHANNEL_CONFIG_SE(0); config.reference = NRF_SAADC_REFERENCE_INTERNAL; config.gain = NRF_SAADC_GAIN1_3; config.resistor_p = NRF_SAADC_RESISTOR_VDD1_2; err_code = nrfx_saadc_channel_init(0, &config); APP_ERROR_CHECK(err_code); nrfx_saadc_buffer_convert(m_adc_buffer, sizeof(nrf_saadc_value_t) * 1); nrfx_err_t err_code = nrfx_saadc_sample(); APP_ERROR_CHECK(err_code);
And I'm not getting the done event. I've also tried not low power mode.
If I place a breakpoint in nrfx_saadc.c nrfx_saadc_irq_handler, after nrfx_saadc_sample is called it gets hit. But then stepping through the code,
if (nrf_saadc_event_check(NRF_SAADC_EVENT_END))
Is false (along with all the other event checks, so it goes to the limit section, but none are enabled).