titel geändert um die Frage zu verbessern
braucht der timer2 einen externen takt ?
mein mega32 läuft im Moment nur mit 4 MHz intern
timer2 init erfolgt
void timer2_init(void)
{
OCR2 = 63; // Reloadwert Timer 2
TCCR2 = (1<<WGM21) | (1<<CS22); // Clear Timer Mode, Takt= 8MHz/64
TIMSK |= (1 << OCIE2); // Interrupt Enable Timer Compare
sei();
}
das hier wird niemals angesprungen
SIGNAL (SIG_OUTPUT_COMPARE2)
{
dcf.msec++; // Zeitgeber für DCF-Empfang weiterdrehen
if(PORTB & (1 << _speedLED_PB))
PORTB &=~ (1 << _speedLED_PB);
else
PORTB |= (1 << _speedLED_PB);
}
das hier schon
SIGNAL (SIG_INTERRUPT0)
titel geändert um die Frage zu verbessern
Welcher Takt ist egal. Wo rufst du dein Timer2_init auf?
in mainZitat von Hubert.G
void timer1_init(void)
{
TCCR1A = (1<<COM1A1)|(1<<COM1B1)|(1<<COM1B0)|(1<<WGM10); //A clear down (A1) : B clear up (B1 | B0)
TCCR1B = (1<<CS11);
TIMSK &= ~0x3c;
}
void timer2_init(void)
{
OCR2 = 63; // Reloadwert Timer 2
TCCR2 = (1<<WGM21) | (1<<CS22); // Clear Timer Mode, Takt= 8MHz/64
TIMSK |= (1 << OCIE2); // Interrupt Enable Timer Compare
sei();
}
int main(void)
{.....
timer1_init();
timer2_init();
init_dcf();
.....
Ich sehe da jetzt keinen Fehler, du teilst allerdings nach deiner Angabe am Anfang nur 4MHz und nicht 8MHz.
Hubert
Beträgt der interne Quarz des mega32 nicht 1 Mhz. ?mein mega32 läuft im Moment nur mit 4 MHz intern
gruß ceekay \/
Man kann zwischen 1,2,4 und 8MHz intern umstellen.
MfG Mark
jau, der läuft mit 4, der Kommentar ist noch 8Zitat von Hubert.G
ich bin doof, ne kurzsichtig
wenn man hier:
timer2_init();
TIMSK |= (1 << OCIE2); // Interrupt Enable Timer Compare
richtig setzt !
darf man hier:
TIMSK = 1<<TOIE0; //enable timer interrupt
nicht wieder löschen ((
Lesezeichen