ich denke das der Write() teil auch nicht weiter helfen wird, da man dem Write() quasi nur einen String übergibt der dann verarbeitet wird.
Wenn man z.B direkt Write("5.5") schreibt wird dieses auch angezeigt.
Hier ist mal der Teil wie der UART initialisiert wird und wie ausgelesen wird
Code:
//Empfangsteil
uint8_t uart_getc(void)
{
while (!(UCSRA & (1<<RXC))) // warten bis Zeichen verfuegbar
;
return UDR; // Zeichen aus UDR an Aufrufer zurueckgeben
}
void uart_gets( char* Buffer, uint8_t MaxLen )
{
uint8_t NextChar;
uint8_t StringLen = 0;
NextChar = uart_getc(); // Warte auf und empfange das nächste Zeichen
// Sammle solange Zeichen, bis:
// * entweder das String Ende Zeichen kam
// * oder das aufnehmende Array voll ist
while( NextChar != '\n' && StringLen < MaxLen - 1 ) {
*Buffer++ = NextChar;
StringLen++;
NextChar = uart_getc();
}
// Noch ein '\0' anhängen um einen Standard
// C-String daraus zu machen
*Buffer = '\0';
}
//Initialisierungsteil
UCSRB = (1<<TXEN) | (1<<RXEN) | (1<<RXCIE);
UCSRC = (1<<UCSZ1) | (1<<UCSZ0);
UBRRH = ((F_CPU +BAUD*8 )/ (BAUD * 16L) - 1) >>8;
UBRRL = ((F_CPU +BAUD*8 )/ (BAUD * 16L) - 1) & 0xFF;
Der Empfangsteil ist direkt so aus dem UART Tutorial von Mikrocontroller.net übernommen
Lesezeichen