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
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.
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
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.
@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
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
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
Alles viel zu viel Aufwand bei normalen DMX Receivern. FE-Bit im UART Statusregister und Startcode auf 0 testen, fertig.
Genau so mach ich das auch. Ich lass dann noch ein paar Zähler mitlaufen um evtl. abzubrechen wenn kein Signal anliegt. Gruß Heiko
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
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
... 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.