Forum: Mikrocontroller und Digitale Elektronik UART Probleme im AVR


von Owen S. (senmeis)


Lesenswert?

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
von Petrov (Gast)


Lesenswert?

Nur wenn Du auf UDR0 schreibst wird die Sendefunktion gestartet.

Vielleicht hast Du an Deinem Terminalprogramm "local echo" eingestellt !

Gruß peter
von Noname (Gast)


Lesenswert?

Das ist nicht normal.

Entweder Du hast an Deinem Terminalprogramm "Local Echo" eingestellt 
oder der Code den Du uns nicht gezeigt hast, sendet ihn, obwohl Du etwas 
anderes annimmst, doch zurück.
Also:
Einstellungen des Terminalproggrammes prüfen
falls das negativ ausfällt, den kompletten Code, reduziert um alles 
unnötige, aber so das der Fehler noch auftritt, posten.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.