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:
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");
}
Gruß,
askazo
Lesezeichen