Hi,
I am using a Tiva C series launchpad. I need to sample 5 different signals in the following succession.
1. Sample from pin D0 once using ADC0
2. Sample from pin D1 once using ADC0
3. Sample from pin D2 once using ADC1
4. Sample from pin D3 and D4 simultaneously using ADC0 and ADC1 for 128 times.
SysCtlClockSet(SYSCTL_SYSDIV_10 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHZ); //20 MHz clock ADCSequenceConfigure(ADC0_BASE, 3, ADC_TRIGGER_PROCESSOR, 0); ADCSequenceConfigure(ADC1_BASE, 3, ADC_TRIGGER_PROCESSOR, 0); ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH7 | ADC_CTL_IE | ADC_CTL_END); ADCSequenceStepConfigure(ADC1_BASE, 3, 0, ADC_CTL_CH6 | ADC_CTL_IE | ADC_CTL_END); ADCSequenceStepConfigure(ADC1_BASE, 3, 0, ADC_CTL_CH5 | ADC_CTL_IE | ADC_CTL_END); ADCSequenceStepConfigure(ADC1_BASE, 3, 0, ADC_CTL_CH4 | ADC_CTL_IE | ADC_CTL_END); ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH3 | ADC_CTL_IE | ADC_CTL_END); ADCSequenceEnable(ADC0_BASE, 3); ADCSequenceEnable(ADC1_BASE, 3); ADCIntClear(ADC0_BASE, 3); while(1) { ADCSequenceStepConfigure(ADC1_BASE, 3, 0, ADC_CTL_CH5 | ADC_CTL_IE | ADC_CTL_END); ADCIntClear(ADC1_BASE, 3); ADCProcessorTrigger(ADC1_BASE, 3); // Trigger the ADC conversion. while(!ADCIntStatus(ADC1_BASE, 3, false)){} // Wait for conversion to be completed. ADCIntClear(ADC1_BASE, 3); // Clear the ADC interrupt flag. ADCSequenceDataGet(ADC1_BASE, 3, adcbuffer); // Read ADC Value. timebase = adcbuffer[0]; ADCSequenceStepConfigure(ADC1_BASE, 3, 0, ADC_CTL_CH4 | ADC_CTL_IE | ADC_CTL_END); ADCIntClear(ADC1_BASE, 3); ADCProcessorTrigger(ADC1_BASE, 3); // Trigger the ADC conversion. while(!ADCIntStatus(ADC1_BASE, 3, false)){} // Wait for conversion to be completed. ADCIntClear(ADC1_BASE, 3); // Clear the ADC interrupt flag. ADCSequenceDataGet(ADC1_BASE, 3, adcbuffer); // Read ADC Value. triglvl = adcbuffer[0]; ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH3 | ADC_CTL_IE | ADC_CTL_END); ADCIntClear(ADC0_BASE, 3); ADCProcessorTrigger(ADC0_BASE, 3); // Trigger the ADC conversion. while(!ADCIntStatus(ADC0_BASE, 3, false)){} // Wait for conversion to be completed. ADCIntClear(ADC0_BASE, 3); // Clear the ADC interrupt flag. ADCSequenceDataGet(ADC0_BASE, 3, adcbuffer); // Read ADC Value. xpos = adcbuffer[0]; for (i=0;i<128;i++) { ADCSequenceStepConfigure(ADC0_BASE, 3, 0, ADC_CTL_CH7 | ADC_CTL_IE | ADC_CTL_END); ADCIntClear(ADC0_BASE, 3); ADCProcessorTrigger(ADC0_BASE, 3); // Trigger the ADC conversion. while(!ADCIntStatus(ADC0_BASE, 3, false)){} // Wait for conversion to be completed. ADCIntClear(ADC0_BASE, 3); // Clear the ADC interrupt flag. ADCSequenceDataGet(ADC0_BASE, 3, adcbuffer); // Read ADC Value. adcdata1[i] = adcbuffer[0]; ADCSequenceStepConfigure(ADC1_BASE, 3, 0, ADC_CTL_CH6 | ADC_CTL_IE | ADC_CTL_END); ADCIntClear(ADC1_BASE, 3); ADCProcessorTrigger(ADC1_BASE, 3); // Trigger the ADC conversion. while(!ADCIntStatus(ADC1_BASE, 3, false)){} // Wait for conversion to be completed. ADCIntClear(ADC1_BASE, 3); // Clear the ADC interrupt flag. ADCSequenceDataGet(ADC1_BASE, 3, adcbuffer); // Read ADC Value. adcdata2[i] = adcbuffer[0]; }
Is this the best way to configure the sampling sequence ?