I am using a TMS570LS1227, transmitting in multibuffer mode, and want to use the TX interrupt.
The interrupt is thrown by the TMS570 hardware when the last character is written to the transmit shift register (TX RDY). However, at this point, that character has not been driven onto the TX line (confirmed with a scope trace).
In my ISR, I recalculate the new LENGTH field of the SCIFORMAT register, update the SCIFORMAT register, and then load the new data into the multibuffer.
The hardware, instead of utilizing the new LENGTH parameter, transmits the previous LENGTH's work of characters. However if I put a simple delay into my ISR such that the SCIFORMAT register is not updated until the transmit shift register is empty, the new LENGTH is utilized without a problem. It seems that the LENGTH parameter cannot be changed until the multibuffer and the shift register are both empty.
Am I missing something?
Adding a delay to the ISR (as done above for testing purposes), is not an option for me.
Thanks in advance for any assistance or insights any responders can provide.