www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mega8/Timer2


Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Irgendwie steh ich diesmal komplett auf dem Schlauch...
Also: Mega8, Timer2 asynchron mit 32.768kHz, läuft, Frequenz stimmt
auch.
Vorteiler 1024, OCR=1, CTC-Mode (clear on compare).
In der output-compare-ISR wird PortB.0 getoggelt, weiter nichts, das
ist jetzt alles, was ich als Programm noch drinhabe.
Hatte eigentlich erwartet, dass alle 31.25ms B.0 getoggelt wird,
Frequenz also 16Hz, es sind aber 62.5ms=8Hz.

Init:
ASSR=0x08;
TCCR2=0x0f;
TCNT2=0;
OCR2=0x01;
Wo liegt mein Denkfehler?

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei OCR2=1 dividierst du ja nochmal durch 2.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wieso? Nach TCNT2=OCR wird der Zähler auf 0 gesetzt, nach weiteren 1024
Takten sollte TCNT2 auf 1 wechseln und direkt wieder den OCR-Int
auslösen. Zumindest denke ich mir das so. Aber ich wäre dir dankbar für
eine weitere Erläuterung.

Autor: Fritz Ganter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Teiler ist immer OCR - 1, die genaue Erklärung weiss ich auch
nimmer, ist aber so.

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, in der Tat, mit OCR=0 funktionierts wie gewollt. Grübel, grübel -
muss ich das jetzt verstehen? Irgendwie unlogisch...
Besten Dank jedenfalls.

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ crazy horse

du hast geschrieben, daß du den port toggeln läßt. eine frequenz setzt
sich zusammen (bei dir ein rechtecksignal) aus dem positiven und dem
negativem signalanteil. der timerinterrupt stimmt. du betrachtest mit
der frequenz 2 interrupts.

mfg
michael

Autor: crazy horse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nö, nö, da liegt das Problem nicht.
Mein Ansatz: Takt 32,768kHz, Vorteiler 1024, also zählt Timer2 mit
32Hz, also alle 31,25ms einen Takt. Und nun dachte ich, dass exakt nach
31,25ms TCNT2 von 0 auf 1 wechselt, damit den OCR-Int auslöst und
gleichzeitig TCNT2 von 1 auf 0 zurückgesetzt wird. In der ISR wird ein
Portpin getoggelt, also je 31,25ms low, dann 31,25ms high,
Periodendauer 62,5ms=16Hz. Es sind aber nur 8Hz.
Wie gesagt, mit OCR=0 klappt das.

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.