Gast
#1361892
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.