mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega48 Timer2 als Impulszähler mit externem Takt


Autor: tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>  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.

Autor: tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.