mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DMX Protokoll mit 8-Bit Atmel Prozessoren (ATmega1284P o.ä.)


Autor: Fire H. (fireheart)
Datum:

Bewertung
-2 lesenswert
nicht lesenswert
Hallo Forum

Ich möchte gerne im Bereich Lichttechnik (DMX Protokoll) einen "DMX 
Injektor" bauen, d.h. von einem Lichtmischpult über USART0 einen DMX 
Stream empfangen, bestimmte Bytes durch andere ersetzen und über USART1 
raus zu den "Feldgeräten" schicken.
Nun, ich habe mich schon ein wenig über DMX eingelesen und festgestellt, 
dass hier offenbar doch ein paar Tricks angewandt werden müssen. Wie 
mache ich z.B. das 8µs MARK Signal zum Starten (Timer? NOP Schleife?) 
und wie empfange ich dieses Signal am besten?

Gibt's hierzu gute Links, wo sowas schon mal - gut dokumentiert - mit 
ATmega's in Assembler gemacht wurde?

Grüße
FireHeart

Autor: Chris K (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gibt genug dazu zu finden. Hab selber hier schon Beispiele für nen xmega 
gepostet. Klassiker ist auch hölscherhi oder uli radig für Beispiele zu 
regulären megas. Sprich, wer sucht der findet

Autor: c-hater (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Fire H. schrieb:

> Nun, ich habe mich schon ein wenig über DMX eingelesen und festgestellt,
> dass hier offenbar doch ein paar Tricks angewandt werden müssen. Wie
> mache ich z.B. das 8µs MARK Signal zum Starten (Timer? NOP Schleife?)
> und wie empfange ich dieses Signal am besten?

Das geht alles mit der UART alleine. Man muss bloß verstehen, wie sie 
funktioniert und entsprechend benutzen.

Sprich, für den Sender: Konfiguriere UART auf 9N1 und knapp die Hälfte 
von 250kBaud (250*10/2*11), sende eine Null, "warte" auf das Ende der 
Übertragung, dann konfiguriere um auf 8N2 und 250kBaud und sende deine 
Daten.

Die Startsequenz ergibt sich dann aus Sicht des Empfängers mit der 
regulären Bitrate als Mark mit 22 Bitlängen gefolgt von einem Space mit 
etwas über 2 Bitlangen.

Der Empfänger bleibt konstant auf 8N1 mit 250kBaud. Er empfängt dann den 
Paketstart als Null mit gesetztem FE-Fehlerflag, danach einfach so ganz 
regulär die Daten.

Die zur Umsetzung nötigen Details der UART-Konfiguration entnimmt man 
einfach aus dem Datenblatt, dazu gibt's das nämlich.

Autor: Zilog (Gast)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Wieso schickst Du nicht gleich vom Lichtmischpult die richtigen Daten?

Autor: Fire H. (fireheart)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum

>Sprich, für den Sender: Konfiguriere UART auf 9N1 und knapp die Hälfte
>von 250kBaud (250*10/2*11), sende eine Null, "warte" auf das Ende der
>Übertragung, dann konfiguriere um auf 8N2 und 250kBaud und sende deine
>Daten.

Das ist natürlich ganz schlau gelöst. Genau solche Tricks habe ich mir 
irgendwie erwartet und bin auf die Schnelle nicht selber drauf gekommen.

Danke
FireHeart

Autor: Fire H. (fireheart)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum

>Die zur Umsetzung nötigen Details der UART-Konfiguration entnimmt man
>einfach aus dem Datenblatt, dazu gibt's das nämlich.
Diese Details wären ja nicht das Problem gewesen. Ich hab das Datenblatt 
sogar in ausgedruckter Version zuhause ;-)

>Wieso schickst Du nicht gleich vom Lichtmischpult die richtigen Daten?
Weil das Lichtmischpult zwar ein smartes Ding ist, das eine Menge Blöcke 
und Kanäle speichern kann und die auch noch musikgesteuert in eine 
Chase-Sequenz verwandeln kann, aber natürlich nicht das, was ich gerne 
hätte.

Mein Projekt sollte saubere analoge, aktive Bandfilter für Bässe, tiefe 
Mitten, hohe Mitten, Höhen bekommen und letztendlich 8 Signale (direkt 
vom Audiomischpult über Kabel und nicht über Mikrofon) wie Pegel Summe, 
Pegel Links, Pegel Rechts, Pegel Stereosignal, Pegel Bass, Pegel 
TiefMitte, Pegel Hochmitte und Pegel Höhen auslesen können und bestimmte 
Lampen dann als VU-Meter Gruppe oder als Lichtorgel, oder oder oder ... 
ansteuern können... und das können die handelsüblichen Lichtmischpulte 
eben nicht. Da diese aber wiederum schöne Schieberegler und viel anderen 
Firlefanz besitzen, möchte ich mein Gerät auch nicht völlig autark 
betreiben, um mir all diese Funktionen einzusparen.

...und wir würden uns alle nicht in dieser Gruppe aufhalten, wenn wir 
bloß fertige Geräte kaufen würden.

Grüße
FireHeart

Autor: Ben B. (Firma: Funkenflug Industries) (stromkraft)
Datum:

Bewertung
-1 lesenswert
nicht lesenswert
Sowas hatte ich vor einiger Zeit mal angefangen, wollte aber deutlich 
mehr als das. Mal sehen, vielleicht baue ich das noch wenn ich 
irgendwann mal Lust habe, eine SD-Karte mit einem AVR (oder dann größer) 
auszulesen sowie genug C oder C++ gelernt habe, um das PC-Programm zu 
schreiben, was die Daten für das Gerät aufbereiten kann.

Autor: D. Z. (zoundgalaxy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,

eventuell solltest du mal über Daslight usw nachdenken. Da gibt es DMX 
Programme, die das schon komplett fertig machen. Nur noch mit einem 
Merker dann Pult und PC verbinden und ab geht der Peter. So hatte ich es 
vor Jahren mal gemacht.

Je bedarf ne Midi Clock und eventuell ein FaderBoard.... dann ist der PC 
wie das Pult, blos 1000 fach besser aber Geschmacksache.

#grandma_ist_und_ bleibt_grandma

Autor: Fire H. (fireheart)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum

Was ich so gefunden hab, gibt's offenbar eine DMX_OUT_LIB.ASM und eine 
DMX_IN_LIB.ASM (oder zumindest so ähnlich), die ich aber nirgends zum 
Download finden konnte. Hat da jemand einen Link?

Grüße
FireHeart

Autor: Sebastian R. (sebastian_r569)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau dir mal die DMXSerial-Lib von Matthias Hertel an:
https://github.com/mathertel/DMXSerial/blob/master/src/DMXSerial.cpp

Das müsste man eigentlich sehr einfach in normales C und für andere 
Controller portieren können. Auch die Adaption auf 2 UARTs ist recht 
übersichtlich.

Autor: H.Joachim S. (crazyhorse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fire H. schrieb:
> Mein Projekt sollte saubere analoge, aktive Bandfilter für Bässe, tiefe
> Mitten, hohe Mitten, Höhen bekommen

Das solltest du dir noch mal überlegen. Solche Sachen bekommt man viel 
besser und vor allem flexibler digital hin. Wird allerding auf einem AVR 
nichts gescheites, da brauchts bisschen mehr Rechendampf.

Autor: Sebastian R. (sebastian_r569)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fire H. schrieb:
> und das können die handelsüblichen Lichtmischpulte
> eben nicht

DMXControl 2 könnte es mit dem Audio-Analyzer. Inkl. Signal vom Line in.

Der Grund, weshalb Lichtpulte das nicht können: Niemand, der ein 
Lichtpult nutzt, möchte wildes Lichtorgel-Geflacker haben. Sobald es 
jemanden gibt, der das Licht bedient, hat man damit auch jemanden, der 
für Chaser und Effekte die Geschwindigkeit korrekt einstellen kann. 
Sound-to-Light ist ab einem gewissen Punkt extrem verpönt.

Autor: Fire H. (fireheart)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum


>Das solltest du dir noch mal überlegen. Solche Sachen bekommt man viel
>besser und vor allem flexibler digital hin. Wird allerding auf einem AVR
>nichts gescheites, da brauchts bisschen mehr Rechendampf.
Ich hab vor zwei Jahren mal genau diese analogen Filter schon für ein 
32LED Lichteffektgerät gebaut und könnte (vermutlich) einen Großteil des 
Layouts (dessen Entwicklung für mich nämlich die fadeste Arbeit ist) 
kopieren.
Da ich beruflich sehr viel programmiere, interessiert mich die Software 
bei meinen Selbstbauprojekten eher nicht....da will ich was zum Löten 
und Angreifen haben. Außerdem stimmt der Einwand, dass der Atmel da 
etwas zu schwach sein könnte.

>Der Grund, weshalb Lichtpulte das nicht können: Niemand, der ein
>Lichtpult nutzt, möchte wildes Lichtorgel-Geflacker haben. Sobald es
>jemanden gibt, der das Licht bedient, hat man damit auch jemanden, der
>für Chaser und Effekte die Geschwindigkeit korrekt einstellen kann.
>Sound-to-Light ist ab einem gewissen Punkt extrem verpönt.
Mein oben angeführtes 32LED Projekt hat bis jetzt alle Besucher 
begeistert, ich lasse mich diesbezüglich aber gerne belehren. Auf jeden 
Fall würde die Software auch sanfte Rampen bekommen, um "wildes 
Geflacker" zu vermeiden.

Grüße
FireHeart

Autor: Sebastian R. (sebastian_r569)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fire H. schrieb:
> ich lasse mich diesbezüglich aber gerne belehren

Ich sag ja nicht, dass es nicht nett aussehen oder funktionieren kann. 
Nur wer ein Lichtpult nutzt, nutzt kein S2L, daher unterstützen Pulte 
das nicht. Das meinte ich damit.

Knapp über Lichtorgel-DJ geht es dann schon mit der manuellen 
Lichtsteuerung los. Danach kommt erstmal sehr lange gar nichts und dann 
kommen timecodegesteuerte Lichtshows, die man auch irgendwie als Sound 
to Light sehen kann.

Ich nutze für 8 LED-PARs, 2 Moving Heads und ein bisschen Kleinkram 
DMXControl mit einem Novation Launchpad als Midi-Controller. Die 
wichtigte Funktion ist der Tap-Button, um die Geschwindigkeit der Chaser 
und Effekte vorzugeben.

: Bearbeitet durch User
Autor: c-hater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
H.Joachim S. schrieb:

> Das solltest du dir noch mal überlegen. Solche Sachen bekommt man viel
> besser und vor allem flexibler digital hin.

Ja.

> Wird allerding auf einem AVR
> nichts gescheites, da brauchts bisschen mehr Rechendampf.

Ach watt. Die "Qualität", die man für eine Lichtsteuerung der 
angedachten Komplexität benötigen würde, schafft ein AVR8 noch ziemlich 
entspannt. Sogar ein Tiny (ohne Hardware-Multiplikation!), dann 
allerdings mit einigen Einschränkungen bezüglich der Flexibilität.

Autor: Fire H. (fireheart)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ach watt. Die "Qualität", die man für eine Lichtsteuerung der
>angedachten Komplexität benötigen würde, schafft ein AVR8 noch ziemlich
>entspannt. Sogar ein Tiny (ohne Hardware-Multiplikation!), dann
>allerdings mit einigen Einschränkungen bezüglich der Flexibilität.

Mein bislang kühnstes Projekt war ein ATmega1284 mit 20MHz befeuert, der 
mit etwa 30kHz Audio Signale eingelesen hat, damit dann 
Chorus/Flanger/Echo/Pitch Shift  (nicht gleichzeitig) gemacht und über 
einen parallelen 2-kanal DA Wandler (Stereo) wieder ausgegeben. Das ging 
eigentlich ganz gut, aber man musste sich in den Interrupts schon die 
Assemblerbefehle aussortieren, um mit dem Timing noch zurande zu kommen.

Leider liegt das Ding jetzt auch irgendwo herum, weil ich irgendwann 
keine Lust mehr hatte, weitere Effekte zu programmieren. Diesbezüglich 
wäre ja der Spin Semiconductors FV-1 ein interessantes Teil.

FireHeart

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.

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