Forum: Mikrocontroller und Digitale Elektronik UART Problem Atmega128


von Paul Momsen (Gast)


Lesenswert?

Hallo,

ich habe ein Problem mit der Kommunikation zweier Atmega128 über UART1
(Unidirektional). Ich kann die Daten senden, aber nicht fehlerfrei
empfangen. Die UART ist syncron mit einer Datenrate von 115200 Bit/s
initialisiert. Die Atmegas laufen mit einem externen Quarz mit 13.824
MHz.

über
uint8_t Usart_Rx(void)
{
    while (!(UCSR1A & (1<<RXC)));
    return UDR1;
}

frage ich ab ob ein Zeichen verfügbar ist, ist das der Fall wird das
Zeichen, was im diesem Fall ein 8 Bitwort ist verglichen und bei
übereinstimmung ein Portpin gesetzt.

In der Main rufe ich die Funktion
Usart_Rx(); auf und schreibe das Wort dann in data:
data = UDR1;

Das Programm muss in der Whileschleife hängen, da vermutlich RXC nicht
gesetzt wird. deaktiviere ich den Funktionsaufruf Usart_RX(); wird das
8 Bitwort empfangen und der Port gesetzt, allerdings nur sporadisch
also mit hoher Fehlerrate.
gesendet wird das 8 Bitwort permanent in einer Endlosschleife alle par
µs.
Ich hoffe Ihr könnt mir weiterhelfen.
MfG Paul

von Paul Momsen (Gast)


Lesenswert?

Anmerkung:

ich möchte mehrere Datenworte hintereinander senden, damit tritt der
beschriebene Effekt auf.
Wenn ich nur ein 8 Bit Wort sende funktioniert das.

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.