mikrocontroller.net

Forum: Compiler & IDEs Timer auf Overflow prüfen


Autor: Tommy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Servus,
mein Problem in aller Kürze:
Ich möchte eine Frequenz mit der Capture-Unit des Timer 1 meines Mega32
messen. Das funktioniert auch, wenn ich in dem mich interessierenden
Frequenzbereich bin, aber ich muß nun noch prüfen, ob ich nicht eine
Periodendauer unterhalb meines Frequenzbereiches messe. Das bedeutet,
dass mein Timer zwischen Start und Capture Ereignis überläuft. Wie kann
ich einfach prüfen, ob vor dem Captrue eine Überlauf stattgefunden hat?
Hab versucht, das TOV1 Bit im TIFR Register auszuwerten und hab auch
den Overflow Interrupt ausprobiert und mir den Überlauf in einer
Variablen vermerkt, aber das funktioniert irgendwie nicht.
In vereinfachter weise stell ich mir das so vor:
Wenn TOV1 = 1, dann Frequenz auserhalb Messbereich
sonst Periodendauer gleich Zählerstand
Where is the problem??? Ich beginne ernsthaft an meinen Fähigkeiten zu
zweifeln (-;

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz einfach.

Du liest nach dem Capture das TOV1-Bit, ist es gesetzt, so gab es einen
Überlauf. Alternativ kannst Du auch im Überlaufinterupt eine Variable
setzen, daß ein Überlauf stattgefunden hat.

Nun kann es aber sein, daß der Überlauf kurz nach dem Capturen
stattgefunden hat.
Auch kein Problem, teste einfach noch das höchstwertigste Bit des
Capture-Wertes. Ist der Capturewert FFFF oder so ähnlich, dann war der
Überlauf erst danach und das höchstwertigstige Bit ist gesetz.

Ist der Capturewert 0000 oder so ähnlich, dann war der Überlauf davor
und das höchstwertigste Bit ist 0. Dann entweder sagen "zu lang" oder
einfach 65536 addieren.


Peter

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du unsigned 16 bits als Variablen hast, ist das Addieren von
65536 natürlich das Addieren einer 0 und damit überflüssig.  Einen
einzelnen Überlauf kann man damit einfach und simpel ignorieren.
Allerdings muß man sich sicher sein, daß man nicht mehr als einen
Überlauf hatte.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jörg,

ich setze natürlich voraus, daß man zur Berechnung von Zahlen >65535
auf  24 oder 32Bit erweitern muß.
Sonst macht ja das Mitzählen der Überläufe keine Sinn.

Mein Frequenzzähler in Assembler erweitert sogar bis auf 56 Bit, damit
die Berechnung im gesamten Meßbereich ohne Überlauf möglich ist.


Peter

Autor: Tommy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mein Problem war ja das Feststellen, ob ich im, oder außerhalb meines
Messbereiches bin. Mich interessiert die genaue Frequenz eh nur im
Messbereich, da reicht mir die Information, ob ich noch unterhalb der
kleinstmöglichen Frequenz liege, also ob der Zähler übergelaufen ist
oder nicht, wie oft ist mir egal. Aber mein Problem stammt
wahrscheinlich aus einer ganz anderen Ecke. Das Prüfen des Überlaufs
funktioniert, zumindest mit einem Testaufbau. Wenn ich das ganze dann
an mein eigentliches Testobjekt anschließe messe ich wahrscheinlich
Stötimpulse mit, die aber nicht mal auf dem Oszi sichtbar sind. Bin
noch auf der Suche nach den Quellen und werd wohl mein Referenzsignal
noch tiefpassfiltern müssen. Ich werd als erstes mal die
"Rauchunterdrückung" im AVR aktivieren bevor ich wieder zum Lötkolben
greife, leider haben sowas aber nicht viele MCs...

have a nice and sunny sunday

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.