Forum: Mikrocontroller und Digitale Elektronik DMX Empfang


von alex (Gast)


Lesenswert?

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

von Sebastian (Gast)


Lesenswert?

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

von Hendrik (Gast)


Lesenswert?

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

von alex (Gast)


Lesenswert?

Hi Hendrik,

das ist genau das, was ich gesucht habe.

Vielen Dank

von Michael Wilhelm (Gast)


Lesenswert?

@ 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

von Hendrik (Gast)


Lesenswert?

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

von Michael Wilhelm (Gast)


Lesenswert?

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

von Hendrik (Gast)


Lesenswert?

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!!

von mmerten (Gast)


Lesenswert?

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.

von Michael Wilhelm (Gast)


Lesenswert?

@ 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

von Hendrik (Gast)


Lesenswert?

@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
Noch kein Account? Hier anmelden.