Moin!
Ich versuche gerade mit dem ATMega8 ein PWM-Signal mit dem Timer2 zu
erzeugen. Also Meine Schaltung besteht eigentlich nur aus einem Quarz,
paar Kondensatoren und dem ISP Interface. Naja so wie ich das hier im
Forum in einigen Diskussionen gelesen habe, stört das ISP interface beim
PWM eigentlich nicht. Aber mein PWM kommt nicht mal, wenn ich das
Programmierdingens abstöpsel.
Ich habe auch ein Compare-Interrupt aktiviert und der Interrupthandler
wird auch aufgerufen, nur der doofe PWM-Pin (OC2) macht irgendwie nix.
Hier noch mal den Code, mit dem ich den Timer initialisiere:
1 | void PWM_init(void) //Timer/Counter0 is used
|
2 | {
|
3 | TCCR2 |= ((1<<WGM21)|(1<<WGM20)); //Fast PWM
|
4 | TCCR2 |= (1<<COM21); //Clear OC2 on compare (non-inverting)
|
5 | TCCR2 |= (1<<CS20); //No prescaling (CLK/1)
|
6 | TIMSK |= (1<<OCIE2); //enable Interrupt on compare
|
7 | TCNT2 = 0x00; //Set countervalue to zero
|
8 | OCR2 = 0x0f; //Initialize Compare value
|
9 | }
|
Ich hoffe Ihr könnt mit meinen Angaben was anfangen und ich hab nur
einen dummen Fehler übersehen.
Grüße Jan