Why is it that I have to set TI from software before I can get my printf() to execute ?
I seems printf() busy waits in TI ?
Why is this so ?
Is not TI supposed to be set by the hardware ?
What I don't get is why I have to set it the first time to get my first printf() get out of busy wait.
Did you have a look at the source code of the putchar() function (it's in the lib folder) ? printf() uses this routine.
Basically, putchar() does a
while(!TI);
before sending anything.
Did I miss something in the datasheet ?
From "the bible", about TI:
Set by hardware at the end of the 8th bit time in Mode 0, or at the beginning of the stop bit in the other modes, in any serial transmission.
This says exactly when the hardware will set TI. For the hardware to set TI, it requires sending a byte. If the software never sends a byte, TI will not get set by the hardware.
Since you have the source code of putchar(), you may modify it to suit your needs.