Hallo,
ich hänge gerade beim Bau meines DMX Pultes.
Das Pult gib schlicht kein Signal aus, das ein DMX empfänger versteht.
Nun ist natürlich die Frage ob es am Programm oder an der Schaltung
liegt.
Den schaltplan hatte ich bereits in meinem ersten Thread gepostet.
Beitrag "Einsteiger baucht Starthilfe (Lichtpult, ATmega8)"
(danke an Christoph S. für den Tipp mit Pollin ...)
Zum Programm:
Es sollen einfach 6 Fader sein, die 6 DMX-Kanäle ansteuern.
Beim Code will ich es simpel halten und verzichte daher auf interrupts,
unterprogramme, und den Stackcounter.
Ein ATmega8 wandelt an seinen 6 ADC´s die Spannung, die obersten 8 Bit
werden in einem register zwischengespeichert und später an den USART
ausgegeben.
Um den Reset befehl zu geben stelle ich die Baudrate von 250k auf 9600
Bits/s herunter und sende ein Nullbyte. Die beiden Stoppbits ergeben
dabei gleich den Mark nach dem reset.
(nach Hendrik Holscher :
http://www.hoelscher-hi.de/hendrik/light/ressources.htm )
Ich hab es aber auch mit Warteschleifen probiert in denen ich dem USART
nix zum senden gegeben habe. (was macht der SN 75176BP eigentlich, wenn
er keine Daten bekommt? Er interpretiert das doch als logisch Null und
sendet +12V auf seinem Out A oder ?)
Nach der Übertragung meiner 6 Kanäle sende ich durch eine Schleife
weitere 100 leere Kanäle, damit ein Durchlauf nicht zu kurz wird.
Es würde mir unglaublich helfen, wenn sich das jemand von euch einmal
ansehen würde. Ich komme hier alleine nicht mehr weiter.
Vielen Dank !
der Code:
1
;UART
2
; Baudrate soll 250kBits betragen
3
; damit dauert ein Bit 4 us wie für den DMX Standart vorgesehen
Habe den Code kurz überflogen - es scheint als ob du nirgendwo den TXD
Pin als Ausgang setzt, dann kann es auch nix senden.
Falls es nicht hilft:
Sind die A und B Richtig angeschlossen? (nicht vertauscht).
Hast du die Möglichkeit das Signal irgendwo anzuschauen? (Logic
Analyzer, Oszi)
Hallo,
ich hatte die letzten Tage etwas mehr zu tun, deshalb erst jetzt die
Antwort.
zunächst zu Alex antwort:
"Habe den Code kurz überflogen - es scheint als ob du nirgendwo den TXD
Pin als Ausgang setzt, dann kann es auch nix senden."
habe
sbi UCSRB, TXEN
im Code geschrieben. das reicht doch oder ?
Ich hatte heute die Möglichkeit das ding mal an einen Oszi
anzuschließen.
besonders aufschlussreich war das ganze aber leider nicht, dafür kenn
ich mich mit den dingern noch nicht gut genug aus.
Anbei habe ich ein Bild des Signals das mein Pult ausspuckt. Immerhin
ist so etwas wie eine Signalstruktur zu erkennen.
Ich konnte die 100 leeren Kanäle die nach meinen 6 AD gewandelten
Kanälen kommen sehen. Bei den einzelnen Worten stehen die Stoppbits im
richtigen Verhältniss zu den Datenbits und dem Startbit. Also 36 us zu 8
us. D.h. die Baudrate stimmt (vermutlich) auch.
Eine Sache wunderte mich allerdings: auf dem Bild ist oben ein dicker
balken zu sehen bei X=0. Dieser stellt wohl meinen Reset dar. allerdings
befindet er sich auf dem gleichen Spannungsniveau wie die Stoppbits. Die
sind allerdings logisch 1 während der reset ein NullByte ist.
Das sollte eigentlich nicht sein.
Zuhause habe ich die 100 leeren Kanäle mal auf 255 gesetzt, leider auch
kein Licht...
Also ich vermute das:
- etwas mit dem reset nicht stimmt (habe es jetzt auch mit 64k Baud
probiert, auch nix)
- Die Spannungspegel evtl. gar nicht stimmen (hab ich wirklich den
richtigen bustreiber? sollte ich es mal mit nem anderen probieren. Sind
die Widerstände am Ausgang sinnvoll oder sinnfrei ?)
- die Kondensatoren am Quarz haben ne recht hohe toleranz, kann das zu
problemen führen ?
Ein Hoffnungsschimmer: beim Gerät das ich damit ansteuern will(ein 1
Kanal Handdimmer von Botex namens UP-1) blinkt es jetzt da wo DMX
steht...
ich wäre euch für ein paar Hypothesen was es denn sein könnte äusserst
dankbar.
vielleicht kann mir jemand einen Link zu einem Quellcode in Assembler
geben mit dem es funktioniert oder einen blick auf den Schaltplan
werfen, ob da was nicht in Ordnung ist bzw. ob sich was vereinfachen
lässt.
vielen Dank
Hallo Lampe99,
ich bin auch gerad dabei mir so ein Lichtpult zu bauen. Mein Schaltplan
ist fertig und ich warte jetzt auf die Bauteile. Wollte in der Zeit
schon mal anfangen zu programmieren. Da ich beim programieren von
Mikrocontrollern noch nicht so viel Erfahrung habe, hab ich nach
Beispiele gesuchen und bin hier gelandet.
Kann es vielleicht daran liegen das du die interne Referenzspannung
nimmst, die ja nur 2,56V beträgt, die analogen Eingänge aber ohne
Probleme über 2,56V kommen?
Ich wollt das ganze in C schreiben, hast du (oder einer der anderen die
das hier lesen) einen Tipp für mich?
Schöne Grüße
Der Biba
Im Ersten Post wurde bereits ein Link zu http://www.hoelscher-hi.de
angegeben, wo man sich Application Notes zu DMX-Senden/-Empfang als pdf
ansehen kann.
Dabei sind auch Codebeispiele bzw. funktionstüchtige Snippets in "C",
aus denen man sich locker eine kleine lib schnitzen könnte.
mfg mf