Hans M. schrieb:
> Können dadurch nicht
> einzelne Zeichen verpasst werden?
Nein, können nicht verpasst werden. uart_puts() übergibt zwar ohne zu
warten die einzelnen Zeichen an uart_putc() aber uart_puts() arbeitet
sequenziell (wie jedes C-Programm), d.h. an der Stelle
1 | ...
|
2 | uart_putc(*s);
|
3 | ...
|
geht es erst dann weiter wenn uart_putc() vollständig abgearbeitet ist
und uart_putc() wartet ja mit
1 | ...
|
2 | while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */
|
3 | {
|
4 | }
|
5 | ...
|
darauf, dass der Sende-Puffer leer ist, also darauf, dass es das
Zeichen, dass es bekommen hat, in den Sende-Puffer des UART schieben
kann, d.h. das Zeichen, dass zuvor in den Sende-Puffer geschoben wurde
muss vollständig gesendet worden sein. Deshalb geht hier kein Zeichen
verloren.