www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DMX-Signal empfangen


Autor: Heiko Thole (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mmerten (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Heiko Thole (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mmerten (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Kai M. Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Heiko Thole (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kai M. Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mmerten (Gast)
Datum:

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

Autor: Heiko Thole (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Kai M. Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Heiko Thole (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Kai M. Tegtmeier (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.