Noch mal was zu printf: Man kann sie doch benutzen. Man muss dem Compiler nur mit fdevopen() sagen, wie er die Ausgabe machen soll. die Routine zur Ausgabe eines einzelnen Zeichens muss man also selber schreiben, das zusammenstellen der Strings erledigt printf(). Folgender Code ist getestet und funktioniert:
Gruß,Code:#include <io.h> #include <stdio.h> #define F_CPU 8000000 // 8 MHz Taktfrequenz #define UART_BAUD_RATE 2400 #define UART_BAUD_SELECT (F_CPU/(UART_BAUD_RATE*16l)-1) int uart_putchar(char c) { if (c == '\n') uart_putchar('\r'); loop_until_bit_is_set(UCSR0A, UDRE); UDR0 = c; return 0; } void UartInit(void) { UCSRB = 0x08 UBRRL = UART_BAUD_SELECT; } int main (void) { UartInit(); //Schnittstelle initialisieren fdevopen(uart_putchar, NULL, 0); printf ("HelloWorld"); }
askazo







Zitieren

Lesezeichen