Hai harshit :-) thanks for sharing the experience. your response are more valuable for me
I am using PORTB,PORTF and PORTE for the interrupts from external hardware but some of the pins in PORTB, PORTF and PORTE needs the interrupt on RISING EDGE and some of the pins in PORTB , PORTF and PORTE needs the interrupt on BOTH EDGES for my application in the enet_io example
i changed the startup_ccs.c
i am giving interrupts from external board, output pins are not going high or low . it remains low
please check the configurations and Interrupthandler.
please help me to solve this
thank you
i mention the pins using in the enet_io stellarisware and below this GPIO interupt pin configuration and below that only PORTB interrupt handler
output pins
PORTD -- PD4/CCP0, PD5/CCP2, PD6/FAULT, PD7/IDX0
PORTC -- PC4/PHA0, PC6/PHB0,PC5,PC7
PORTB -- PB4/C0-
INPUT PINS
PORTB -- PB2/I2C0SCL, PB3/I2C0SDA, PB6/C0+, PB5/C0O(C1-)
PORTE- PE0/PWM4,PE1/PWM5, PE3/PHA1, PE2/PHB1
PORTF-- PF0/PWM0, PF1/IDX1
INTERRUPT GPIO CONFIGURATION
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
GPIOPortIntRegister(GPIO_PORTE_BASE, PortEIntHandler);
GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1);
GPIOPadConfigSet(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPD);
GPIODirModeSet(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1, GPIO_DIR_MODE_IN);
GPIOIntTypeSet(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1, GPIO_RISING_EDGE);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPortIntRegister(GPIO_PORTF_BASE, PortFIntHandler);
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_1);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPD);
GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_DIR_MODE_IN);
GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_1, GPIO_RISING_EDGE);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPortIntRegister(GPIO_PORTB_BASE, PortBIntHandler);
GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_5 | GPIO_PIN_6);
GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_5 | GPIO_PIN_6, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPD);
GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_5 | GPIO_PIN_6, GPIO_DIR_MODE_IN);
GPIOIntTypeSet(GPIO_PORTB_BASE, GPIO_PIN_2 | GPIO_PIN_5 | GPIO_PIN_6, GPIO_RISING_EDGE);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB);
GPIOPortIntRegister(GPIO_PORTB_BASE, PortBIntHandler);
GPIOPinTypeGPIOInput(GPIO_PORTB_BASE, GPIO_PIN_3);
GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_3, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPD);
GPIODirModeSet(GPIO_PORTB_BASE, GPIO_PIN_3, GPIO_DIR_MODE_IN);
GPIOIntTypeSet(GPIO_PORTB_BASE, GPIO_PIN_3, GPIO_BOTH_EDGES);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
GPIOPortIntRegister(GPIO_PORTF_BASE, PortFIntHandler);
GPIOPinTypeGPIOInput(GPIO_PORTF_BASE, GPIO_PIN_0);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPD);
GPIODirModeSet(GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_DIR_MODE_IN);
GPIOIntTypeSet(GPIO_PORTF_BASE, GPIO_PIN_0, GPIO_BOTH_EDGES);
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOE);
GPIOPortIntRegister(GPIO_PORTE_BASE, PortEIntHandler);
GPIOPinTypeGPIOInput(GPIO_PORTE_BASE, GPIO_PIN_3);
GPIOPadConfigSet(GPIO_PORTE_BASE, GPIO_PIN_3, GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPD);
GPIODirModeSet(GPIO_PORTE_BASE, GPIO_PIN_3, GPIO_DIR_MODE_IN);
GPIOIntTypeSet(GPIO_PORTE_BASE, GPIO_PIN_3, GPIO_BOTH_EDGES);
GPIOPinIntEnable(GPIO_PORTE_BASE, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_3);
GPIOPinIntEnable(GPIO_PORTF_BASE, GPIO_PIN_0 | GPIO_PIN_1 );
GPIOPinIntEnable(GPIO_PORTB_BASE, GPIO_PIN_2 |GPIO_PIN_3 | GPIO_PIN_5 | GPIO_PIN_6);
IntEnable(INT_GPIOB);
IntEnable(INT_GPIOE);
IntEnable(INT_GPIOF);
interrupt handler
void PortBIntHandler(void)
{
GPIOPinIntDisable(GPIO_PORTB_BASE, GPIO_PIN_6 | GPIO_PIN_5 | GPIO_PIN_3 | GPIO_PIN_2);
if(GPIOPinIntStatus(GPIO_PORTB_BASE, GPIO_PIN_2 ) )
{
GPIOPinIntClear(GPIO_PORTB_BASE, GPIO_PIN_2);
if(GPIOPinRead(GPIO_PORTB_BASE, GPIO_PIN_4))
{
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0x00);
}
else
{
GPIOPinWrite(GPIO_PORTB_BASE, GPIO_PIN_4, 0x10);
}
}
if(GPIOPinIntStatus(GPIO_PORTB_BASE, GPIO_PIN_3 ))
{
GPIOPinIntClear(GPIO_PORTB_BASE, GPIO_PIN_3);
if(GPIOPinRead(GPIO_PORTD_BASE, GPIO_PIN_7))
{
GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_7, 0x00);
}
else
{
GPIOPinWrite(GPIO_PORTD_BASE, GPIO_PIN_7, 0x80);
}
}
if(GPIOPinIntStatus(GPIO_PORTB_BASE, GPIO_PIN_5 ))
{
GPIOPinIntClear(GPIO_PORTB_BASE, GPIO_PIN_5);
if(GPIOPinRead(GPIO_PORTC_BASE, GPIO_PIN_4))
{
GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_4, 0x00);
}
else
{
GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_4, 0x10);
}
}
if(GPIOPinIntStatus(GPIO_PORTB_BASE, GPIO_PIN_6 ))
{
GPIOPinIntClear(GPIO_PORTB_BASE, GPIO_PIN_6);
if(GPIOPinRead(GPIO_PORTC_BASE, GPIO_PIN_6))
{
GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_6, 0x00);
}
else
{
GPIOPinWrite(GPIO_PORTC_BASE, GPIO_PIN_6, 0x40);
}
}
GPIOPinIntEnable(GPIO_PORTB_BASE, GPIO_PIN_6 | GPIO_PIN_5 | GPIO_PIN_3 | GPIO_PIN_2);
}