UART Datenempfang

Gast #31828
Hi,

Ich versuche mich gerade mit dem UART anzufreunden. Habe einen 4414 und 
einen 8515 zur Auswahl.
Nun wurde uns folgende Aufgabe gestellt:

Baudrate: 250kBaud

Im Ruhezustand liegt die Datenleitung auf hohem Potential (MARK). Der 
aktive Pegel ist Low (BREAK, SPACE); die Begriffe MARK, SPACE und BREAK 
entstammen der Terminologie serieller Schnittstellen. Die Übertragung 
beginnt mit einem BREAK, der mindestens 88 us Dauer aufweisen soll (2 
Framezeiten). Dieser Break wird als RESET-Signal interpretiert.

Der RESET wird von einem MARK gefolgt, der den Beginn der 
Datenübertragung signalisiert. Dieser MARK soll eine feste Länge von 8 
us nicht unterschreiten.
Im Anschluß hieran werden n+1 Datenbytes gesendet, die die Daten für n 
Kanäle enthalten. Jedes Byte wird von einem Startbit (SPACE) eingeleitet 
und mit zwei Stopbits (MARK) beendet; das Übertragungsformat ist also 
8N2. Man beachte jedoch, daß eine zu sendende 0 als BREAK, eine zu 
sendende 1 als MARK gesendet wird. Das erste gesendete Byte wird als 
Startbyte bezeichnet und hat den festen Wert Null (00h).

Das Problem was nun vorliegt ist nicht die Daten auszuwerten, sondern 
die Erkennung des RESET-Signals mit anschließendem high-Pegel(MARK). 
Denn erst wenn dies korrekt ist kann man ja den UART freigeben.
Des weiteren muß ständig überprüft werden ob dieses RESET-Signal kommt, 
damit bei der Auswertung immer eindeutig ist welches das STARTbyte ist 
und wann Daten kommen.


Wenn also jemand zu diesem Problem eine Antwort weiß so bitte ich diese 
zu posten.
Ich hoffe es sieht jetzt nicht so aus als wolle ich mir keine Arbeit 
machen, aber ich bekomme diese ständige Überprüfung nicht vernünftig 
hin!

ULI
Gast
Die Überprüfung mit FE-Bit reicht zur Starterkennung eines DMX Frames 
vollständig aus. Lediglich beim Sender mußt du dafür Sorgen, daß als 
BREAK min. 88 µs Space gesendet wird und das MAB min. 8 µs breit ist, 
läßt sich aber über Timer leicht lösen. Ebenso die TimeOut-Erkennung > 1 
sec.
Gast
Danke mikki,

leider kann ich mit dem FE Bit nicht sehr viel anfangen, da der UART 
relativ Neuland für mich ist.

Kannst du mir es etwas verdeutlichen und wie eine solche umsetzung zu 
realisieren ist. Vom ablauf her gesehen.

Ach ja ich benötige den UART nur zum empfang nicht zum senden der daten.
Gast
Mit Beginn des Breaksignal, welches der UART ja als Startbit erkennt 
wird der Empfangsbetrieb gestartet. Da ja nun das Stop-Bit nicht an 
entsprechender Stelle empfangen wird, wird im UART Status-Register das 
FE-Bit gesetzt (d.h. min. 10 Bit nacheinander waren Space) also kein 
Datenbyte. Als zusätzliche Sicherung kannst du noch die Überprüfung auf 
Startbyte = 0 (DMX1990 Standard) einbauen.
Gast
Wenn ich dich jetzt richtig verstanden habe brauche ich nur den UART 
starten und wenn das FE-Bit log.1 ist befindet man sich irgendwo im 
RESET-Signal und sobald dann das FE-Bit nicht mehr log.1 ist kommt 
entweder das Startbyte oder die Daten des ersten DMX Kanals.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 23 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.