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.

tm4c123 ADC 2 input problem

I use tm4c123gxl to control my robot.

I need to get Gyro Sensor's value(X-axis,Y-axis) ,to balance my robot.

So I need two ADC pins.

But only PE3 is work,PE2 isn't work.

What happened?

How can I solve this problem, below is prt of my code

void main ()
{
uint32_t ui32Period;
//Set Timer0
SysCtlClockSet(SYSCTL_SYSDIV_1|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN);
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER0); 
TimerConfigure(TIMER0_BASE, TIMER_CFG_PERIODIC);
ui32Period = SysCtlClockGet() ;
TimerLoadSet(TIMER0_BASE, TIMER_A, ui32Period /1000);
IntEnable(INT_TIMER0A);
TimerIntEnable(TIMER0_BASE, TIMER_TIMA_TIMEOUT); 
IntMasterEnable();
TimerEnable(TIMER0_BASE, TIMER_A);

//Set UART
ConfigureUART();

//set PWM
SysCtlPWMClockSet(SYSCTL_PWMDIV_1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM1);
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);

PWMOutputState(PWM1_BASE, PWM_OUT_2_BIT, true);
PWMOutputState(PWM1_BASE, PWM_OUT_3_BIT, true);
PWMOutputState(PWM0_BASE, PWM_OUT_5_BIT, true);
PWMOutputState(PWM0_BASE, PWM_OUT_4_BIT, true);

PWMGenEnable(PWM1_BASE, PWM_GEN_1);
PWMGenEnable(PWM0_BASE, PWM_GEN_2);
GPIOPinConfigure(GPIO_PA6_M1PWM2);
GPIOPinConfigure(GPIO_PA7_M1PWM3);
GPIOPinConfigure(GPIO_PE4_M0PWM4);
GPIOPinConfigure(GPIO_PE5_M0PWM5);

GPIOPinTypePWM(GPIO_PORTA_BASE, GPIO_PIN_6);
GPIOPinTypePWM(GPIO_PORTA_BASE, GPIO_PIN_7);
GPIOPinTypePWM(GPIO_PORTE_BASE, GPIO_PIN_4);
GPIOPinTypePWM(GPIO_PORTE_BASE, GPIO_PIN_5);
PWMGenConfigure(PWM1_BASE, PWM_GEN_1,PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
PWMGenConfigure(PWM0_BASE, PWM_GEN_2,PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
PWMGenPeriodSet(PWM1_BASE, PWM_GEN_1, 16384); 
PWMGenPeriodSet(PWM0_BASE, PWM_GEN_2, 16384);

//enable GPIO
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOC);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);

//set ADC
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0);
GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_2);
GPIOPinTypeADC(GPIO_PORTE_BASE, GPIO_PIN_3);
ADCReferenceSet(ADC0_BASE, ADC_REF_EXT_3V);
ADCSequenceConfigure(ADC0_BASE, 0, ADC_TRIGGER_PROCESSOR, 0);
ADCSequenceConfigure(ADC0_BASE, 1, ADC_TRIGGER_PROCESSOR, 0);

ADCSequenceStepConfigure(ADC0_BASE, 0, 0, ADC_CTL_CH0|
ADC_CTL_END | ADC_CTL_IE);
ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_CH1|
ADC_CTL_END | ADC_CTL_IE);
ADCSequenceEnable(ADC0_BASE, 0); 
ADCSequenceEnable(ADC0_BASE, 1); 

ADCIntClear(ADC0_BASE, 0);
ADCIntClear(ADC0_BASE, 1);
ADCIntEnable(ADC0_BASE, 0);
ADCIntEnable(ADC0_BASE, 1);

void Timer0IntHandler(void)
{

TimerIntClear(TIMER0_BASE,TIMER_TIMA_TIMEOUT);
timer_ADC();
Get_Motor_XY_Pos();

}


void timer_ADC(void)
{


ADCProcessorTrigger(ADC0_BASE, 0); 
while(!ADCIntStatus(ADC0_BASE, 0, false)) ;
ADCSequenceDataGet(ADC0_BASE, 0, &X_Value );

ADCProcessorTrigger(ADC0_BASE, 1); 
while(!ADCIntStatus(ADC0_BASE, 1, false)) ;
ADCSequenceDataGet(ADC0_BASE, 1, &Y_Value );


}