Forum: Mikrocontroller und Digitale Elektronik DMX und der Attiny2313


von Hans (1next)


Lesenswert?

Hallo zusammen,

ich möchte ein älteres Thema aus dem Forum zu den 
Beitrag "DMX und der Attiny2313" wieder aufgreifen 
und habe dazu noch ein paar Fragen. Konkret geht es mir darum, ob und 
wie weit sich die 20 MHz reduzieren lassen und welche Auswirkungen das 
auf die Funktion hat.

Da ich in diesem Bereich noch recht unerfahren bin, wäre ich sehr 
dankbar für eure Unterstützung. Welche Möglichkeiten gibt es, die 
Frequenz zu verringern, und welche Folgen kann das für  die Stabilität 
haben? Gibt es spezielle Dinge, die ich dabei beachten sollte?
Mein Ziel ist es, die Voltzahl möglichst zu verringern

Vielen Dank im Voraus für eure Hilfe!

von Falk B. (falk)


Lesenswert?

Hans schrieb:
> ich möchte ein älteres Thema aus dem Forum zu den
> Beitrag "DMX und der Attiny2313" wieder aufgreifen
> und habe dazu noch ein paar Fragen. Konkret geht es mir darum, ob und
> wie weit sich die 20 MHz reduzieren lassen

Warum? Wird dir oder dem Controller bei 20MHz schwindlig?

> dankbar für eure Unterstützung. Welche Möglichkeiten gibt es, die
> Frequenz zu verringern, und welche Folgen kann das für  die Stabilität
> haben?

Für DMX Empfang mit 250.000 Baud braucht es minimal 2 MHz Takt, damit 
der UART das mit x8 abtasten kann. Dann hat man aber auch nur 88 
CPU-Takte/Byte. Da muss man schon SEHR gut programmieren, damit das 
reicht.
Im Normalfall nimmt man 8MHz und hat eine gute Reserve.

> Gibt es spezielle Dinge, die ich dabei beachten sollte?
> Mein Ziel ist es, die Voltzahl möglichst zu verringern

Warum? Bist du voltsensibel? Man kann die AVRs bei 3,3V mit 8MHz takten. 
Tu das und sei glücklich. Und warum nicht 5V? Jedes USB-Netzteil spuckt 
die aus.

: Bearbeitet durch User
von Hans (1next)


Lesenswert?

Hallo Falk,
danke für deine schnelle Antwort!

Der Grund, warum ich das Ganze angehe, ist, dass ich viele Akkus mit 4V 
habe und diese direkt dafür verwenden möchte.

Wenn ich jetzt den 20 MHz Taktgeber durch einen mit 10 MHz ersetze, was 
müsste ich dann im Code anpassen?

Und nur nochmal zur Klarheit: Ist es grundsätzlich egal, wie viele MHz 
verwendet werden, solange das Minimum bei 2 MHz liegt? Oder gibt es 
andere Faktoren, wie zum Beispiel längere Delays bei der Ausführung, die 
ich beachten sollte?

von Falk B. (falk)


Lesenswert?

Hans schrieb:
> Hallo Falk,
> danke für deine schnelle Antwort!
>
> Der Grund, warum ich das Ganze angehe, ist, dass ich viele Akkus mit 4V
> habe und diese direkt dafür verwenden möchte.

Schön, aber deren Spannung sinkt während der Entladung. Wie weit, wird 
durch den Typ bestimmt.

> Wenn ich jetzt den 20 MHz Taktgeber durch einen mit 10 MHz ersetze, was
> müsste ich dann im Code anpassen?

Welcher Code? Der in deinem Link? Dort wird eine Soft-PWM im 
Controller gemacht, die braucht relativ viel CPU-Leistung, auch wenn es 
dort nur ein Kanal ist. Unter 8 MHz sollte man da nicht gehen. Oder die 
durch eine Hardware-PWM ersetzen, der ATtiny2313 hat dafür zwei Timer 
mit insgesamt 4 PWM Ausgängen. Wenn das nicht reicht, sollte man 
intelligente LEDs ala WS2812B nutzen, dann kann man "endlos" viele 
anschließen.

> Und nur nochmal zur Klarheit: Ist es grundsätzlich egal, wie viele MHz
> verwendet werden, solange das Minimum bei 2 MHz liegt?

Natürlich nicht. Das war nur eine minimale Abschätzung für den 
DMX-Empfang. Der Controller soll ja aber noch was anderes tun. Dafür 
braucht er Rechenleistung. Und dafür wiederum viele MHz.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Moderne Controller können per DMA den ganzen DMX-Datenblock empfangen 
ohne die CPU aufzuwecken, und kommen auch mit sehr niedriger Spannung 
aus (z.B. 1.8V) und können den Takt dynamisch wechseln und haben sonst 
auch sehr sparsame Sleep-Modi, damit kannst du dann eine Menge Energie 
sparen (es klingt als wäre das dein Ziel).

von Johannes F. (jofe)


Lesenswert?

Es gibt auch inzwischen AVRs, die bis 1,8 V herunter mit 24 MHz laufen, 
z.B. AVR128DB28: https://www.microchip.com/en-us/product/AVR128DB28

von Michael B. (laberkopp)


Lesenswert?

Hans schrieb:
> ob und wie weit sich die 20 MHz reduzieren lassen

Ja, geht.

> und welche
> Auswirkungen das auf die Funktion hat.

Wenn man das Programm entsprechend anpasst damit die Baudrate und 
sonstige Timer gleich bleiben: erst mal keine.

Bis dann der Prozessor so langsam ist, dass er die Verarbeitung nicht 
mehr schafft, vielleicht unter 0.4MHz ?

> Welche Möglichkeiten gibt es, die
> Frequenz zu verringern

Anderer Schwingquartz. Der interne Oszillator kann zwar auch langsamer, 
aber gilt als nicht zuverlässig stabil genug für serielle Kommunikation.

> und welche Folgen kann das für  die Stabilität
> haben? Gibt es spezielle Dinge, die ich dabei beachten sollte?
> Mein Ziel ist es, die Voltzahl möglichst zu verringern

Hans schrieb:
> dass ich viele Akkus mit 4V habe

Echt ? Du wärst der erste, dessen Akkus immer 4V haben und nicht etwa 
eine nachlassende Spannung während der Entladung, z.B. von 4.6 auf 4 
oder von 4.2 auf 3V.

Du wirst schon mit der geringsten Spannung rechnen müssen.

Wenn der Prozessor dabei nicht mehr 20MHz schafft, reduziere halt auf 10 
oder (bei serieller Verbindung üblicher) 12.88MHz.

Weniger (1MHz oder 4MHz) ist ja gar nicht nötig.

Das Programm muss halt angepasst werden.

: Bearbeitet durch User
von Hmmm (hmmm)


Lesenswert?

Michael B. schrieb:
> reduziere halt auf 10 oder (bei serieller Verbindung üblicher) 12.88MHz.

Es geht um DMX, also 250 kBaud, da sind krumme Takte für gängige 
Baudraten eher unpraktisch.

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Michael B. schrieb:
> Wenn der Prozessor dabei nicht mehr 20MHz schafft, reduziere halt auf 10
> oder (bei serieller Verbindung üblicher) 12.88MHz.

Viele Controller können mittlerweile auch bei 1.8V volle und hohe 
Taktraten erreichen, und auch per PLL die Frequenz nahezu beliebig 
einstellen (und im Betrieb umschalten).

von Hans (1next)


Lesenswert?

vielen Dank für die schnellen Antworten!

Mein Hauptanliegen ist der Code – was müsste ich genau anpassen, wenn 
ich den 20 MHz Taktgeber gegen einen mit 10 MHz austausche?

Beitrag "Re: DMX und der Attiny2313"

Vielen Dank für deine Hilfe!

: Bearbeitet durch User
von Johannes F. (jofe)


Lesenswert?

Hans schrieb:
> was müsste ich genau anpassen, wenn
> ich den 20 MHz Taktgeber gegen einen mit 10 MHz austausche?

Habe die DMX_RDM.asm mal durchgescrollt – CTRL+F "20 MHz" und "20MHz" 
(oder einfach "MHz" ohne "Match whole word only") sollte die Stellen 
liefern, an denen Konstanten angepasst werden müssen (bei mir 5 an der 
Zahl). Leider wurde vom Autor keine Assembler-Berechnung per Symbol à la 
F_CPU vorgenommen.

von Falk B. (falk)


Lesenswert?

Hans schrieb:
> Mein Hauptanliegen ist der Code – was müsste ich genau anpassen, wenn
> ich den 20 MHz Taktgeber gegen einen mit 10 MHz austausche?
>
> Beitrag "Re: DMX und der Attiny2313"

Naja, Etwas anstrengend geschriebener Assembler. Dazu noch RDM für DMX. 
Was brauchst du denn davon WIRKLICH? Was willst du insgesamt erreichen?

von Hans (1next)


Lesenswert?

bei der RGB_LED_DMX habe ich einfach mal die Werte halbiert, aber ich 
bin mir nicht sicher, ob das der richtige Weg ist.
.equ RDM_response_delay=22 ;bei 10 MHz

  out  ubrrh,temp0  ;temp0=0
        ldi     temp0,7   ;baundrate 250kbit by 10MHz

Das DRM ist mir dabei besonders wichtig, da es mir die Arbeit erheblich 
erleichtern würde.

Lg

von Falk B. (falk)


Lesenswert?

Hans schrieb:
> bei der RGB_LED_DMX habe ich einfach mal die Werte halbiert, aber ich
> bin mir nicht sicher, ob das der richtige Weg ist.
> .equ RDM_response_delay=22 ;bei 10 MHz

Kann sein. Für 8 MHz eher 18, siehe unten.

>   out  ubrrh,temp0  ;temp0=0
>         ldi     temp0,7   ;baundrate 250kbit by 10MHz

Geht so nicht, es muss anders herum! Siehe Datenblatt unter USART.
Bei 10 MHz kriegt man keine 250k Baud hin, nur bei 8 MHz. Also nimm die. 
Dann ist die Einstellung

   out  ubrrh,temp0  ; temp0=0
   ldi  temp0,1      ; baud rate 250kbit/s at 8MHz
   out  ubrrl,temp1

Naja, der Code ist schon recht abenteuerlich. Der Timer 0 wird mit 
vollem CPU Takt betrieben, dann aber in 0851 Manier per CPU immer neu 
geladen. Totaler Unfug. Da hat jemand den CTC Modus nicht gesehen oder 
verstanden.
Un dann noch tierische Berechnungen im Timer für so komische Soft-PWM? 
Wirklich?

Ist die Software schonmal getestet worden? Funktioniert die mit 20 MHz 
auch WIRKLICH so wie gewünscht? Das würde ich erstmal prüfen.

von S. L. (sldt)


Lesenswert?

> Bei 10 MHz kriegt man keine 250k Baud hin

Der ATtiny2313 hat U2X; damit und UBRR=4 kommt man auf 250 kBd bei 10 
MHz.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Naja, die 10MHz brauchen offiziell 2,7V VCC. OK, die hat der OP. Aber ob 
die am Ende reichen? Der Controller macht eine recht komische 
Soft-PWM mit 50kHz (20us) Timer Takt. Macht 400 CPU Takte bei 20MHz 
oder 200 bei 10MHz. Kann reichen, muss nicht, kann man aber simulieren. 
Oder die ISR aufräumen, die sieht sehr merkwürdig aus, mit 
Multiplikationen und so.

von Hans (1next)


Lesenswert?

Hallo zusammen,

ich habe leider Schwierigkeiten, das RGB_LED_DMX-Projekt zum Laufen zu 
bringen.

Kennt jemand vielleicht ein ähnliches Projekt?
Besonders wichtig wäre für mich, dass das Projekt DRM unterstützt, da es 
mir die Arbeit erleichtern würde. Zudem sollte es so wenig Strom wie 
möglich benötigen Idealerweise sollte es für DMX mit mindestens 4 
Kanälen ausgelegt sein. Ich bin auch offen für Vorschläge, die andere 
Mikrocontroller nutzen.

Danke euch schon mal für eure Unterstützung und Vorschläge!

von Niklas G. (erlkoenig) Benutzerseite


Lesenswert?

Hans schrieb:
> DRM

Data Relationship Management?
Deutsche Rallye-Meisterschaft?
Digital Rights Management?
Direct Rendering Manager?

von Hmmm (hmmm)


Lesenswert?

Hans schrieb:
> Besonders wichtig wäre für mich, dass das Projekt DRM unterstützt

Sicher, dass Du nicht RDM meinst?

von Falk B. (falk)


Lesenswert?

Hans schrieb:
> ich habe leider Schwierigkeiten, das RGB_LED_DMX-Projekt zum Laufen zu
> bringen.

Was geht denn nicht? Kompilier das erstmal im Original und bau es mit 20 
MHz auf und teste. Dann kann man weiter optimieren.

> Kennt jemand vielleicht ein ähnliches Projekt?
> Besonders wichtig wäre für mich, dass das Projekt DRM unterstützt, da es
> mir die Arbeit erleichtern würde. Zudem sollte es so wenig Strom wie
> möglich benötigen

Das ist keine sinnvolle Angabe. Nenn eine Zahl, siehe Netiquette.

> Idealerweise sollte es für DMX mit mindestens 4
> Kanälen ausgelegt sein.

Was sollen die machen? Das Projekt hat drei Kanäle, welche in PWM 
umgewandelt werden und eien RGB LED oder was auch immer ansteuern. Dazu 
ein Master, welcher die Helligkeit global für die drei Kanäle steuert.

Reicht das?

> Ich bin auch offen für Vorschläge, die andere
> Mikrocontroller nutzen.

Das ist nicht das Problem. Das Projekt tut schon, was es soll. Aber da 
es von einem Amateuer geschrieben wurde, ist die Anpassung an einen 
anderen Quarztakt aufwändiger. Man muss auch den Timer anpassen.

von Falk B. (falk)


Lesenswert?

Hans schrieb:
> Besonders wichtig wäre für mich, dass das Projekt DRM unterstützt, da es
> mir die Arbeit erleichtern würde.

Was soll den RDM bringen? Da werden doch nur ein paar statische Infos 
rückgemeldet.

von S. L. (sldt)


Angehängte Dateien:

Lesenswert?

> so wenig Strom wie möglich

Als DMX-Laie hätte ich gedacht, dass die Stromaufnahme hier eine 
nachrangige Rolle spielt. Aber wie dem auch sei, hier ein paar Zahlen, 
bezogen auf

> Akkus mit 4V habe und diese direkt dafür verwenden möchte

von Björn W. (bwieck)


Lesenswert?

S. L. schrieb:
> Als DMX-Laie hätte ich gedacht, dass die Stromaufnahme hier eine
> nachrangige Rolle spielt.

Ja, hab ich mich auch schon gefragt wozu man wenige mA sparen will um 
dann damit kW saufende Lichtspiele zu betreiben...

von Falk B. (falk)


Lesenswert?

Björn W. schrieb:
> Ja, hab ich mich auch schon gefragt wozu man wenige mA sparen will um
> dann damit kW saufende Lichtspiele zu betreiben...

Er will den Emfänger mit einem Akku betreiben, vielleicht will er 
Dutzende davon nur zur Ansteuerung einer RGB-LED benutzen und irgenwie 
wild in der Szene verteilen. Kann man machen. Dann sollte man aber beim 
Design nachbessern und KEINE Soft-PWM nutzen. Aber das ist 
vermutlich nicht in Reichweite des OP, der sucht ein fertiges Projekt.

von Ob S. (Firma: 1984now) (observer)


Lesenswert?

Falk B. schrieb:

> Was soll den RDM bringen? Da werden doch nur ein paar statische Infos
> rückgemeldet.

Ähemm, nein. DMX-RDM erlaubt Auto-Detektion und -konfiguration der 
Peers. Das ist schon ziemlich nützlich.

Aber klar: die Pers müssen das dann auch in vollem Umfang 
implementieren. Das traue ich dem TO keinesfalls zu.

Der kann wohl nichtmal strohdummes "one-way-DMX" korekt umsetzen.

Kein Arme->keine Kekse. (OK, man muss schon recht alt sein, um den Joke 
zu verstehen und "politisch korrekt" war er auch damals schon nicht).

von Hans (1next)


Lesenswert?

Mit RDM meine ich Remote Device Management.

von Falk B. (falk)


Lesenswert?

Ob S. schrieb:
> Aber klar: die Pers müssen das dann auch in vollem Umfang
> implementieren. Das traue ich dem TO keinesfalls zu.

Es geht ja um das "fertige" Projekt, welches er nutzen möchte.

Beitrag "Re: DMX und der Attiny2313"

Das steckt einiges drin, auch wenn der Autor ein relativer Anfänger war.
Aber so wie ich es oberflächlich verstanden habe, sendet der per RDM nur 
ein paar statische Daten. Obwohl es werden auch Daten im EEPROM 
gespeichert. Naja. Whatever. Meine Empfehlung steht oben.

von Falk B. (falk)


Lesenswert?

Hans schrieb:
> Mit RDM meine ich Remote Device Management.

Und was willst du damit bei so einem einfachen DMX-Empfänger machen?

von Hans (1next)


Lesenswert?

Gute Frage! 🙂
Der Plan ist, einfache DMX-gesteuerte Module für Deko-Zwecke auf unserer 
Bühne zu bauen. Mit RDM (Remote Device Management) kann ich die Module 
zentral überwachen und konfigurieren, was gerade bei mehreren Geräten 
super praktisch ist. So spare ich mir die Zeit und den Aufwand, jedes 
Modul einzeln zu kontrollieren.

Und du weißt ja, Vereine haben immer knappes Budget – da ist es 
hilfreich, wenn wir durch solche Features den Aufwand und die Kosten 
reduzieren können!

von Falk B. (falk)


Lesenswert?

Hans schrieb:
> Gute Frage! 🙂
> Der Plan ist, einfache DMX-gesteuerte Module für Deko-Zwecke auf unserer
> Bühne zu bauen. Mit RDM (Remote Device Management) kann ich die Module
> zentral überwachen und konfigurieren, was gerade bei mehreren Geräten
> super praktisch ist. So spare ich mir die Zeit und den Aufwand, jedes
> Modul einzeln zu kontrollieren.

Was gibt es an einem einfachen RGB DMX-Empfänger zu überwachen und zu 
konfigurieren? Der bekommt eine feste DMX-Adresse und gut.

> Und du weißt ja, Vereine haben immer knappes Budget – da ist es
> hilfreich, wenn wir durch solche Features den Aufwand und die Kosten
> reduzieren können!

Kann ich nicht nachvollziehen. Ich habe aber auch keine Ahnung von 
praktischer Bühnentechnik. Viel Erfolg.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Falk B. schrieb:
> Hans schrieb:
>> Mit RDM meine ich Remote Device Management.
> Und was willst du damit bei so einem einfachen DMX-Empfänger machen?
Das ist der Witz: DMX ist unidirektional mit "1 Sender mit vielen 
Empgängern" und braucht deshalb nur einen RS422-Multidrop-Bus.

Dagegen ist DMX-RDM ist bidirektional und ein kompletter RS485-Bus mit 
vielen Sendern.

Es wird also auf dem DMX-Bus von der jeweiligen Lampe auch was 
zurückgesendet. Und die üblichen billigen DMX-Sender-Empfänger 
funktionieren eben nur in 1 Richtung. Da kann die Lampe nichts 
zurückschicken.


https://www.sealevel.com/support/basics-of-rs-422-and-rs-485-communications/

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.