Hi,
I'm writing a UART interrupt driver using the CSL.
Working with the Rx interrupts causes no problem...I'm getting the Timeout interrupt and the Threshold interrupt with no problem.
Because all UART interrupts (Rx, Tx, Modem Status) are connected with the same event ( #69 ) and there for, they are connected to the same interrupt,
I configured the IER as so :
BSW_t_Uart2Regs->IER = CSL_FMKT(UART_IER_EDSSI, DISABLE )
| CSL_FMKT(UART_IER_ELSI , DISABLE )
| CSL_FMKT(UART_IER_ETBEI, ENABLE )
| CSL_FMKT(UART_IER_ERBI , ENABLE );
I decided that after receiving the interrupt, Ill look in the IIR and check what kind of interrupt is it Like so :
e_IrqType = CSL_FEXT(BSW_t_Uart2Regs->IIR, UART_IIR_INTID).
Later I'm using a swith-case and do other operations according to the event at hand.
The problem is, that after I enable the TxFifoEmpty event ( CSL_FMKT(UART_IER_ETBEI, ENABLE ) ), once in a while
I'm starting to get interrupts without an ID on the IIR
I mean that CSL_FEXT(BSW_t_Uart2Regs->IIR, UART_IIR_INTID) results with '0x0000'.
This problem seems to cause me to "MISS" Rx interrupts...(for example, i'm sending 100 bytes to the serial port
via a PC application, and once every couple of Transmits, 1 of the bytes wownt arrive to the DSP).
Any Ideas?
Thank,
Yoav
Additional information :
I made sure that I dont get nested interrupts , this doesnt happen when Fifo TX interrupt is disabled,
this doesnt happen if I'm not trying to send data via the RS232.
I'm using CC3.3, Bios 5.41.01.09, C.G.T 6.1.12