Gast
#2376480
Hi,
ich bin solangsam etwas ratlos. Im Forum, Google und das Datasheet haben
mir irgendwie nicht mehr weitergeholfen .... who wanna be my glory
rescuer?
Also: Ort des Geschehens: Mega32 @ 8 MHZ (intern osc)
Ich habe 3 PWM-Kanäle (OC2,OC1A,OC1B).
Ich habe 1 Interrupt auf Timer0 (1/100s) bei 8MHz
Problem:
Ohne den Timer0 -> geht das PWM
Mit dem Timer0 -> nix PWM, dafür geht Timer0
================================
== Hier der Code für den PWM: ==
================================
TCCR1B |= (1<<CS12); //Prescaler 256
TCCR2 |= (1<<CS22) | (1<<CS21) | (0<<CS20); //Prescaler 256
// 2. Den Timer in den Fast PWM Mode, 8 Bit schalten
TCCR1A |= (1<<WGM10);
TCCR1B |= (1<<WGM12);
TCCR2 |= (1<<WGM21) | (1<<WGM20);
// 3. Compare Output mode einstellen: Pin geht auf high bei Compare
match, auf low bei Überlauf. Ergibt nichtinvertierte PWM.
TCCR1A |= (1<<COM1A1) | (1<<COM1B1) ;
TCCR2 |= (1<<COM21) | (1<<COM20) ;
// PWM-Werte (testweise)
OCR1A = 127;
OCR1B = 127;
OCR2 = 127;
// Die Pins als Ausgänge konfigurieren.
DDRD |= (1<<PD4) | (1<< PD5) | (1<< PD7);
===================================
== Hier der Code für den Timer0: ==
===================================
TCCR0 = ( 1<<CS02 ) | ( 0<<CS02 ) | ( 1<<CS00 );
TCNT0 = 65535 - ( ( 8000000 / 1024 ) / 100) ;// Vorladen
TIMSK |= (1<<TOIE0); // Interrupts aktivieren und damit Timer starten
sei();
ISR( TIMER0_OVF_vect )
{
cli();
TCNT2 = 65535 - ( ( 8000000 / 1024 ) / 100) ;
// ...... hier kommt was ....
sei();
}
Wo liegt denn mein Denkfehler? Ich kann doch Timer0 unabhängig von Timer
1&Timer2 verwenden.... warum beeinflussen die sich denn?
Heul....