Gast
#761669
Hallo
Ich möchte den Timer2 als Impulszähler verwenden, getriggert von einem
externen Takt (Rechteck-Impulse) an TOSC1 (PB6). Ich habe jetzt das
Problem, dass der Interrupt nach Freigabe ständig ausgelöst, ohne dass
der Takt überhaupt anliegt.
Hier meine Initialisierung von Timer2
DDRB &= ~_BV(PB6); // PB6/XT1 input
TIMSK2 &=~(_BV(OCIE2A)|_BV(OCIE2B)|_BV(TOIE2));
ASSR |= _BV(EXCLK);
ASSR &= ~_BV(AS2);
TCCR2A = 0x00;
TCCR2B |= 0x01;
TCNT2 = (uint8_t)MAX_COUNTS-IMPULSES; // 255-25
OCR2A = 0x00;
OCR2B = 0x00;
while (ASSR&0x1F);
TIMSK2 |= _BV(TOIE2);
TIFR2 |= _BV(TOV2);
und die ISR dazu
ISR (TIMER2_OVF_vect) // timer2 overflow interrupt
{
imp++;
TCNT2 = (uint8_t)(MAX_COUNTS-IMPULSES;);
}
Weiss jemand ob der Timer2 überhaupt mit einem externen asynchronen Takt
betrieben werden kann. Oder ist der Timer2 nur für einen externen 32kHz
Quarz ausgelegt.
mfg
tom