Hello,
I'm working with starterware 02.00.00.07 and Beaglebone. I cannot get the FIFO of the UART0 to work. I would like to send a few kb of text via UART0, 64 bytes at a time in the UART0_Isr. Check this out. In the interrupt in call "UARTCharPut" 64 times. The duration of that interrupt is 5.6ms (measured with a DMTIMER), which means that UARTCharPut waits for each character to be transmitted. If I use the UARTCharPutNonBlocking, only two characters get transmitted and the rest get lost.
My FIFO setting is standard:
config = UART_FIFO_CONFIG(UART_TRIG_LVL_GRANULARITY_1 , UART_TRIG_LVL_GRANULARITY_1 , 1 , 1 , 1 , 1 , UART_DMA_EN_PATH_SCR , UART_DMA_MODE_0_ENABLE);
UARTFIFOConfig(SOC_UART_0_REGS , config);
And the ISR is nothing special aswell, copied from the UART echo example:
case UART_INTID_TX_THRES_REACH:
for (a = 0; a < 64; a++) UARTCharPut(SOC_UART_0_REGS,'A');
UARTIntDisable(SOC_UART_0_REGS, UART_INT_THR);
break;
To sum up, that for loop takes 5.6ms, meaning the UARTCharPut puts only one char a a time and waits for it to be transmitted, as if the FIFO was not present. I a previous post on this form, I saw an example of sending 64 chars using the UARTPuts, but UARTPuts uses the UARTCharPut, so It shouldn't make any difference. Anyways, if I send a few kilobytes of text in this way, the processor would be in the ISR all the time. Not good.
Appreciate any help!
Thanks!