mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DMX Daten versenden


Autor: Emanuel J. (e-sound)
Datum:

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

Autor: Dussel (Gast)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

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

Autor: David .. (david1)
Datum:

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

Autor: Harald (Gast)
Datum:

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

Autor: Emanuel J. (e-sound)
Datum:

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

Autor: Harald (Gast)
Datum:

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

Autor: Dussel (Gast)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

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

Autor: Martin P....... (billx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.hoelscher-hi.de/hendrik/light/profile.htm

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

Autor: Emanuel J. (e-sound)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

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

Autor: Lehrmann Michael (ubimbo)
Datum:

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

Autor: Emanuel J. (e-sound)
Datum:

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

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.