Hi,
Du hast den Timer falsch eingestellt.
mit
Code:
TCCR1A = (1<<COM1A1)|(1<<WGM11);
TCCR1B = (1<<WGM12)|(1<<CS10);
stellst Du 9-bit Fast-PWM ein (TOP bei 0x1FF)
Für Fast-PWM mit TOP bei ICR musst Du auch WGM13 noch einschalten, dann funktionierts.
Noch 2 Sachen:
- Du hast F_CPU nicht definiert, das ist für die korrekte Ausführung von _delay_ms notwendig.
- die Abfrage
Code:
if(pwm > 255) pwm = 255;
in PWM_set() ist völlig unnötig, da der Parameter pwm als unsigned char sowieso keinen größeren Wert als 255 annehmen kann.
Gruß,
askazo
Lesezeichen