Ich suche eine Programmierhilfe, oder ein funktionierendes Programm, welches mir das DMX512-Protokoll auf einem ATTiny2313 entschlüsselt. Die fertige Hardware habe ich neben mir aufgebaut. 8Mhz Quarz mit 22pF Kondensatoren und einem SN17576 zur Umwandlung des differenziellen Signals. Ich sitze nun seit Wochen an diesem Projekt und alle C-Codes, die ich bisher gefunden habe, haben nich funktioniert, oder ich habe sie beim Umschreiben so verändert, dass sie nicht mehr funktionierten (da möchte ich mich jetzt nicht festlegen), oder ich finde nur HEX-Files. Am besten wäre eine Erklärung, was man beachten muss und wie man das UART für DMX am besten einstellt. Fast genausogut wäre auch ein QT, in dem nur die Entschlüsselung auf Grundlage der Parameter [Anzahl Kanäle] und [Kanal] die entsprechenden Bytes liefern würde. Die Ausgabe mache ich dann individuell, je nach dem, was ich benötige. Falls jemand so einen Code oder Infomaterial hat, würde ich mich sehr freuen. Vielen Dank schoneinmal! Grüße Carsten
Hallo, Carsten. Vom Prinzip her sollte Dein 2313 das können. Er hat allerdings etwas wenig Flash, 2kByte. Mein DMX-Programm braucht ca. 3kByte. Du brauchst 2 Dinge. 1. Einen Timer, der das "Break"-Signal feststellt. Dann die USART, die die bis zu 512 Bytes aufnimmt. Dein 2313 hat nur wenig SRAM, darum solltest Du Dein Programm so schreiben, dass es nur die relevanten Adressen in Variablen für späteren Gebrauch speichert. DMX512 läuft mit 250kHz, 8N2. Dein 8MHz-Quarz passt also. Mir scheint, die USART kann keine BREAK-Kondition erkennen. Musst Du dann selbst machen, per Timer-Interrupt. Kannste alles selber machen, brauchst keine Software von woanders, die dann eh' nicht läuft. Der müde Joe.
Hallo, falls noch nicht geschehen, schaue bitte einmal in der Codesammlung, da gibt es midestens 2 Beispiele direkt für einen 2313. Mfg Ronny
Genau; hatte ich glatt vergessen. Das hier wird Dir helfen (über Schlagwort "DMX" gefunden): DMX Receiver - 4Channel PWM (2*8bit lin, 2*16bit exp) - AtTiny2313 Beitrag "DMX Receiver - 4Channel PWM (2*8bit lin, 2*16bit exp) - AtTiny2313" Der müde Joe.
So, nachdem ich nun endlich mal weider Zeit gefunden habe, mich mit dem Thema zu beschäftigen habe ich den Code getestet. Statt des DIP Schalters habe ich nach dem Einlesen der DIP-Werte im Programm einfach die Variable "DMXAddress" auf 1 gesetzt. Da ich nur 8Mhz Quarze hier habe, musste ich noch den Wert von "UBRRL" von 3 auf 1 setzen. An die 4 PWM ausgänge habe ich LEDs angeschlossen, ebenso wie an den Error Ausgang, welcher auch nach bedsagten 4s zu leuchten beginnt, wenn der Watchdog greift. Zum Test habe ich PWM1 manuell mit verschiedenen Werten gefüttert. PWM funktioniert, allerdings mit einer viel zu niedrigen Rate (ca. 20Hz). Auf dem DMX Bus hängt noch ein PAR-PWM-Strahler mit gleicher Addresse, welcher die Daten richtig verarbeiten. Daten kommen auch auf jeden Fall am Controller an. Ich habe mal eine LED zwischen SN75176 und ATtinx2313 geklemmt, welche augenscheinlich genauso flackert wie die LED am Sender. Woran könnte es noch scheitern? Mir fällt zur Zeit nichts ein, was ich noch prüfen kann. Mich wundert hauptsächlich die langsame PWM. Wenn ich von Quarz auf internen 8Mhz Oszillator umschalte blinkt die LED jedoch genauso langsam... Grüße Carsten
hört sich so an als hättest du den controller mit internem 1mhz takt und clkdiv/8 am laufen ? DMXAddress direkt setzen funktioniert selbstverständlich. habe den testaufbau hier, also der code funktioniert so wie er ist problemlos
Hey, coole Sache. :-) Den Fuse habe ich noch nie beachtet. Nachdem ich das Signal nun noch umgepolt habe funktioniert es. Vielen vielen Dank!!! :-)
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.