Hallo, ich bin gerade dabei ein DMX Empfänger zu programmieren. Ich bekomme auch schon DMX Daten rein. Doch wie erkenne ich den Start einer neuen Sequenz. Ich habe ja als erstes einen Reset gefolgt von einer "0". mfg Alex
Hallo Alex, im Prinzip einfach: Du wartest auf einen Frame-Error. Jedes Reset bedeutet erstmal einen Frame Error. Dann fängst Du das nächste Byte ab, ist es "0", ist es mit recht hoher Warscheinlichkeit das Startbyte gewesen. Funktioniert zu 99,9% und für die 0,01% Rest: Das nächste DMX-Signal lässt ja nur ein paar ms auf sich warten. Mit was für einem uC arbeitest Du? Viel Erfolg, Sebastian
ich hoffe, der link hilft ein wenig weiter: http://www.hoelscher-hi.de/hendrik/light/ressources.htm Code ist AVR-Assembler. Für C gibt's den Semitone und die Suche sollte mittlerweile auch äußerst ergiebig sein. Hendrik
@ alex, hol dir trotzdem von woanders noch mal die DMX-Spezifikationen. Die auf obiger Homepage angegebenen Werte sind teilweise falsch und/oder zu alt. MW
Ich beziehe mich auf BSR E1.11 Revision3 der USITT. Bei der Breaklength müssen >88µs eingehalten werden - dies werde ich demnächst korrigieren. Der Code enthält diesen Fehler nicht. Ansonsten wäre eine konstruktive Kritik evtl. sinnvoller als ein pauschales 'falsch / zu alt'... Hendrik
Modernere Geräte sollten nicht mehr nach dem DMX 512/1990 programmiert werden, sondern nach dem überarbeiteten (und abwärtskompatiblen) Standard DMX 512/2000. MW
Ganz Deiner Meinung - rate mal wovon das genannte Dokument handelt ;-) Nenn bitte Deine Quelle / Revision - vielleicht bin ich ja wirklich inzwischen veraltet. Deine Angaben sind zZ. ein wenig wertlos. (Falls es hilft: Mein Dokument stammt von Oct.2000) Den Fehler habe ich soeben gefixt. Falls jmd. noch etwas finden sollte: bitte mailen/posten! (Ich möchte keine Desinformationen verbreiten - ich benötige allerdings die jeweilige Quellenangabe, damit ich nichts 'verschlimmbesser'...) Hendrik @MW: Wieso schreibst Du nicht einfach, dass nach DMX512-A Rev.3 der Space eines Breaks >88µs haben muss statt 80? Das wäre zukünftig ein wenig effektiver - trotzdem vielen Dank!!
Ging doch hier hier nur um einen reinen DMX Empfänger. Da ist doch letztenendlich kein Unterschied. Lediglich ob man beim Empfänger auch ein MAB < 8 µs als gültig akzeptieren sollte, darüber kann man geteilter Meinung sein. Lediglich beim TX hat man das Timing etwas "entspannter" gestaltet um auch langsame bzw. preiswerte Empfänger zu ermöglichen.
@ Hendrik, ich habe deinen Namen nicht mit der Homepage verbunden, sonst hätte ich dich direkt angesprochen. Was mir jetzt noch aufgefallen ist: die Anbindung des DMX-Kabel-Schirms direkt an die Schaltungsmasse ist nicht ok. Diese Informationen wurden von der USITT direkt von den RS 485 Specs abgeleitet. Das Thema wird in der von dir zitierten Datei BSR E1.11 Revision3 nur flüchtig behandelt. Nun denn, wenn mir noch was auffällt, lass ich es dich wissen. MW
@MW: Du hast völlig Recht - der Schirm sollte senderseitig geerdet werden. GND und Schirm zu verbinden macht die Potentiale unübersichtlich (Gehäuse...) @merten: auch das stimmt; Allerdings war halt ein Fehler im Text, der unter anderen Umständen Ärger hätte verursachen können. Von daher bin ich dankbar, dass mw dies aufgefallen ist... Demnächst plane ich, den code so umzuschreiben, dass er sich auch problemlos in C-Apps einsetzen lässt. Dann müssen sich andere nicht mehr über die Auslastung/Zeitknappheit den Kopf zerbrechen ;-)
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.