Hi, ich habe eine merkwürdige Erscheinung der UART-Schnittstelle im AVR gefunden. Nach der Initialisierung habe ich ein Zeichen im Terminal an den AVR gesendet. Der AVR sendet aber dieses Zeichen automatisch zurück, obwohl die UART-Routine noch nicht gestartet wird. Hier die Initialisierung:
1 | void USART_Init(unsigned int baudrate) |
2 | {
|
3 | // Set baud rate
|
4 | UBRR0H = (unsigned char)(baudrate>>8); |
5 | UBRR0L = (unsigned char)baudrate; |
6 | |
7 | // Enable 2x speed
|
8 | UCSR0A = (1<<U2X0); |
9 | |
10 | // Enable receiver and transmitter
|
11 | UCSR0B = (1<<RXEN0)|(0<<TXEN0)|(0<<RXCIE0)|(0<<UDRIE0); |
12 | |
13 | // Async. mode, 8N1
|
14 | UCSR0C = (0<<UMSEL0)|(0<<UPM00)|(0<<USBS0)|(3<<UCSZ00)|(0<<UCPOL0); |
15 | }
|
Ist das normal? Im AVR besitzten der Sender und der Empfänger das selber Register UDR0. Ist das die Ursache? Danke Owen