ret_code_t nrf_drv_saadc_init(nrf_drv_saadc_config_t const * p_config, nrf_drv_saadc_event_handler_t event_handler) { if (m_cb.state != NRF_DRV_STATE_UNINITIALIZED) { return NRF_ERROR_INVALID_STATE; } if (event_handler == NULL) { return NRF_ERROR_INVALID_PARAM; } if (p_config == NULL) { p_config = &m_default_config; } m_cb.event_handler = event_handler; nrf_saadc_resolution_set(p_config->resolution); nrf_saadc_oversample_set(p_config->oversample); m_cb.allocated_ains = 0; m_cb.state = NRF_DRV_STATE_INITIALIZED; m_cb.adc_state = NRF_SAADC_STATE_IDLE; m_cb.active_channels = 0; m_cb.buffer_pos = 0; m_cb.limits_enabled_flags = 0; nrf_drv_common_irq_enable(SAADC_IRQn, p_config->interrupt_priority); nrf_saadc_int_enable(NRF_SAADC_INT_END); nrf_saadc_enable(); return NRF_SUCCESS; }
ret_code_t nrf_drv_saadc_init(nrf_drv_saadc_config_t const * p_config, nrf_drv_saadc_event_handler_t event_handler) { if (m_cb.state != NRF_DRV_STATE_UNINITIALIZED) { return NRF_ERROR_INVALID_STATE; } if (event_handler == NULL) { return NRF_ERROR_INVALID_PARAM; } if (p_config == NULL) { p_config = &m_default_config; } m_cb.event_handler = event_handler; nrf_saadc_resolution_set(p_config->resolution); nrf_saadc_oversample_set(p_config->oversample); m_cb.low_power_mode = p_config->low_power_mode; m_cb.state = NRF_DRV_STATE_INITIALIZED; m_cb.adc_state = NRF_SAADC_STATE_IDLE; m_cb.active_channels = 0; m_cb.limits_enabled_flags = 0; m_cb.conversions_end = false; nrf_saadc_int_disable(NRF_SAADC_INT_ALL); nrf_saadc_event_clear(NRF_SAADC_EVENT_END); nrf_drv_common_irq_enable(SAADC_IRQn, p_config->interrupt_priority); nrf_saadc_int_enable(NRF_SAADC_INT_END); if (m_cb.low_power_mode) { nrf_saadc_int_enable(NRF_SAADC_INT_STARTED); } nrf_saadc_enable(); return NRF_SUCCESS; }