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
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.
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.
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.
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.
Das 1. fehlerfreie Byte nach einem FE ist immer das Startbyte und ist bei Dimmer-Daten immer 0
Vielen Dank das werde ich dann mal versuchen. Machst du selber etwas mit DMX oder woher kommt es dass du darüber bescheid weißt?? Uli
@uli schau dir den Beitrag an und folge den Anweisungen: http://www.mikrocontroller.net/forum-extern/read-5-29075.html
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.