mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DMX Empfang


Autor: alex (Gast)
Datum:

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

Autor: Sebastian (Gast)
Datum:

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

Autor: Hendrik (Gast)
Datum:

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

Autor: alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Hendrik,

das ist genau das, was ich gesucht habe.

Vielen Dank

Autor: Michael Wilhelm (Gast)
Datum:

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

Autor: Hendrik (Gast)
Datum:

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

Autor: Michael Wilhelm (Gast)
Datum:

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

Autor: Hendrik (Gast)
Datum:

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

Autor: mmerten (Gast)
Datum:

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

Autor: Michael Wilhelm (Gast)
Datum:

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

Autor: Hendrik (Gast)
Datum:

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

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.