Hallo,
Code:
UCSRB |= 1<<(TXEN); // UART TX einschalten
UCSRC |= 1<<(URSEL)|(3<<UCSZ0); // Asynchron 8N1
UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF;
DDRA = 0xff; // Test LEDs
PORTA = 0xff;
Das gehört nicht in die Endlosschleife. Die Einstellungen brauchen nur einmal durchlaufen werden.
Der Fehler ist aber etwas komplizierter.
Code:
UBRRH = UBRR_VAL >> 8;
UBRRL = UBRR_VAL & 0xFF;
UCSRB |= 1<<(TXEN); // UART TX einschalten
UCSRC |= 1<<(URSEL)|(3<<UCSZ0); // Asynchron 8N1
So sollte es klappen.
Im Datenblatt steht bei der Beschreibung des Bit URSEL vom Register UCSRC:
The UBRRH Register shares the same I/O location as the UCSRC Register...
Sollte das dann noch nicht funktionieren, schau einmal, ob du eine Optimierung im Compiler eingestellt hast.
Gruß
Jens
Lesezeichen