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
Hier noch die Adresse, für die Leute, die diese Seite nicht kennen: http://www.hoelscher-hi.de/hendrik/light/ressources.htm
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 ;-)
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!
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
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.
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.
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
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.
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
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.
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
inzwischen habe ich auch 8MHz-Quarz und den Originalcode genommen, funktioniert trotzdem nicht
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).
@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 ??
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.
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!
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!
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
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?!?
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.
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
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
na mit 10 cm langen bananenkabeln habe ich das eine steckbrett mit dem quarz und das andere steckbrett mit dem µC verbunden ;)
...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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.