Tool/software: Code Composer Studio
Hi,
Am trying XINT1 using TMS320F2812 in a test card.
InitXIntrupt sometimes works sometimes doesn't,
Even though PDPINTA interrupt (INT1.1) is not active, it still happens
my code:
#include "DSP28_Device.h"
//unsigned int *LedADDR = (unsigned int *)0x4600; //LED control register
interrupt void ExtIntISR(void);
Uint16 Temp;
void main(void)
{
InitSysCtrl(); //initialize the system
DINT; //disable interrupts
IER = 0x0000;
IFR = 0x0000;
InitPieCtrl(); //Initialize PIE
// Disable CPU interrupts and clear all CPU interrupt flags:
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable(); //Initialize PIE interrupt vector table
// InitPeripherals(); //initialize peripherals
InitGpio(); //initialize GPIO
InitXIntrupt(); //Initialize external interrupt
EALLOW;
PieVectTable.XINT1 = &ExtIntISR;
EDIS;
XIntruptRegs.XINT1CR.bit.ENABLE = 1; // Enable XINT1 pin
XIntruptRegs.XINT1CR.bit.POLARITY = 1; // Interrupt triggers on rising edge
//*LedADDR=0xFF;
// Enable the PIE block
PieCtrl.PIECRTL.bit.ENPIE = 1;
// Enable PIE group 1 interrupt 1-8
//open the interrupt
PieCtrl.PIEIER1.all = 0x0008; //external interrupt 1 PIE group 1 where the first four
// Make sure PIEACK for group 1 is clear (default after reset)
PieCtrl.PIEACK.all = M_INT1;
// Enable CPU INT1
IER |= M_INT1;
EINT; // Enable INTM
ERTM; // Enable DBGM
GpioDataRegs.GPADAT.all = 0x0000;
Temp=0xFF;
for(;;);
}
interrupt void ExtIntISR(void)
{
PieCtrl.PIEACK.all = 0xFFFF;
PieCtrl.PIEIFR1.bit.INTx4 = 0;//0000 1101 0100 0111
ERTM;
EINT;
Temp^=0xFF;
GpioDataRegs.GPADAT.all = Temp;
}