Hi, ich habe eine Schaltung aufgebaut, wo ich ein paar HighPower LED's über die Port Pins C0, C1 und C2 per PWM ansteuere. An den PortPins ist jeweils ein ICL7667 angeschlossen und daran werden über IRLZ34N die HighPower LED's betrieben. So weit so gut. Funktioniert auch alles wunderbar. Nur hab ich etwas "Probleme" mit der PWM. Hier ist der Code der Timer ISR: ISR(TIMER1_COMPA_vect) { static uint8_t pwm_zaehler=0; uint8_t temp=0; OCR1A += 600; if (pwm_wert[0] > pwm_zaehler) temp |= (1<<0); if (pwm_wert[1] > pwm_zaehler) temp |= (1<<1); if (pwm_wert[2] > pwm_zaehler) temp |= (1<<2); PORTC = temp; if (pwm_zaehler==255) { pwm_zaehler=0; } else { pwm_zaehler++; } } Nun hab ich aber das Problem, wenn die LED's eigentlich aus sein sollen (kleinster Dimmerwert), "glimmen" diese trotzdem minimal nach. Ich hab mir jetzt so geholfen, indem ich in der ISR abfrage ob dieser Zustand erreicht wurde, und ändere einfach die Richtung der Portpins: if (pwm_wert[0] ==255) { DDRC &=~(1<<DDC0); } else DDRC |= (1<<DDC0); if (pwm_wert[1] ==255) { DDRC &=~(1<<DDC1); } else DDRC |= (1<<DDC1); if (pwm_wert[2] ==255) { DDRC &=~(1<<DDC2); } else DDRC |= (1<<DDC2); Kann man das vielleicht noch etwas "eleganter" lösen? Danke schonmal.
tf1973 schrieb: > Kann man das vielleicht noch etwas "eleganter" lösen? Hardware PWM eine Option? Dann kannst du eine invertierende PWM einstellen, allerdings hast du das Problem dann bei 100%, dass die LEDs immer kurz ausgehen und nie ihre volle Helligkeit erreichen. Allerdings ist das in deinem Fall eher verschmerzbar. Man muss dann allerdings beachten, das 0 = 99.9999% ist und 255=0%.
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.