UART Synchron Empfang Mega128

Gast #237990
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 werden mehrere das 8 Bit worte permanent in einer
Endlosschleife alle par
µs.
Ich hoffe Ihr könnt mir weiterhelfen.
MfG Paul
Gast
Das hab ich schon geändert, das ist aber nicht das problem. Das Problem
liegt daran, das der Empfäger nur das Datenwort erkennt, wenn er zu
einem bestimmten Zeitpunkt angeschaltet wird, sonst nicht. Irgendwie
passt das mit dem Handling der UART nicht.
Kann man eigendlich Start und Stopbit der UART deaktivieren?
Gast
Die hilfr mir nicht weiter, ich möchte keine Zeichen senden oder so. Ich
möchte dem Empfänger zu jeder Zeit zuschalten können und er soll ein 8
Bitwort als Startwort erkennen und erst dann die restlichen Daten
empfangen. Das Startwort frage ich mit einer if Anweisung ab, aber wie
gesagt, das funktioniert nur sporadisch wenn es zufällig nach dem
Einschalten empfangen wird.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.