Forum: Mikrocontroller und Digitale Elektronik Flackern beim DMX-Empfang


von Thomas K. (strohmas)


Lesenswert?

Hallo,
ich hab mal das "Tutorial" zum DMX-Empfang von Hennes Seite auf
meinen Atmega8515 kopiert. Ich hab es zum Testen etwas modifiziert,
adresseL und adresseH hab ich auf Register r20 und r21 geschoben, damit
diese nicht über Port C gefüttert werden, sondern eine statische Zahl
haben.

.def adresseL      = r20
.def adresseH      = r21

ldi   adresseL, 0x02       ; Einlesen der Startadresse

-> das sind die Änderungen vom Register her.

Ich verwende einen 4MHz Quarzoszi und musste damit das UART anpassen:
statt

ldi   temp, 0x01

wurde

ldi   temp, 0x00 laut Datenblatt.

So, dass waren eigentlich die Änderungen.
Jetzt habe ich noch den Treiber vorgeschalten, wobei rxd zum avr geht
und die anderen Ausgänge auf Masse sind. XLR-Buchse mit je 10 cm Draht
habe ich an die Eingänge angeschlossen. Weiterhin habe ich noch eine LED
an PIN E0 geschalten. Diese sollte ja bei einem Wert über 128 an gehen
und darunter aus gehen.
Als Lichtpult verwende ich den GLP Scanoperator 12 Advanced

Nun ist das Problem, dass diese Ausgangs-LED flackert, sobald ich die
Fader bewege. meistens flackert sie nur bei Bewegung von mehreren
Fadern gleichzeitig.
Sobald ich nichts mache bleibt die LED auch so, entweder an oder aus.

Weiss da jemand drüber Bescheid. Habe alles auf Steckbrettern, weiss ja
nicht inwiefern das DMX-Signal auf den 10cm-langen Weg bis zum Treiber
gestört wird?! Muss ich irgendwas mit der XLR-Abschirmung machen?

gruss strohmas

von Thomas K. (strohmas)


Lesenswert?

Hier noch die Adresse, für die Leute, die diese Seite nicht kennen:
http://www.hoelscher-hi.de/hendrik/light/ressources.htm

von Henne (Gast)


Lesenswert?

1.) 8MHz Oszi/Quarz einbauen.
2.) Testfile laden und schauen, wo es an der hardware knirscht.

3.) Demo komplett übernehmen.
4.) Takt und Programm ändern.

Ansonsten werde ich hier wohl jetzt eher selten vorbeischauen, da ich
mir durch mein eigenes Forum das übliche 'Abgrasen' sparen möchte...

Grüße, Hendrik
(zu dem Steckbrett schreib ich jetzt mal nix ;-)

von TravelRec. (Gast)


Lesenswert?

Schaltung posten!!!

von Sonic (Gast)


Lesenswert?

Hab' grade ein ähnliches Projekt kurz vor der Vollendung. Mega32 mit 16
MHz, mittlerweise alles Interruptgesteuert, 8 Kanäle (digital oder
analog, digital führt), Startadresse und Lampenvorheizungen über
LCD-Display und 4 Tasten einstellbar und natürlich im EEPROM verewigt.
Anschaltung der Ansteuerschaltungen mit 8-bit Datenbus und 5-bit
Adressbus oder I²C (100kHz). DA-Wandler-Platine ist noch in Produktion,
Empfänger läuft aber prima!
Will sagen: den Empfang über INT0 und RX-INT machen, dann klappt's
schnell und störungsfrei!

von Thomas K. (strohmas)


Lesenswert?

mit 8mhz-quarz gehts auch nicht, ich hoffe mal, dass ich die fuses alle
richtig gesetzt habe. Wenn ich bei ponyprog ein häkchen mache, wo im
datenblatt eine 1 steht,da gehts garnicht, aber wenn ich das umkehre
gehts (nur cksel und sut umnkehren). Der interne Taktgeber kann damit
auch nicht eingestellt wurden sein, denn ohne quarz gehts auch nicht.
Also wäre schon möglich, dass der quarz fnktioniert.
Wäre nett, wenn ihr noch andere abhilfen habt.

danke strohmas

von Sonic (Gast)


Lesenswert?

Bin ein befürworter von gutem Werkzeug, rate deshalb also zu AVRISP, da
sieht man was man macht!
Den Quarz kannste mit dem Oszi messen, direkt am µC.

von TravelRec. (Gast)


Lesenswert?

Thomas, sei doch mal so nett und stell die Schaltung komplett ´rein.
Sonic gebe ich 100% Recht, was den Progger angeht. Den Ouarz mit ´nem
Oszi messen geht nur mit Teilerkopf 10:1 und nur an XTAL2. Ein 8Mhz
Quarz ist Standard für DMX-Sachen und sollte deshalb gehen. Habe ein
DimmerPack mit Hendricks Empfangsroutinen laufen, mit 16Mhz auf ´nem
ATMega16, 12 Kanäle mit Dimm-/Switch-Funktion, Display, EEPROM-Kram und
diversem Schnickschnack - kein Ärger.

von Thomas K. (strohmas)


Lesenswert?

die schaltung stelle ich mal am montag oder dienstag rein, hab jetzt
keine zeit mehr.
also als programmiergerät habe ich das avrisp aus dem tutorial, weiss
ja nicht, was ihr sonst damit meint

gruss strohmas

von TravelRec. (Gast)


Lesenswert?

Wir meinen einen richtigen Programmer, Original von ATMEL, also den
AVR-ISP oder den AVR-ISP mkII. Ersterer für COM-Port, Letzterer kann
USB. Die lassen sich direkt am AVR-Studio4 betreiben und arbeiten
zuverlässig und immer. Mit der Schaltung wissen wir dann auch mehr...
Schönens Wochenende.

von Michael U. (Gast)


Lesenswert?

Hallo,

@Thomas Kramer:
Du schreibst:
Wenn ich bei ponyprog ein häkchen mache, wo im
datenblatt eine 1 steht,da gehts garnicht, aber wenn ich das umkehre
gehts (nur cksel und sut umnkehren).

Logisch, weil:
Wenn im Datenblatt eine 0 steht, muß bei Pony ein Haken rein.
Steht auch im Fuse-Window von PonyProg, leider geghostet und damit
schlecht lesbar.

Frage:

ldi   temp, 0x01
wurde
ldi   temp, 0x00 laut Datenblatt

ich kenne den Zweck dieses Wertes im Programm nicht, wenn es aber
Bestandteil irgendeiner Zählerei ist, dann sind 0x01 = 1 und 0x00 = 256
Durchläufe...

Gruß aus Berlin
Michael

von Thomas K. (strohmas)


Angehängte Dateien:

Lesenswert?

So hier ist nun der Schaltplan!

Michael U. schrieb:
Frage:

ldi   temp, 0x01
wurde
ldi   temp, 0x00 laut Datenblatt

ich kenne den Zweck dieses Wertes im Programm nicht, wenn es aber
Bestandteil irgendeiner Zählerei ist, dann sind 0x01 = 1 und 0x00 =
256
Durchläufe...

--> Das ist für die Baudrate in Abhängigkeit der Frequenz da, so
bedeutet die 1 = (8Mhz/(16*250))-1. Bei 4 MHz dementsprechend 0.

von Michael U. (Gast)


Lesenswert?

Hallo,

dürfte nicht funktionieren, mit 4MHz kann der 8515 keine 250kBit, die
gehen nur mit 8MHz.
Der Mega8515 könnte sie im x2-Mode.

Gruß aus Berlin
Michael

von Thomas K. (strohmas)


Lesenswert?

inzwischen habe ich auch 8MHz-Quarz und den Originalcode genommen,
funktioniert trotzdem nicht

von Sonic (Gast)


Lesenswert?

Hast du schon probiert das DMX-Signal zu drehen? Habe auch festgestellt
das High- und lowpegel verdreht waren. Dann erkennt er wohl was, aber
nix gescheites. Bei mir läuft's mit mega32 und 16MHz einwandfrei!
Allerdings habe ich RXD und INT0 miteinander verbunden und werte mit
INT0 die Impulslängen aus, um den Startbefehl zu finden (88µs).

von TravelRec. (Gast)


Lesenswert?

@Sonic:

Das ist unnötig, wenn man die Routine von Hendrik Hoelscher nutzt. Zur
kompletten Erkennung ist das USART ausreichend.

@stromas:

Wieso liegt PC0 auf +5V ??

von Thomas K. (strohmas)


Lesenswert?

PC0 liegt auf +5V, damit der DMX-Kanal 1 ausgelesen wird, da ja die
Adresse über den Port C geholt wird. Zusätzlich wird das 9. Bit vom PIN
E2 geholt.

von TravelRec. (Gast)


Lesenswert?

Sowas parkt man aber besser mit ´nem PullUp auf dem betreffenden Pegel,
sonst raucht´s bei falscher Programmierung mal sehr schnell...

High und Low-Pegel passen bei vernünftigem DMX-Equipment schon,
allerdings kann die Pinbelegung des RS485 vom invertierten und
nichtinvertierten Pin vertauscht sein. Also gegebenenfalls mal XLR 3
mit XLR 2 tauschen.

Ansonsten müssen sowohl an Controller, als auch an den Interface-IC
noch je 1x 100nF von 5V nach Masse!

von Sonic (Gast)


Lesenswert?

High und Lowpegel sind genormt. Was wohinkommt und welcher Pin der
5-Pol-XLR an A bzw. B vom RS485-Baustein kommt auch (siehe SOUNDLIGHT),
musste aber feststellen dass es nur funktioniert wenn ich A un B
tausche!
@TravelRec.:
Hast recht, USART genügt. Falls ein Statusregister zur Fehlererkennung
vorhanden ist jedenfalls. Die Lösung mit INT0 finde ich halt
universeller!

von Henne (Gast)


Lesenswert?

Wenn die Schaltung mittlerweile kompatibel zu dem Transceiver ist
(http://www.hoelscher-hi.de/hendrik/light/dmxled.htm),
kannst Du die fuses entsprechend meiner AN011 setzen (wobei der falsch
geproggte Controller wahrscheinlich inzwischen nicht mehr ansprechbar
ist).
(findet sich unter:
http://www.hoelscher-hi.de/hendrik/light/ressources.htm)

Wenn Du das erledigt hast, lädst Du die Diagnosefirmware (board.hex)
und schaust, wo der Fehler liegt und beseitigst ihn.

DANACH kannst Du Dir Gedanken über eigene Programme machen.

Wozu dieses herumorakeln und vor-sich-hin-basteln, wenn man mal schnell
den Fehler finden könnte?

Hendrik

von Thomas K. (strohmas)


Lesenswert?

Funktioniert einfach nicht, das flackert so vor sich her, manchmal
bleibt auch stehen bei der Testdatei. Wenns blinkt ist das
unregelmäßiges Blinken. Und es blinkt auch nur die rote LED. Hab jetzt
auch schon einen neuen µC genommen. Weiss ni, was da nicht stimmt.
Ist das richtig, dass es unregelmäßig blinkt?!?

von TravelRec. (Gast)


Lesenswert?

So langsam habe ich das Gefühl, daß die Baudrate des USARTS nicht paßt,
weil diese Flackerei kommt genau dann zustande. Muß aber nicht.

von Henne (Gast)


Lesenswert?

Falls die Schaltung kompatibel ist und du keinen wilden Drahtverhau
gebaut hast, kannst Du mir sie mal rüberschicken und ich schau mir das
an...

(Meine Adresse findest Du im Impressum; PLZ ist 52062) Versandkosten
(hin & zurück) gehen auf Dich.

Ich denke, Du hast die aktuelle Version des board.hex und der AN
gezogen. (Vor wenigen Wochen habe ich sie überarbeitet.)

Es sollte regelmäßig blinken und der DIP-Test sollte auch funzen.
Für die Frequenz habe ich ja einen eigenen Test in dieser Firmware...

Bislang vermute ich auch, dass Du die Fuses verbockt hast oder D+ und
D- vertauschst hast.

Grüße, Hendrik

von Thomas K. (strohmas)


Lesenswert?

so jetzt funzt alles. ich wusste ja nicht, dass der quarz so rummuckt,
wenn der ein stück weg ist.
aber trotzdem danke für eure zahlreiche hilfe

gruss strohmas

von TravelRec. (Gast)


Lesenswert?

Ein Stück weg?! Wie weit (Neugier!)?

von Thomas K. (strohmas)


Lesenswert?

na mit 10 cm langen bananenkabeln habe ich das eine steckbrett mit dem
quarz und das andere steckbrett mit dem µC verbunden ;)

von Henne (Gast)


Lesenswert?

...und das nachdem ich geschrieben habe, dass der Krempel schon auf
Lochraster bei mir ab und zu hakelt...

Du bist ein Spezialist ;-)

Hendrik

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
Noch kein Account? Hier anmelden.