Hi,
hab mich gestern mit nem Gläschen Wein hingesetzt um mal eben eine Software-PWM zum Dimmen von LEDs oder Lampen zu realisieren...
Gut, ich hab die Dinger seit dem Sommer nicht mehr angefasst aber damit, das es überhaupt nicht will hab ich nicht gerechnet.
Hab den Kram erstmal weggelegt und starte mit wachem Kopf später nochmal neu...
Hier meine Grundidee:
Timer0 laufen lassen, dieser bedient einen Zähler.
Nun habe ich einen Maxwert und einen Pulslängenwert.
Wenn der Zähler kleiner ist als der Pulslängenwert, gehen die zugehörigen Ausgänge auf High, sonst auf low.
Ist der Maxwert erreicht wird der Zähler zurückgesetzt.
Nun hielt ich mich für besonders schlau und habe den Internen Zähler des Timers (Tcnt0) dafür verwendet und dem Timer einen Prescale von 256 verpasst.
Wenn ich korrekt denke, dann sollte der Takt von 8MHz heruntergeteilt werden auf 31250 Zählimpulse pro Sekunde. Die 256 Prozessortakte zwischen je zwei Zählimpulsen sollten dicke reichen um den Pulslängenwert mit dem Tcnt zu vergleichen und die Ports zu schalten. Da es sich um einen 8Bit-Timer handelt - also immer bis 255 hochzählt und neu startet, sollte die daraus resultierende PWM-Frequenz bei etwa 122Hz liegen.
Das Ergebnis war aber entteuschend - bei einem Tastverhältnis von 200:256, 150:256, 100:256, 60:256 und 20:256 war für mich keine Helligkeitsänderung bei den LEDs ersichtlich. Erst wenns noch kleiner wurde - dann wurden sie aber auch sehr dunkel.
Klar kann man das alles auch anders realisieren - aber ich wüsst halt gerne ob in meiner Grundidee ein Denkfehler steckt und wenn ja welcher.
Bin für jeden Tipp dankbar
Gruß
Carsten -- Vermeintliche Tippfehler in diesem Posting sind keineswegs Rechtschreibfehler sondern Vorschläge für die nächste Rächtschraiprevorm ;o) |