Forum: Mikrocontroller und Digitale Elektronik DMX-Signal empfangen


von Heiko Thole (Gast)


Lesenswert?

Hallo ihr.

Ich bin dabei mit nem Mega8 ein DMX-Signal auszuwerten.
Das klappt soweit auch alles ganz gut.
Doch ein Problem gibts noch: Laut Norm können die Marks bis zu eine
Sekunde lang sein. Wenn ich mal davon ausgehe, dass alle 512 Kanäle
übertragen werden, muss ich evtl. bis zu 513 Sekunden auf ein Reset
warten um dann evtl. einen Fehler auszugeben.
Eine Überlegung war, die Zeit zwischen zwei Frames zu messen und dann
die Zeit hoch zurechen. Doch es kann ja vorkommen, dass die Marks
immer
unterschiedloch sind => schlechte Lösung.
Hat evtl. einer schon mal so ein Problem gelöst?

MfG
Heiko

von mmerten (Gast)


Lesenswert?

Falsch gerechnet schau dir nochmal die DMX512 Norm an. Max. Framelänge
ist 1 Sekunde, d.h. min. 1 x pro Sekunde muß mindestens 1 Rahmen
bestehende aus BREAK, MAB und Startcode übertragen werden. Die Zeiten
zwischen den einzelnen Datenbytes dürfen MARK unterschiedlicher Länge
sein oben so am Ende des Rahmens, jedoch darf die Rahmenlänge 1 s nicht
übersteigen.

von Heiko Thole (Gast)


Lesenswert?

Hallo.

Ich habe mir die infos von der VPLT Homepage besorgt (siehe:
http://www.vplt.org/aklicht/dmx512/dmx512.htm ).
Dort steht für (8) uns (9) jeweils bis zu einer Sekunde. Dann habe ich
das so verstanden, dass zwischen jedem Frame bis zu einer Sekunde Pause
sein darf.
Wenn ich dich richtig verstanden habe, schreibst du, dass ein Packet
(bestehend aus bis zu 512 Frames) maximal eine Sekunden dauern darf.
Was ist jetzt korrekt? Hast du evtl. eine Internetseite oder ein PDF in
dem das genau drinsteht?

MfG
Heiko

von mmerten (Gast)


Angehängte Dateien:

Lesenswert?

Da hast du ein wenig missverstanden die BREAK to BREAK time ist mit max.
1 Sekunde definiert, unabhängig davon wieviel Kanäle das Datenpaket
enthält. Im neuen DMX512/2000 Normenentwurf ist auch die min. BREAK to
BREAK Time mit 1,x ms definiert. Vielleicht schafft ja der Anhang
Aufklärung.

von Kai M. Tegtmeier (Gast)


Lesenswert?

@Heiko Thole
Hallo!

Ich versuche auch zur Zeit, ein DMX-Signal zu empfangen, bin aber noch
nicht wirklich weitergekommen. Würdest Du eventuell deinen Sourcecode
zum Analysieren zur Verfügung stellen?

Viele Grüße
Kai M. Tegtmeier

von Heiko Thole (Gast)


Lesenswert?

Hallo Kai.

Woran hapert es denn bei dir?
Vielleicht kann ich dir ja auch so ein paar Tips geben.
(Mein Code ist ziemlich verschachtelt und besteht aus mehreren
Modulen)
MfG
Heiko

von Kai M. Tegtmeier (Gast)


Lesenswert?

Hallo, Heiko!

Bei mir hapert es daran, daß der Controller sich anscheinend nicht mit
dem DMX-Signal synchronisieren kann. Mal erkennt er den Break nicht,
dann wiederum den MAB nicht. Mich würde vor allem interessieren, ob Du
den eingebauten UART zum Empfang benutzt hast oder anderweitig
vorgehst? Ich habe die Variante gewählt, den Microcontroller permanent
einen Eingang überwachen zu lassen und das Signal mit Timern
interruptgesteuert zu überprüfen. Geschrieben habe ich den Sourcecode
in Codevision C.

MfG
Kai

von mmerten (Gast)


Lesenswert?

Alles viel zu viel Aufwand bei normalen DMX Receivern. FE-Bit im UART
Statusregister und Startcode auf 0 testen, fertig.

von Heiko Thole (Gast)


Lesenswert?

Genau so mach ich das auch.
Ich lass dann noch ein paar Zähler mitlaufen um evtl. abzubrechen wenn
kein Signal anliegt.

Gruß Heiko

von Kai M. Tegtmeier (Gast)


Lesenswert?

Mit dieser Methode habe ich noch gar keine Erfahrungen gemacht. Wie
müßte ich denn da vorgehen, um den UART einzurichten und auszuwerten?

Grüße
Kai Markus

von Heiko Thole (Gast)


Angehängte Dateien:

Lesenswert?

Lies dir am besten mal die entsprechenden Seiten im Datenblatt durch.
Im Anhang sind noch meine UART-Rotienen (das meiste kommt aus dem
Datenblatt).

Gruß Heiko

von Kai M. Tegtmeier (Gast)


Lesenswert?

... Vielen Dank schon mal für die Hinweise. Werd mich jetzt mal
intensivst mit dem Datenblatt beschäftigen und etwas experimentieren.
Mein Sourcecode ist doch wesentlich länger und ineffektiver... Wenns
denn hängt (oder geht?!?) melde ich mich wieder..

Gruß
KMT

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.