Good Day,
i´m want to use saadc with 7 channels. I´m using the ADC Driver with an interupt handler. All 10ms the sampling starts per cpu. I use the configuration followed:
------------------------------------------------------------------------------------------
nrfx_saadc_config_t stADCCfg;
nrf_saadc_channel_config_t stChCfg;
nrfx_saadc_uninit();
stADCCfg.resolution = NRF_SAADC_RESOLUTION_12BIT;
nrfx_saadc_init( &stADCCfg, HWADCEvent );
stChCfg.gain = NRF_SAADC_GAIN1_4;
stChCfg.mode = NRF_SAADC_MODE_SINGLE_ENDED;
stChCfg.reference = NRF_SAADC_REFERENCE_VDD4;
stChCfg.resistor_n = NRF_SAADC_RESISTOR_DISABLED;
stChCfg.resistor_p = NRF_SAADC_RESISTOR_DISABLED;
/* PIR Sensor 1 (Sens1) */
nrfx_saadc_channel_uninit(0);
stChCfg.pin_p = NRF_SAADC_INPUT_AIN6;
nrfx_saadc_channel_init( 0, &stChCfg );
nrfx_saadc_channel_uninit(1);
stChCfg.pin_p = NRF_SAADC_INPUT_AIN7;
nrfx_saadc_channel_init( 1, &stChCfg );
nrfx_saadc_channel_uninit(2);
stChCfg.pin_p = NRF_SAADC_INPUT_AIN0;
nrfx_saadc_channel_init( 2, &stChCfg );
/* PIR Sensor 4 (Sens4) */
nrfx_saadc_channel_uninit(3);
stChCfg.pin_p = NRF_SAADC_INPUT_AIN1;
nrfx_saadc_channel_init( 3, &stChCfg );
nrfx_saadc_channel_uninit(4);
stChCfg.pin_p = NRF_SAADC_INPUT_AIN5;
nrfx_saadc_channel_init( 4, &stChCfg );
nrfx_saadc_channel_uninit(5);
stChCfg.pin_p = NRF_SAADC_INPUT_AIN4;
nrfx_saadc_channel_init( 5, &stChCfg );
nrfx_saadc_channel_uninit(6);
stChCfg.pin_p = NRF_SAADC_INPUT_AIN2;
nrfx_saadc_channel_init( 6, &stChCfg );
nrfx_saadc_buffer_convert(m_buffer_pool[1], 7);
nrfx_saadc_buffer_convert(m_buffer_pool[2], 7);
nrfx_saadc_buffer_convert(m_buffer_pool[3], 7);
nrfx_saadc_buffer_convert(m_buffer_pool[4], 7);
nrfx_saadc_buffer_convert(m_buffer_pool[5], 7);
nrfx_saadc_buffer_convert(m_buffer_pool[6], 7);
nrfx_saadc_calibrate_offset();
{
{
case NRFX_SAADC_EVT_DONE:
nrfx_saadc_buffer_convert(p_event->data.done.p_buffer,7);
val2 = p_event->data.done.p_buffer[1];
val3 = p_event->data.done.p_buffer[2];
val4 = p_event->data.done.p_buffer[3];
val5 = p_event->data.done.p_buffer[4];
val6 = p_event->data.done.p_buffer[5];
val7 = p_event->data.done.p_buffer[6];
break;
case NRFX_SAADC_EVT_LIMIT:
break;
case NRFX_SAADC_EVT_CALIBRATEDONE:
break;
default:
break;
}