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!
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
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?
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.
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).
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
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
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.
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).
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
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.
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?
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
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.
> 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
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.
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!
Hans schrieb: > DRM Data Relationship Management? Deutsche Rallye-Meisterschaft? Digital Rights Management? Direct Rendering Manager?
Hans schrieb: > Besonders wichtig wäre für mich, dass das Projekt DRM unterstützt Sicher, dass Du nicht RDM meinst?
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.
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.
> 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
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...
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.
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).
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.
Hans schrieb: > Mit RDM meine ich Remote Device Management. Und was willst du damit bei so einem einfachen DMX-Empfänger machen?
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!
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.