Gast
#2060027
Hallo allerseits, ich stehe augenblicklich vor einem Problem: Ich bin dabei mir eine 4-Kanal (4x RGB, also 12 geschaltete Ausgänge) RGB-LED Steuerung zu bauen. Dazu verwende ich auf einem ATmega88PA (4,096 MHz externer Quarz) den Timer0 Compare Match A Interrrupt, der einen Zähler hochzählt und jedesmal den aktuellen Zählerstand mit den jeweils eingestellten Schwellwerten vergleicht und den entsprechenden Ausgang an oder abschaltet. Compare Match deswegen, weil ich so die Frequenz der PWM etwas regeln kann. Soweit funktioniert das auch ganz gut - Verschiedene statische Farben funktionieren und einen Fading-Effekt habe ich auch hinbekommen. Jedoch zeigt sich bei diesem ein Problem: Ich arbeite natürlich mit einem Register für den Zähler, womit meine Schaltwerte also immer zwischen 0 und 255 liegen. Dadurch lassen sich "relativ" wenige Dimmwerte realisieren (da ja auch noch nicht linear) und man sieht vor allem bei niedrigen Helligkeitsstufen die Sprünge zwischen den Stufen, anstatt einen sanften Übergang zu erzielen! Es bleibt also wahrscheinlich nichts anderes als statt mit 8 Bit mit 16 Bit zu arbeiten, jedoch sind meine Kenntnisse hier am Ende (ich würde mich durchaus noch als Anfänger bezeichnen) Ist es überhaupt möglich auf einem ATmega88 16 Bit Vergleiche durchzuführen? Oder hat jemand eine bessere Idee wie ich das Problem umgehen könnte? Ich wäre für jede Hilfe dankbar. Achja ich programmiere in Assembler im dem AVR Studio.