Ich hol den guten Fred noch mal nach oben
Es gibt n großes Software Update! Ich habe mich hingesetzt und mir eine 12 Bit BCM gebastelt. Die Matrix wurde mir im unteren Bereich einfach zu schnell zu hell. Ne gamma-Korrektur auf 8 Bit Basis war dann untenherum viel zu grob .... also musste was feineres her!
Es laufen (nun endlich ) alle LEDs intern mit 12 Bit Auflösung. Der 8 Bit DMX Wert wird gamma-korrigiert und in 12 Bit überführt (per Tabelle. Gamma = 1,85)
Gearbeitet wird wie vorher mit ca. 244 Hz zeitlicher Auflösung. Der kleinste BCM-Schritt ist 16 Takte lang (da geht noch was, aber das wird mir dann zu frickelig ). Ich verwende Timer1 des Mega32 im CTC-Mode. Setzte also den Zielwert in jedem BCM-Takt neu.
Nebenbei hab ich die Software - mehr wegen der Verfügbarkeit - auf n Mega32 umgemodelt. Läuft aber mit ner kleinen Anpassung der Interrupttabelle auch ohne murren auf nem Mega16.
Was jetzt wohl noch zum vollkommenem Glück fehlt ist eine RGB-HSV-RGB Umwandlung um die Gamma-Korrektur nur auf den Helligkeit-Wert anzuwenden. Man kann zwar eine kleine Farbverschiebung beobachten, jedoch ist die in meinen Augen recht gering. Darum habe ich den Mehraufwand gescheut. Wenn wer was in ASM fertig hat, her damit
Ein paar Anmerkungen zur BCM:
Der 4. bis 11. Schritt laufen 2 takte zu spät an, der 12. 4 Takte zu spät. Das sind im schlimmsten Fall 1,6% und nimmt dann drastisch ab. Daher habe ich mir eine Feinanpassung des Compare-Match-Zielwertes gespart. Kommt vielleicht noch mal bei nem Anflug von Langeweile
Im letzten Schritt werden die Werte für den 1. Schritt vor der Neuberechnung der Daten vorgeladen. Bedeutet: Kommt ein neuer DMX wert und es werden daraus die BCM-Daten errechnet, liegen im 1. Schritt der nächsten BCM-Runde noch die alten Daten an.
Auch das vernachlässige ich. Die BCM-Daten werden außerhalb des BCM-Interrupts berechnet. Ich will nicht, dass der Mega zu lange im Interrupt hängt (wären dann im letzten schritt über 2000 Takte) und den DMX-Empfang verpasst. Wichtig is mir aber, das der wert für den 1. BCM-Schritt im letzten BCM-Schritt vorgeladen wird. Somit liegt zumindest ein fast korrekter Wert an. Und es geht hier nur wirklich um Kleinvieh. Die Rundungsfehler in der Look-up Tabelle sollten mehr ins Gewicht fallen
Es tut also erstmal, was es soll. Wem die Fehler beim ansehen der Matrix auffallen bekommt n Bonbon von mir Ich kann hier nix erkennen. Vielleicht mertze ich aber auch das noch aus, wenn mal wieder Zeit über is.
Weil genug Speicher in den Megas vorhanden ist war ich bei der Umrechnung von DMX zu BCM Werten etwas verschwenderisch. So ist der code aber schneller als mit unzähligen Sprüngen und Zählern. Das war dann erstmal wichtiger.
Es sind also doch noch ein paar Baustellen im Code. Verbesserungsvorschläge oder andere Tipps sind immer sehr willkommen
Vielleicht komm ich auch dazu von meinen bisherigen 4 Matrizen mal n Video zu machen. Bis jetzt sieht das schon ganz ordentlich aus. Da freu ich mich glatt auf den nächsten Satz.
Im Angang findet ihr jetzt erstmal die neue Software. Ich bin gespannt auf Feedback und Meinungen!
Gruß
Gyver