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
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.
@ 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
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?
>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
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?
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.
>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.
@ 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.
http://www.hoelscher-hi.de/hendrik/light/profile.htm nicht pic aber avr ....c ist doch gut portierbar ... oder nutz nen avr
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
@ 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.
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 ?!
@ 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.