Hello DevZone,
I know that the subject has already be treat but in the others posts people seems to say that the error comes from the double buffering.
But in my case, I have no double buffering active. And I try to use the following function :
err_code = nrfx_saadc_sample_convert(0, ADC_value);/** * Copyright (c) 2014 - 2018, Nordic Semiconductor ASA * * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this * list of conditions and the following disclaimer. * * 2. Redistributions in binary form, except as embedded into a Nordic * Semiconductor ASA integrated circuit in a product or a software update for * such product, must reproduce the above copyright notice, this list of * conditions and the following disclaimer in the documentation and/or other * materials provided with the distribution. * * 3. Neither the name of Nordic Semiconductor ASA nor the names of its * contributors may be used to endorse or promote products derived from this * software without specific prior written permission. * * 4. This software, with or without modification, must only be used with a * Nordic Semiconductor ASA integrated circuit. * * 5. Any software provided in binary form under this license must not be reverse * engineered, decompiled, modified and/or disassembled. * * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA OR CONTRIBUTORS BE * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * */ /** @file * @defgroup nrf_adc_example main.c * @{ * @ingroup nrf_adc_example * @brief ADC Example Application main file. * * This file contains the source code for a sample application using ADC. * * @image html example_board_setup_a.jpg "Use board setup A for this example." */ #include <stdbool.h> #include <stdint.h> #include <stdio.h> #include <string.h> #include "nrf.h" #include "nrf_drv_saadc.h" #include "nrf_drv_ppi.h" #include "nrf_drv_timer.h" #include "nrf_drv_twi.h" #include "boards.h" #include "app_error.h" #include "nrf_delay.h" #include "app_util_platform.h" #include "nrf_pwr_mgmt.h" #include "nrf_log.h" #include "nrf_log_ctrl.h" #include "nrf_log_default_backends.h" #define SAMPLES_IN_BUFFER 1 volatile uint8_t state = 1; static nrf_saadc_value_t m_buffer_pool [SAMPLES_IN_BUFFER];//[2][SAMPLES_IN_BUFFER]; static uint32_t m_adc_evt_counter; static uint16_t ADC_value [1]; 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); int i; NRF_LOG_INFO("ADC event number: %d", (int)m_adc_evt_counter); flag = 1; for (i = 0; i < SAMPLES_IN_BUFFER; i++) { ADC_value [0] = p_event->data.done.p_buffer[i]; if (ADC_value [0] < 0) { ADC_value [0] = 0; } NRF_LOG_INFO("ADC value: %d", ADC_value[0]); } m_adc_evt_counter++; } } void saadc_init(void) { ret_code_t err_code; nrf_drv_saadc_config_t saadc_config; nrf_saadc_channel_config_t channel_config = NRF_DRV_SAADC_DEFAULT_CHANNEL_CONFIG_SE(NRF_SAADC_INPUT_AIN5); channel_config.reference = NRF_SAADC_REFERENCE_INTERNAL; channel_config.gain = SAADC_CH_CONFIG_GAIN_Gain1_4; channel_config.acq_time = SAADC_CH_CONFIG_TACQ_3us; saadc_config.resolution = SAADC_RESOLUTION_VAL_14bit; saadc_config.oversample = NRF_SAADC_OVERSAMPLE_64X;//NRF_SAADC_OVERSAMPLE_DISABLED; err_code = nrf_drv_saadc_init(&saadc_config, saadc_callback); APP_ERROR_CHECK(err_code); err_code = nrf_drv_saadc_channel_init(0, &channel_config); APP_ERROR_CHECK(err_code); err_code = nrf_drv_saadc_buffer_convert(m_buffer_pool[0], SAMPLES_IN_BUFFER); APP_ERROR_CHECK(err_code); } /** * @brief Function for main application entry. */ int main(void) { uint32_t err_code = NRF_LOG_INIT(NULL); APP_ERROR_CHECK(err_code); NRF_LOG_DEFAULT_BACKENDS_INIT(); ret_code_t ret_code = nrf_pwr_mgmt_init(); APP_ERROR_CHECK(ret_code); saadc_init(); NRF_LOG_INFO("SAADC HAL simple example started."); while (1) { err_code = nrfx_saadc_sample_convert(0, ADC_value); APP_ERROR_CHECK(err_code); } } /** @} */
Here's my code:
Anyone know, where does come from the error?
Thanks,
Sylvain.