Atmega48 Timer2 als Impulszähler mit externem Takt

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
> ASSR  |= _BV(EXCLK);
> ASSR   &= ~_BV(AS2);
Könnte es eventuell sein, dass die Bits beide gesetzt sein müssen? 
Wenn AS2 gelöscht ist, wird der Timer doch vom I/O-Clock getaktet. EXCLK 
selektiert nur innerhalb der asynchronen Betriebsart, ob ein Quarz an 
TOSC1 und TOSC2 oder ein Takt an TOSC1 verwendet werden soll.
Gast
>  ASSR  |= _BV(EXCLK);
>  ASSR   &= ~_BV(AS2);

Hier liegt vermutlich der Fehler. Wenn AS2 0 ist, wird der Timer intern 
getaktet. Du willst aber externen Takt.
Gast
Genial, das tut.
Mein Problem war auch noch dass ich die Portinitialisierung DDRB &= 
~_BV(PB6) vor kurzem noch nach der Timer2 Initialisierung hatte, dann 
bekommt man auch Probleme.

vielen dank
tom

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.