PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem gelöst (braucht timer2 den externen Quarz)



jar
08.04.2007, 22:52
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)

jar
09.04.2007, 09:27
titel geändert um die Frage zu verbessern

Hubert.G
09.04.2007, 10:15
Welcher Takt ist egal. Wo rufst du dein Timer2_init auf?

jar
09.04.2007, 10:26
Welcher Takt ist egal. Wo rufst du dein Timer2_init auf?

in main

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();
.....

Hubert.G
09.04.2007, 17:14
Ich sehe da jetzt keinen Fehler, du teilst allerdings nach deiner Angabe am Anfang nur 4MHz und nicht 8MHz.
Hubert

ceekay
09.04.2007, 18:41
mein mega32 läuft im Moment nur mit 4 MHz intern

Beträgt der interne Quarz des mega32 nicht 1 Mhz. ?

p_mork
09.04.2007, 18:45
Man kann zwischen 1,2,4 und 8MHz intern umstellen.

MfG Mark

jar
09.04.2007, 20:46
Ich sehe da jetzt keinen Fehler, du teilst allerdings nach deiner Angabe am Anfang nur 4MHz und nicht 8MHz.
Hubert

jau, der läuft mit 4, der Kommentar ist noch 8


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 :(((