My transmit interrupt is getting generated even when both TXINTENA and TXFFIENA both are zero.It is getting interrupted even when there is no initialized SendChar.The TXFFINT flag gets cleared only in the ISR, and goes on continous transmission.Please help.I have attached the full code below.What wrong am i doing here? Regards. __interrupt void SCIBTXFIFO_ISR(void); __interrupt void SCIBRXFIFO_ISR(void); void scib_fifo_init(void); void initializeGPIO(void); void initializePIE(void); char SendChar[]; uint16_t i; ReceiveChar[]; void scib_fifo_init() { ScibRegs.SCICCR.all 0x0007; ScibRegs.SCICTL1.all = 0x0003; ScibRegs.SCIHBAUD.all = 0x0001; ScibRegs.SCILBAUD.all = 0x00E7; //9600 baud @ SPCLK = 37.5Mhz ScibRegs.SCIFFTX.bit.SCIFFENA = 1; ScibRegs.SCIFFTX.bit.TXFFIENA = 1; ScibRegs.SCIFFRX.bit.RXFFIENA = 1; ScibRegs.SCICTL1.bit.SWRESET = 1; ScibRegs.SCIFFTX.bit.TXFIFORESET = 1; ScibRegs.SCIFFRX.bit.RXFIFORESET = 1; ScibRegs.SCIFFTX.bit.TXFFIL = 1; ScibRegs.SCIFFRX.bit.RXFFIL = 1; } void initializeGPIO(void) { InitGpio(); EALLOW; GpioCtrlRegs.GPAGMUX1.bit.GPIO14 = 0; GpioCtrlRegs.GPAGMUX1.bit.GPIO15 = 0; GpioCtrlRegs.GPAMUX1.bit.GPIO14 = 2; GpioCtrlRegs.GPAMUX1.bit.GPIO15 = 2; EDIS; } void initializePIE(void) { InitSysCtrl(); DINT; InitPieCtrl(); IER = 0x0000; IFR = 0x0000; PieCtrlRegs.PIECTRL.bit.ENPIE = 1; PieCtrlRegs.PIEIER9.bit.INTx3 = 1; PieCtrlRegs.PIEIER9.bit.INTx4 = 1; IER = 0x100; EINT; InitPieVectTable(); EALLOW; PieVectTable.SCIB_RX_INT = &SCIBRXFIFO_ISR; PieVectTable.SCIB_TX_INT = &SCIBTXFIFO_ISR; EDIS; } void main(void) { scib_fifo_init(); initializeGPIO(); initializePIE(); for(; ;); } __interrupt void SCIBRXFIFO_ISR(void) { for(i=0;i<2;i++) { ReceiveChar[i] =(char)ScibRegs.SCIRXBUF.all; } ScibRegs.SCIFFRX.bit.RXFFINTCLR = 1; ScibRegs.SCIFFRX.bit.RXFFOVRCLR = 1; PieCtrlRegs.PIEACK.all |= 0x100; } __interrupt void SCIBTXFIFO_ISR(void) { for(i=0;i<2;i++) { ScibRegs.SCITXBUF.all (uint16_t)SendChar[i]; } ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; PieCtrlRegs.PIEACK.all |= 0x100; } }
↧