DMX-Dimmer: DMX auslesen und Phasenanschnitt zu gleich?

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 01 10 2025  05:26:35      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Oszilloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( 1 | 2 Nächste Seite )      


Autor
DMX-Dimmer: DMX auslesen und Phasenanschnitt zu gleich?
Suche nach: dmx (396) dimmer (2671) dmx (396)

    







BID = 340127

strohmas

Gelegenheitsposter

Beiträge: 66
Wohnort: Dresden
ICQ Status  
 

  



Hallo

ich habe vor einen 4-kanal-dmx-dimmer zu bauen. jedoch stehe ich zur zeit noch vor einem problem:

wie ist es möglich den spannungsnulldurchgang/ verzögerung um phasenanschnittwinkel und das abfragen des dmx-signals gleichzeitig durchzuführen.

Das DMX-Signal in voller Länge (512 Kanäle) brauch ja schon 22 ms um überhaupt komplett übertragen zu werden. Das bedeutet ja, dass 2-3 nulldurchgänge ausgelassen werden, welches sich dann ja wieder in der falschen Dimmstufe der Lampen wiederspiegelt.

mit zwei µC wäre es ja einfach, jedoch wie sieht es mit einem aus, wie kann man denn gleichzeitig irgendwas machen. ich habe mir schon überlegt, das ganze mit interruptbetrieb zu machen, aber wie genau weiss ich nicht?
bitte helft mir!

danke strohmas



_________________

BID = 340135

photonic

Schreibmaschine



Beiträge: 1301
Wohnort: Zürich, Schweiz

 

  


Ich würde die Zündung der vier Triacs komplett Interruptgesteuert mit einem einzelnen 16-bit Timer machen. Bei einem Nulldurchgang der Netzspannung resettest du jeweils den Timer per pin-change Interrupt. Dabei kannst du auch jeweils gleich den maximalen Timerwert speichern der einem halben Zyklus der Netzfrequenz entspricht.

Die Zündwinkel der Triacs arbeitest du mit dem Timer sequentiell ab, angefangen mit dem kürzesten. Du setzt jeweils den Timerwert für den nächsten kommenden Zündwinkel in ein timer compare register das dir einen Interrupt gibt wenn es so weit ist, in der Interruptroutine zündest du den(die) entsprechenden Triac(s) und schreibst den nächsten kommenden Wert ins timer compare register und so weiter. Beim nächsten Nulldurchgang wieder den Timer resetten und das Spiel geht von neuem los.

So verbrauchst du nur einen 16 bit Timer und kannst im Hauptprogram irgend etwas anderes machen wie z.B DMX-signale analysieren ohne Timingprobleme zu bekommen.

[ Diese Nachricht wurde geändert von: photonic am 12 Jun 2006 16:58 ]

BID = 340140

strohmas

Gelegenheitsposter

Beiträge: 66
Wohnort: Dresden
ICQ Status  


dankeschön

hast du vielleicht noch ein tutorial dafür parat, wo ich das alles noch in ruhe durchlesen kann?

danke strohmas

_________________

BID = 340144

photonic

Schreibmaschine



Beiträge: 1301
Wohnort: Zürich, Schweiz


Ein Tutorial für deinen Anwendungsfall habe ich natürlich nicht, aber allgemeine Programmiertutorials finden sich im Netz viele.

Ich weiss hat nicht welchen Controller und welche Programmiersprache du verwenden möchtest, ich arbeite mit AVR, programmiert in C (mit WinAVR Link ).

Dazu findest du hier ein gutes Tutorial: Link

[ Diese Nachricht wurde geändert von: photonic am 12 Jun 2006 17:09 ]

BID = 340160

strohmas

Gelegenheitsposter

Beiträge: 66
Wohnort: Dresden
ICQ Status  


also AVRs möchte ich auch verwenden, jedoch möchte ich das ganze mit Assembler programmieren
naja, mit dem tutorial meinte ich ja zum beispiel die interruptsteuerung. ich weiss da garnicht, wie ich das mit dem timer machen soll, so dass dort eben ein unterprogramm nach ablauf aufgerufen werden soll.


danke strohmas

[ Diese Nachricht wurde geändert von: strohmas am 12 Jun 2006 17:45 ]

BID = 340190

clembra

Inventar



Beiträge: 5402
Wohnort: Weeze / Niederrhein
ICQ Status  


http://www.hoelscher-hi.de/hendrik/light/ressources.htm

Guck dir da mal die AN012 an.
Du musst ja auch nicht alle 512 Kanäle bearbeiten, sondern nach jedem Byte ein Interrupt, der einen Counter hochzählt und wenn du beim Startwert bist 4 Bytes speichern und auf das nächste Break warten...

_________________
Reboot oder be root, das ist hier die Frage.

BID = 340193

strohmas

Gelegenheitsposter

Beiträge: 66
Wohnort: Dresden
ICQ Status  


so ist es natürlich auch ne möglichkeit, nur wie mache ich das mit diesen timer hochzählen und resetten genau, hat da jemand für mich vielleicht ein kleines beispiel in assembler, was die funktiionsweise deutlich macht?

danke strohmas

_________________

BID = 340207

clembra

Inventar



Beiträge: 5402
Wohnort: Weeze / Niederrhein
ICQ Status  


ICH hab ihn mir noch nicht angeschaut, aber Digital Enlightenment hat einen Open-Source Dimmer auf der Website. Ist zwar ein 6K mit LCD und allem drum und dran, aber evtl. kann man sich da einiges an Code rauskopieren.

_________________
Reboot oder be root, das ist hier die Frage.

BID = 340212

photonic

Schreibmaschine



Beiträge: 1301
Wohnort: Zürich, Schweiz


Die Timer-counter laufen von selbst, haben entweder 8 oder 16 bit und werden vom Prozessortakt über einen programmierbaren Vorteiler oder extern übner einen Eingang getaktet. Wenn du nichts resettest überläuft der Zähler einfach beim Maximalwert und beginnt wieder von 0. Resetten heisst ganz einfach das Zählerregister mit irgendeinem Startwert überschreiben.

Damit die Timer so laufen wie man es braucht müssen sie passend initialisiert werden. Welche Register genau welche Daten bekommen sollen steht ausführlich im Datenblatt das gerne vollständig gelesen werden möchte.

Interruptroutinen sind kleine Programmteile die aufgrund vordefinierter Ereignisse sofort ausgeführt werden wenn ebendieses Ereignis auftritt. Die Ausführung des restlichen Programms wird dabei so lange unterbrochen. In einem AVR gibt es eine Vielzahl von Interruptquellen, wie z.B. Timer overflow(Timer überläuft Maximalwert), timer compare match (timer-zähler erreicht vordefinierten Wert), Pin change interrupt(Zustand eines I/O- Pins ändert sich) und noch sehr viele mehr. Interrupts sind immer dann sehr nützlich wenn man zu einem bestimmten Zeitpunkt oder nach einem bestimmten Ereignis etwas tun muss, aber nicht dauernd durch Statusabfragen Zeit Rechenzeit verheizen möchte/darf.

BID = 340279

clembra

Inventar



Beiträge: 5402
Wohnort: Weeze / Niederrhein
ICQ Status  


Das ein Nachteil an PICs, die haben meines Wissens nur eine Interrupt-Routine und man muss extra nachfragen, was denn passiert ist.

Ergänzend: und auch wenn ein Byte fertig empfangen wurde bzw. (der gleiche) wenn etwas empfangen wurde, was zu lang ist, also ein Stoppbit erwartet wurde aber nicht gekommen ist (das ist dann wahrscheinlich das Break) wird ein Interrupt ausgelöst.
Mit anderen Worten der DMX-Empfang wird kurz initialisiert und immer wenn etwas fertiges oder kaputtes empfangen wurde wird der Programmablauf kurz interruptet ( ) und anschließend fortgefahren.
PS: Wenn größere Lampen (300W (PAR56)) und aufwärts würd ich gleich ne Vorheizungsmöglichkeit einbauen, zur Lebenszeitverlängerung der Leuchtmittel

Die Registernamen stehen aber auch im AVR-Studio und Beschreibungen (in deutsch) findest du auf mikrocontroller.net (GCC-Tutorial)

_________________
Reboot oder be root, das ist hier die Frage.

BID = 340287

Jornbyte

Moderator



Beiträge: 7289


Da mir die Zeit fehlt, mach ich mal für Henne Werbung: Link

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 340302

clembra

Inventar



Beiträge: 5402
Wohnort: Weeze / Niederrhein
ICQ Status  



Zitat : Jornbyte hat am 12 Jun 2006 22:46 geschrieben :

Da mir die Zeit fehlt, mach ich mal für Henne Werbung:



Da war ich schneller, siehe oben

_________________
Reboot oder be root, das ist hier die Frage.

BID = 340312

Jornbyte

Moderator



Beiträge: 7289


Wobei strohmas einige Fragen beantwortet bekommt, wenn die Suchfunktion benuzt wird.

_________________
mfg Jornbyte

Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.

BID = 349895

strohmas

Gelegenheitsposter

Beiträge: 66
Wohnort: Dresden
ICQ Status  


hallo,
mal ne andere Frage, aber auch zur gleichen Sache:
hat jemand ein Tutorial oder sowas für den DMX-Empfang in C,
mit dem asm komme ich ni so klar mitn phasenanschnitt

_________________

BID = 350200

photonic

Schreibmaschine



Beiträge: 1301
Wohnort: Zürich, Schweiz


schau mal hier: http://www.hoelscher-hi.de/hendrik/english/dimmer.htm

ich weiss nicht ob die source in C oder asm ist, musst mal ins Zipfile schauen das man da herunterladen kann.

edit:

der Link steht ja weiter oben schon...

[ Diese Nachricht wurde geändert von: photonic am 14 Jul 2006 17:54 ]


      Nächste Seite
Gehe zu Seite ( 1 | 2 Nächste Seite )
Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 12 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 185621785   Heute : 1335    Gestern : 10050    Online : 273        1.10.2025    5:26
5 Besucher in den letzten 60 Sekunden        alle 12.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.116269111633