Flackern beim DMX-Empfang

OP #407273
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
Gast #407275
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 ;-)
Gast #407277
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!
OP #407278
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
Gast #407280
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.
Gast #407282
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.
Gast #407283
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
OP #407284
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.
Angehängte Dateien:
Gast #407287
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).
Gast #407290
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!
Gast #407291
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!
Gast #407292
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
OP #407293
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?!?
Gast #407295
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

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