Hallo! Ich habe eine Frage zum Senden von Strings über UART.
Angenommen ich sende einen String mit der Länge von genau 100 Zeichen.
Wird die Funktion
1 | void uart_puts (char *s)
|
solange ausgeführt, bis tatsächlich 100 Zeichen gesendet wurden, oder
nur solange bis das 100te Zeichen in das Sende-Schiebe-Register
übertragen wurde?
Anders formuliert:
Wird die Funktion bereits verlassen, obwohl noch ein Zeichen gesendet
wird?
1 | /* ATmega16 */
|
2 | int uart_putc(unsigned char c)
|
3 | {
|
4 | while (!(UCSRA & (1<<UDRE))) /* warten bis Senden moeglich */
|
5 | {
|
6 | }
|
7 |
|
8 | UDR = c; /* sende Zeichen */
|
9 | return 0;
|
10 | }
|
11 |
|
12 |
|
13 | /* puts ist unabhaengig vom Controllertyp */
|
14 | void uart_puts (char *s)
|
15 | {
|
16 | while (*s)
|
17 | { /* so lange *s != '\0' also ungleich dem "String-Endezeichen" */
|
18 | uart_putc(*s);
|
19 | s++;
|
20 | }
|
21 | }
|
Ich habe keine Debugger und kann es nicht richtig testen :(