0Hz messen mit Input Capture

Gast #164160
Mit einem mega8 erfasse ich eine Motordrehzahl im Bereich 0-500Hz.
Die Taktfrequenz von Timer 1 liegt bei 62500Hz. Somit lässt sich der
Bereich 1Hz bis >10kHz mesen.
Gibt es irgendeinen einfachen Trick um Frequenzen <1Hz zu erkennen, um
Fehlmessungen zu umgehen ?
Wenn der Motor steht, bleibt der zuletzt gemessene Wert erhalten, da
kein Input Capture Interrupt erfolgt, weshalb die Regelung nicht
funktioniert.

Hier nochmal alles zusammengefasst, was ich erreichen möchte:
Frequenz >=1Hz: Frequenz=62500/(Input Capture-letzen Input Capture)
Frequenz <1Hz: Frequenz=0

Vermutlich geht das über eine Softwaremäßige Erweiterung des Input
Capture Registers auf 24bit, nur wie erkenne ich den Zeitpunkt, zu dem
ich das Register auslesen muss, wenn kein Capture Interrupt erzeugt
wird ?
Gast
Du könntest ja noch den Timer-Overflow aktivieren welcher eine Variable
hochzählt zum erfassen von weniger als 1Hz.
Muß dann von der Input-Capture-ISR zurückgesetzt werden.

MfG
Andi
Gast
Ich habe es jetzt mit einem zusätzlichen Register als 24bit Erweiterung
gelöst.
Dieses wird bei jedem Timer Overflow erhöht.
Ist es bei einem TimerOverflow bereits 1 (also der Zählerstand wird
jetzt auf 2, also 131072 erhöht), dann wird die Frequenz aus Null
gesetzt. Dazu setze ich TRot auf 65535, was von der Dividierroutine in
eine Frequenz von 0Hz umgewandelt wird.
Liegt die Frequenz irgendwo zwischen 0Hz und 1Hz, dann wird ab und zu
ein Input Capture Interrupt ausgelöst und auch hier wird das erweiterte
Input Capture Register ausgewertet.

Allerdings bin ich nicht ganz sicher, ob es nicht Sonderfälle gibt
(z.B. bei geringen Frequenzen, oder wenn gleichzeitig ein Timer
Overflow und ein Input Capture Interrupt auftreten), ob dann die Werte
nicht mal falsch werden können.
Angehängte Dateien:

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 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.