DMX==>>UART (AVR)

OP #397908
Lesenswert?

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
Gast #397911
Lesenswert?

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.
#397914
Lesenswert?

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
Gast #397918
Lesenswert?

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.
Gast #397921
Lesenswert?

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.
OP #397922
Lesenswert?

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
Gast #397924
Lesenswert?

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.
Gast #397925
Lesenswert?

@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).
OP #397926
Lesenswert?

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
Gast #397927
Lesenswert?

@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
OP #397928
Lesenswert?

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
OP #397930
Lesenswert?

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
OP #397932
Lesenswert?

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
Gast #397934
Lesenswert?

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
Gast #397935
Lesenswert?

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
Gast #397936
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren