ich bin auf der suche nach einer software die das DMX signal einliest und den wert von einem Kanal, der mit einem Jumper eingestellt wird über die UART ausgiebt... .. optimal wäre wenn gleich mehrere Kanäle ausgelesen werden könnten. Auf DMX4All.de habe ich eine Platine geshen die das signal binär ausgiebt was auch noch interessant wäre. vielleciht hat ja einer von euch eine DMX-erkennung am laufen und kann mir das programm grade so umändern dass der wert ausgegeben wird, da ich gelesen habe das die Basic-Sprache nicht grade das beste für die DMX-verarbeitung ist und ich leider keine ander behersche. Thx Timo
thx aber die seite kenn ich auch schon das problem ist dass keine PWM oder so brauch sonden einfach nur die werte zudem wäre mir ein atmega8 am leibsten (wird wahrscheinlich auch bei dmx4all verbaut) aber schon mal danke ...
Na, wenn Du die Seite kennst, dann müsstest Du ja auch die Technik kennen: einlesen der DMX-Bytes über UART. Ist ja nur der RS485-Baustein vorgeschaltet, sonst nix. Die Baudrate muss beim entsprechenden Quarz auf 1Mbit eingestellt werden, dann funktioniert's tadellos. Ich würde beim mega8 16MHz empfehlen, damit noch genug Code zwischen den empfangenen Bytes ausgeführt werden kann.
Habe ein COEMAR DMX-Lichtpult, das fährt mit 1 MHz => 1 Mbit! Mit entsprechender Einstellung am AVR funktioniert's auch!
Hi nochmal, Natürlich funktioniert die Übertragung, wenn mit 1 MBit gesendet wird und der Empfänger auf 1 MBit eingestellt wird. Wäre ja traurig, wenn nicht ;-) Kann es sein, dass die 1MHz nur dann verwendet werden (können), wenn auch Coemar Fixtures verwendet werden? Fakt ist, DMX (im aktuellen Standard) verwendet 250kBit. Wollte jetzt eigentlich von der USITT was posten, allerdings sind die Docs kostenpflichtig. Eine möglichst glaubwürdige Seite im Netz zu finden ist auch garnicht so einfach, aber ich verweise jetzt mal dahin: http://www.hbernstaedt.de/KnowHow/DMX2/DMX2.htm Unter dem Punkt "Kabel" wird immerhin auf USITT und EIA485 hingewiesen. mfg Reinhard
@Thilo das ist ja mein problem! ich weiß nicht wie ich das signal im avr verarbeiten soll weil ich das programm ja in asm schreiben müsste !?!? am liebsten wäre mir ja ein Atmega8 mit einem 8Mhz Quarz (den benutz ich meistens) das dürfte ja auch keine probleme bereiten
In der aktuellen Elektor ist ein Selbstbau DMX/USB Interface beschrieben. Die Homepage des Autors ist www.oksidizer.com
@stefan ich suche was umgekehrtes ich will im prinzip ein byte aus einem DMX-Signal auslesen und ausgeben
Wie gesagt: den UART mit der richtigen Baudrate initialisieren (Interruptgesteuert, versteht sich) und das Startzeichen auswerten. Dann nur noch die empfangenen Bytes mitzählen und bei den entsprechenden Bytes die gewünschten Aktionen ausführen.
Vergiß Bascom. Bei Hendrik auf der Page gibt´s den kompletten Quellcode in ASM - der Geschwindigkeit wegen. Leicht abgewandelt kannst Du dann das machen, was Du willst. Wenn Du einen Mega162 nimmst, der 2 USARTS hat, kannst Du ohne viel Ärger auf dem einen das DMX-Signal empfangen und über das andere an einen PC die Werte senden. Du mußt nur beachten, daß DMX mehr als doppelt so schnell ist, wie die höchste PC-übliche Baudrate. Ohne Zwischenspeichern im SRAM des Controllers wird das also nix.
ich weiß nicht ob ich mich irgendwie nicht wichtig ausgedtückt haben !??!? ich will dicht das komplette DMX siganl ausgeben sondern nur einen kanal d.h wenn zb. der 1. kanal den wert 250 hat und er 2. kanal 10 ... etz . soll der AVR, wenn der 1. kanal eingestellt ist nur 250 über die uart senden dieses signal will ich dan mit einem andern AVR in das umwandeln wofür ich es brauche.. dei 2 AVR's deswegen wil ich kein asm kann und auf dem 2. avr auch mit basic progammieren kann wenn der 1. AVR das signal binär ausgiebt kann ich damit auch noch leben... Thx Timo
Hi Timo, Weiss nicht genau, auf wen oder was sich dein letzter Beitrag bezogen hat. Wenn's ums mitzählen geht: Dass musst du machen, denn nur so weißt du, für welchen Kanal gerade der Wert empfangen wurde. mfg Reinhard
Machen kann man alles - wenn Du nicht für Vorschläge offen bist - nicht mein Problem. Wenn Du Dich mit ASM nicht beschäftigen magst - bitte... Wenn Du Deinem Wunsch auch irgendwie anders nahekommen kannst, warum nicht. Alles was Du oben schriebst, kann man mit einem Controller machen - 2 gehen auch; 10 gehen auch. Mach wie Du denkst.
@Timo: Ich werde den Verdacht nicht los dass Du das DMX-Prinzip nicht so recht verstanden hast. Dabei wird ein Startzeichen gesendet und anschließend 512 (evtl. mehr oder weniger) Bytes in Folge. Das wiederholt sich immer. Der Empfänger wird auf eine bestimmte Adresse eingestellt und zählt die Bytes ab dem Startzeichen mit. Ab der eingestellten Adresse wertet er dann eine festgelegte Anzahl Bytes aus. Falls Du das anders machen willst, solltest Du das Ganze nicht DMX nennen, ich denke die Meisten hier im Thread sind vom DMX-Standard ausgeganen (verschiedene Aufgabenstellungen). DMX hat auch eine Norm, an die solltest Du Dich schon Halten (z.B.Startzeichen 4 bzw. 8µs).
Grund für deise Schaltung: Die schaltung soll eienn demultiplexer ergeben. Die Platine mit dem AVR soll zb. in eine Nebelmaschie .. Die Nebelstärke soll mit einem DMX kanal mit einem ganz normalen DMX Pult gesteuert werden. da ich auch noch andere Efekte mit DMX ausstatten will und nicht von jemand anderm verlangen will, dass er mir sämtliche codes zu schreibt, habe ich mir üerlegt, dass ich einen AVR nehme, an diesem mit einem dip-schalter einen kanal zuweise und der soll dann den wert von diesm kanal so ausgeben dass ich ihn mit einem 2. AVR den ich dan selbst mit basic programmieren kann weiterverarbeiten kann (dimmen/schalten....) wenn es probleme mit dem einlesen vom dmx und dem ausgeben vom wert giebt wäre es auch nicht schlim wenn der kanal über 8 Pins binär ausgegeben wird wie es hier als 2. aufgeführt ist: http://www.dmx4all.de/data/demux8_de.pdf#search=%22dmx%20demultiplexer%22 ich hoffe das ihr jetzt mein vorhaben verstanden hat und mir einer
@Timo [Zitat start] da ich auch noch andere Efekte mit DMX ausstatten will und nicht von jemand anderm verlangen will, dass er mir sämtliche codes zu schreibt, [Zitat ende] Also Du kannst doch mit einem AVR das DMX auswerten und auch die anderen sachen damit machen. Das Prinzip ist halt so, das jedes Gerät (Nebelmaschine, Effect usw.) einen eigenen DMX Empfänger hat! lg, markus
ja so hab ich das ja vor .. das DMX signal wird >>NUR IM ENDGERÄT<< ausgelesen und umgewandelt! und wie gesagt die 2µC's benute ich nur weil ich nicht fähig bin den code dafür in asm zu schreiben und hoffe das mir jemand eine Hex-datei schicken kann... um aber selbst die steuerung für die endgeräte aufzubauen benute ich den 2. avr thx Timo
es ist so einfach das der AVR den Empfang macht und auch die Portpins dafür schaltet. asm ist einfach. Schaue dir dieses hier mal an: http://www.hoelscher-hi.de/hendrik/light/ressources/AN012.pdf da wird es super einfach beschrieben wie es geht. lg, markus
naja .. DMX auswerten ist nicht unbedingt das womit man anfangen sollte... aber da ich nicht unbedingt soviel zeit hab um die sprache zu lernen habe ich gehofft das mir jemand die software schreiben kann. Ich weiß das es eigendlich nicht schwierig ist doch wenn man mit der programmiersprachen nicht viel zu tun hat ist es auch nicht gerade leicht ;-) wenn man ein programm am laufen hat ist es ja kein problem den wert auf den Ausgang zu legen.... zumindest für jemanden der die programmiersprache beherscht. es wäre net wenn mir jemad die hex dafür zuschicken kann thx Timo
als avr würde ich am liebsten einen atmega8 nehmen mit 8mhz Quarz ( weil ich den für fast alle anderen projekte auch benutze..) der eingestellte kanal soll entweder mit einer normalen geschwindigleit über UART oder binär über 8 Pins ausgegeben werden.. beiders wäre natürlich besser aber nicht unbedingt notwendig Thx. Timo
Hi, also ich habe 2004 einen DMX-Tester mit LCD-Ausgabe und einem 8MHz-8515-Atmel unter BASCOM ohne Probleme gebastelt. Der Empfang ist unkritisch, da der UART den Empfang handelt und einen Interrupt auslöst. Der Empfang der Daten läuft ganz normal über die serielle. Auch die Funktion gezielt einen Kanal anzuzeigen ist schon drin. Wenn dann das ganze per serielle an den PC übertragen werden soll kann man ja beim BASCOM zusätzlich den Software-UART einsetzen. Da reicht ja vielleicht bei einem Kanal 9600 Baud. Den Sourcecode findest du z.B. unter http://www.roboternetz.de/phpBB2/zeigebeitrag.php?p=163723 Vielleicht hilft dir das ja weiter. mfg. Joachim
Hi Leute, habe mir mal das grad alles durchgelesen und so.. ich bin derzeit dabei eine Strobsteuerung zu bauen. Mit einem analogen Eingangssignal klappt des auch echt voll gut... als µC verwende ich einen AT89S52 - nun will ich das ganze mal auf DMX umstellen. Also praktisch einfach statt den Wert vom A/D-Wandler einen DMX-Wert. Hardwaremäßig ist auch alles klar... Software ist so ne Sache.. und zwar einen einfachen Quellcode der einen DMX-Kanal ausließt. Ich weis zwar dass www.hoelscher-hi.de das schon supi erklärt hat, aber ich glaube, insbesondere Timo, will es in "Normgerechter" ASM-Sprache.. des ist auch der Grund warum ich das Beispiel von von www.hoelscher-hi.de nicht so ganz verstehe... (Die mit Mov,Add,Call,Jz, usw....) Am besten Wäre es wenn man für r1 die Adresse annimmt die ausgelsen werden soll - ich weis dann geht 256-512 nett, was aber erst mal egal ist... und in r2 dann den Wert wieder zurück gibt wo eben der monentane DMX-Wert ist... ich glaube des würde vielen, auch mir, sehr viel weiter helfen... von mit aus können auch einfach alle empfangen werte in einen Steicher und man liest dann via Datenpointer den entsprechnden wieder aus... Zusätzlich gut wäre es auch wenn man im programm einfach am anfang für den takt eine zahl eingibt - sei es 8 für 8MHZ oder 12 für 12MHz - so hätte man ein für alle mal eine Art Programm, wo man für alles nehmen kann... Gerade wenn man mit Datenpointern arbeitet kann man schnell auf den gerade benötigten Wert zugreifen.. So und warum baue ich des ganze - weil ich zwar DMX-Strobs habe ahber die haben meist einen Kanal für die Helligkeit und einen für die Geschwindigkeit... aber helligkeit ist eh meist bei 100% und wenn man des im Pult fest einstellt blitzen sie halt alle 2 Sekunden oder so.. des ist sch*****! Deswegen analoge.. wenn man da aber einen normalen D/A-Wandler nimmt reagieren sie nur auf ansteigende Taktflanken.. des heißt man brauch pro blitz 2 scenen. Verwendet man eine Lightoperator 48 von GLP der ne maximal Gesch. von 0,1sec hat, dann ist des net besonders schnell - Trommelwirbel schirr unmöglich.. ließt man nur ein analoges signal ein ung gibt mit zunehmender spannung eine höhere freqeunz aus - sogar blindereffekt leicht möglich ;-) ist des schon mal um einiges besser - kann ja für einen niedrigen wert einfach keine impulse ausgeben... aber nun noch was des ganz ein bissel besonders macht.. man speichert ja einfach auf jeden kanal eine scene.. pro flash egal in welchen wert kommt ein Ímpuls. Und die nächste Steigerung ändert man einen Wert im Bereich zwischen 15-255 geht er in so ne art Trommelwirbel - sprich solange sich die werte ändern bibt er die maximale Freqenz aus.. für Livelicht echt das beste.. muss net immer rigendwelche knöpe im pult für jede funktion suchen... So wäre für ne Hilfe sehr dankbar... Grüßle
Moin, Da AVR-Assembler hier wohl nicht auf allgemeine Begeisterung stößt g, habe ich mir erlaubt den ganzen Kram nach C zu portieren und in mein neues Forum zu klatschen. Die Effizienz ist im Vergleich zu ASM zwar immer noch deutlich schlechter - aber doch inzwischen erträglich. (Den Kram sehen nur registrierte User, damit ich etwas Überblick über das allgemeine Interesse an dem Kram habe...) Viele Grüße, hendrik
Hi, öhm Henne ich sehe des leider net.. also hier bin ich angemeldet... auf deiner Homepage kann man sich ja net anmelden oder?
Ähh - doch. Wie gesagt steht der Kram in meinem Forum. und dort kann man sich wie üblich registrieren...
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.