www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega32 16Bit Timer


Autor: Geri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Ich arbeite gerade an einem Schulprojekt und nun ist folgendes Problem 
aufgetreten.
Ich will eine exakte Zeitmessung mittels Timer2 und 2 Lichtschranken 
realisieren.

Ich weis jedoch nicht wie ich den Timer initialisieren muss, dass ich 
eine Interruptzeit von 0,2ms habe.

Die Taktfrequenz beträgt 16 MHz. Es wird ein AtMega32 verwendet.

Autor: Michael K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
16MHz entsprechen 62,5ns pro Cycle.

Prescaler 1: 0,2ms / 62,5ns / 1 = 3200
Prescaler 8: 0,2ms / 62,5ns / 8 = 400
Prescaler 64: 0,2ms / 62,5ns / 64 = 50

-->

OCR2  = 50;
TCCR2 = (1 << CS22) | (1 << WGM21); // Timer 2 CTC Mode, Prescaler 64
TIMSK = (1 << OCIE2);

Grüße,
Michael

Autor: Geri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Schnelle antwort.
Aber wie starte und stoppe ich jetzt den Timer und wie intialisiere ich 
den Interrupt ??
Bin noch Neuling auf dem Gebiet. Danke im Voraus.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Einen Timer kann man starten/stoppen indem man ihm einen
Vorteiler zuweist, bzw. den Vorteiler auf 0 setzt.

TCCR2 &= ~( 1 << CS22 );
stoppt daher deinen Timer und
TCCR2 |= (1 << CS22);
startet ihn wieder

Autor: Michael K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Interrupt ist schon initialisiert. Die Deklaration bzw. 
Implementation fehlt noch:

ISR (TIMER2_ ...)
{
}

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und das I-flag auch noch.
#asm ("sei") oder so (wie sieht das beim GCC aus?)

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
crazy horse wrote:
> und das I-flag auch noch.
> #asm ("sei") oder so (wie sieht das beim GCC aus?)
  sei();

Autor: Geri (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke

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.