This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TM4C1294NCPDT: CONFIGURE 2 ADCs triggerred by timers using ADC_TRIGGER_TIMER

Part Number: TM4C1294NCPDT

I am trying to do the above in the folowing way, only one ADC interrupt is working (the higher frequency)

the code I am using is as follows:

I DO NOT understand the conection between the timer and ADC that would make the ADC get triggered.

The 2 ADC configuring:

void ADC_init(void)
{
//=================================initialize ADC0 module for PD sample============================
// Enable the ADC0 module.
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
ADCSequenceDisable(ADC0_BASE, 1);

ADCClockConfigSet(ADC0_BASE, ADC_CLOCK_SRC_PLL | ADC_CLOCK_RATE_FULL, 15);

// Wait for the ADC0 module to be ready.
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_ADC0))
{
}

//Initialize Timer0 - base and the timer is TIMERA to trigger an ADC conversion
ADCSequenceConfigure(ADC0_BASE, PD_SAMPLE_SEQ, ADC_TRIGGER_TIMER, PD_SEQ_PRIORITY); //sequencer 1 --->

ADCSequenceStepConfigure(ADC0_BASE, PD_SAMPLE_SEQ, PD1_STEP, ADC_CTL_CH0);
ADCSequenceStepConfigure(ADC0_BASE, PD_SAMPLE_SEQ, PD2_STEP, ADC_CTL_CH1);
ADCSequenceStepConfigure(ADC0_BASE, PD_SAMPLE_SEQ, PD3_STEP, ADC_CTL_CH2);
ADCSequenceStepConfigure(ADC0_BASE, PD_SAMPLE_SEQ, PD4_STEP, (ADC_CTL_CH3 | ADC_CTL_END |ADC_CTL_IE ) );

ADCSequenceEnable(ADC0_BASE, PD_SAMPLE_SEQ);
ADCHardwareOversampleConfigure(ADC0_BASE,0);
ADCIntRegister(ADC0_BASE, PD_SAMPLE_SEQ, ADC0PDIntHandler);
ADCIntClear(ADC0_BASE, PD_SAMPLE_SEQ);
ADCIntEnable(ADC0_BASE, PD_SAMPLE_SEQ);

//==================================initialize ADC1 for TH & LIM sample==============================
// Enable the ADC1 module.
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC1);
ADCSequenceDisable(ADC1_BASE, 1);

ADCClockConfigSet(ADC1_BASE, ADC_CLOCK_SRC_PLL | ADC_CLOCK_RATE_FULL, 15);
// Wait for the ADC1 module to be ready.
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_ADC1))
{
}

//Initialize timer0 - base and timer is TIMERB to trigger an ADC conversion
ADCSequenceConfigure(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ, ADC_TRIGGER_TIMER, 0/*TH_AND_LIM_SEQ_PRIORITY*/); //sequencer 0 ---> TimerControlTrigger(TIMER0_BASE, TIMER_B, true);

ADCSequenceStepConfigure(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ, LIMIT_MUX_STEP, ADC_CTL_CH16);
ADCSequenceStepConfigure(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ, TH_MUX_STEP, ADC_CTL_CH17);
ADCSequenceStepConfigure(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ, TH9_STEP, ADC_CTL_CH11);
ADCSequenceStepConfigure(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ, TH10_STEP, ADC_CTL_CH12);
ADCSequenceStepConfigure(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ, TH11_STEP, ADC_CTL_CH13);
ADCSequenceStepConfigure(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ, TH12_STEP, ADC_CTL_CH14);
ADCSequenceStepConfigure(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ, TH13_STEP, ADC_CTL_CH15);
ADCSequenceStepConfigure(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ, INTERNAL_TH_STEP, (ADC_CTL_TS | ADC_CTL_END |ADC_CTL_IE ) );

ADCSequenceEnable(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ);
ADCHardwareOversampleConfigure(ADC1_BASE,0);// ????
ADCIntRegister(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ, ADC1THIntHandler);
ADCIntClear(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ);
ADCIntEnable(ADC1_BASE, TH_AND_LIM_SAMPLE_SEQ);

}

the 2 timers configurations:

void bothTimers_init(void)
{
uint32_t ulperiod;
uint32_t ulperiod1;

SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_TIMER0))
{
}
TimerClockSourceSet(TIMER0_BASE,TIMER_CLOCK_SYSTEM);

SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER1);
while(!SysCtlPeripheralReady(SYSCTL_PERIPH_TIMER1))
{
}
TimerClockSourceSet(TIMER1_BASE,TIMER_CLOCK_SYSTEM);

//change to ADC's timer trigger
// Configure Timer_B as a 16-bit periodic timer.
TimerConfigure(TIMER0_BASE, /*TIMER_CFG_SPLIT_PAIR |*/ TIMER_CFG_PERIODIC);
TimerConfigure(TIMER1_BASE, /*TIMER_CFG_SPLIT_PAIR | */TIMER_CFG_PERIODIC);

ulperiod = ((g_ui32SysClock - 1) / PD_TIMER_FREQ); //PD_TIMER_FREQ
ulperiod1 = ((g_ui32SysClock - 1) / (TH_TIMER_FREQ)); //

TimerLoadSet(TIMER0_BASE, TIMER_A, ulperiod);
TimerLoadSet(TIMER1_BASE, TIMER_B, ulperiod1);
// IntMasterEnable();
// TimerIntEnable(TIMER0_BASE, TIMER_TIMB_TIMEOUT);

// For ADV trigger Enable the Timer0B interrupt on the processor (NVIC).
TimerControlTrigger(TIMER0_BASE, TIMER_A, true);
TimerControlTrigger(TIMER1_BASE, TIMER_B, true);

TimerDisable(TIMER0_BASE, TIMER_A);
TimerDisable(TIMER1_BASE, TIMER_B);
// Enable Timer0B.
TimerEnable(TIMER0_BASE, TIMER_A);
TimerEnable(TIMER1_BASE, TIMER_B);
}

WHAT IS MISSING OR WRONG?