Forum: Mikrocontroller und Digitale Elektronik DMX Daten versenden


von Emanuel J. (e-sound)


Lesenswert?

Hallo Leute

Ich habe lange gesucht & gegoogelt, bin aber auf kein eindeutiges 
Ergebnis gekommen.

Und zwar will ich DMX-Daten versenden.
Zunächst mal die Frage, geht das mit nem PIC?
Ich weiß dass DMX auf RS485 basiert, ich kenne aber nur AVRs die diesen 
Bus unterstützen.
Was mir noch gar nicht klar ist ist die Programmierung. Wie versendet 
man am einfachsten DMX-Daten?
Ich kenne das Protokoll von einem DMX-Bus und alles was dazugehört, 
jedoch habe ich keinen Plan wie man das umsetzen kann. Ich habe viel 
Erfahrung mit PICs und sonstiger Hardware, jedoch nicht so viel beim 
programmieren und mit AVRs.
Am einfachsten helft ihr mir mit Codebeispielen. Bitte nur in der 
Sprache C bzw. C++.
Gibt´s vielleicht ne Bibliothek oder sonstiges für DMX? Das wäre 
natürlich super.

Schonmal jetzt danke für eure Antworten.

MfG

von Dussel (Gast)


Lesenswert?

Du brauchst einen RS-485-Wandler. Den schließt du dann an den Controller 
an und gibst die Daten über UART aus. Für Break und Mark after break 
muss man ein bisschen tricksen. Bei einem Hardware-UART muss man den 
entsprechenden Pin auf Ausgang stellen und lange genug auf Low und dann 
auf High stellen. Danach können die Bytes ausgegeben werden.

von Falk B. (falk)


Lesenswert?

@  Emanuel Jörgner (e-sound)

>Und zwar will ich DMX-Daten versenden.
>Zunächst mal die Frage, geht das mit nem PIC?

Mit DEM PIC? Ach ja, gibt ja nur einen, und der ist schlecht ;-)
Siehe Netiquette.


>Was mir noch gar nicht klar ist ist die Programmierung. Wie versendet
>man am einfachsten DMX-Daten?

Einfach raushauen, die Daten.

>Ich kenne das Protokoll von einem DMX-Bus und alles was dazugehört,
>jedoch habe ich keinen Plan wie man das umsetzen kann.

Hmm.

> Ich habe viel
>Erfahrung mit PICs und sonstiger Hardware, jedoch nicht so viel beim
>programmieren und mit AVRs.

Kleiner Widerspruch in sich. Hör auf solche Märchen zu erzählen.

>Am einfachsten helft ihr mir mit Codebeispielen. Bitte nur in der
>Sprache C bzw. C++.
>Gibt´s vielleicht ne Bibliothek oder sonstiges für DMX? Das wäre
>natürlich super.

Google ist dein Freund.

>Schonmal jetzt danke für eure Antworten.

Gern geschehen.

MFG
Falk

von David .. (david1)


Lesenswert?

Wo wir grad beim Thema sind, hat mal jemand probiert DMX mit nem UART 
auszuwerten?

Bzw mit was für ner Baudrate läuft das?

von Harald (Gast)


Lesenswert?

>hat mal jemand probiert DMX mit nem UART auszuwerten?

Wie denn sonst? (Ich meine vor allem sinnvoll!)

Baudrate siehe DMX Spec. = 250 kBaud = Bitzeit 4µs

von Emanuel J. (e-sound)


Lesenswert?

Dussel schrieb:
> Du brauchst einen RS-485-Wandler. Den schließt du dann an den Controller
> an und gibst die Daten über UART aus.

das is ein RS485-Tranceiver, sowas wie der LTC485, richtig?
Ich dachte mit nem PIC kann man kein UART ausgeben? Wie soll das dann 
gehn? oder liege ich da falsch?

> Für Break und Mark after break muss man ein bisschen tricksen. Bei einem
> Hardware-UART muss man den entsprechenden Pin auf Ausgang stellen und
> lange genug auf Low und dann auf High stellen. Danach können die
> Bytesausgegeben werden.

Verstehe. Ich würde das mit Timer machen, gibt es eine bessere 
Möglichkeit? (nein, ich bin kein profi-Programmierer)

Wie soll ich dann die DMX-Daten am besten versenden? Kann man sie 
einfach per Array versenden (ich laß da mal was)?

Wie gesagt, am besten hilft man mir mit Code-Beispielen.

Danke für die Antwort

@ Falk: ein bisschen unhöflich, findest du nicht?

von Harald (Gast)


Lesenswert?

Emanuel Jörgner schrieb:
> Verstehe. Ich würde das mit Timer machen, gibt es eine bessere
> Möglichkeit? (nein, ich bin kein profi-Programmierer)

Doch!
Baudrate auf <= 100kbit stellen, mit dieser Baudrate eine Null senden. 
Dieses Nullbyte wird beim Empfänger als Reset interpretiert. Baudrate 
wieder auf 250kbit stellen, noch eine Null senden und anschließend 
1..512 Datenbytes. Fertig.
Achtung Falle: Vor Rückstellung der Baudrate sicherstellen, dass das 
Byte mit niedrigerer Baudrate komplett gesendet wurde.

von Dussel (Gast)


Lesenswert?

>das is ein RS485-Tranceiver, sowas wie der LTC485, richtig?
Ja, das stimmt. Oder MAX485, das ist wohl eher ein Standardbauteil, 
glaube ich.

>Ich dachte mit nem PIC kann man kein UART ausgeben? Wie soll das dann
>gehn? oder liege ich da falsch?
Wenn der kein Hardware-UART hat, dann musst du das wohl mit der Software 
machen, über einen Pin mit der passenden Geschwindigkeit die Byte 
ausgeben, also immer je nach dem Bit, das du gerade senden willst, auf 
High oder Low schalten.

>Kann man sie einfach per Array versenden
Ja, das geht. Dann musst du den ersten Wert aus dem Array senden, 
warten, bis er vollständig gesendet wurde, dann den zweiten Wert und so 
weiter. Aber denk daran, dass das erste Byte 0 sein muss. Das zweite 
gesendete Byte ist also für den ersten Kanal.

von Falk B. (falk)


Lesenswert?

@  Emanuel Jörgner (e-sound)

>@ Falk: ein bisschen unhöflich, findest du nicht?

Keine Sekunde. Solche naseweisen Typen wie du brauchen HARTEN 
Realitätskontakt. Nenn mich Therapeut oder was auch immer.

von Martin P. (billx)


Lesenswert?

http://www.hoelscher-hi.de/hendrik/light/profile.htm

nicht pic aber avr ....c ist doch gut portierbar ... oder nutz nen avr

von Emanuel J. (e-sound)


Lesenswert?

Hey, danke leute, jetzt ist mir schon einiges klarer geworden!

Auf der Seite war ich schonmal, jedoch schaute ich noch nicht unter 
/Ressources, da sind nämlich Codebeispiele und Beschreibungen für die 
Programmierung.
Obwohl diese für AVRs sind kann ich ich mir das mit dem Code trotzdem im 
großen und ganzen herleiten.

Ich probier jetzt einfach mal so lange herum, bis was geht.
Mit diesem Weg wird mir wohl am meisten klar werden.

THX, Emanuel

von Falk B. (falk)


Lesenswert?

@  Emanuel Jörgner (e-sound)

>Ich probier jetzt einfach mal so lange herum, bis was geht.
>Mit diesem Weg wird mir wohl am meisten klar werden.

Großer Irrtum. DENKEN heisst das Zauberwort.

von Lehrmann M. (ubimbo)


Lesenswert?

Falk Brunner schrieb:
> @  Emanuel Jörgner (e-sound)
>
>>Und zwar will ich DMX-Daten versenden.
>>Zunächst mal die Frage, geht das mit nem PIC?
>
> Mit DEM PIC? Ach ja, gibt ja nur einen, und der ist schlecht ;-)
> Siehe Netiquette.

Warum sollte der PIC schlecht sein ? NETIQUETTE ?!

von Emanuel J. (e-sound)


Lesenswert?

@ Falk: Ich glaub nicht dass du das böse meinst, aber spar dir einfach 
deine Antworten; damit spamst du nämlich nur den Beitrag zu ;-)
mfg

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.