Frequency Counter

From Ethersex_Wiki
Revision as of 21:57, 6 November 2011 by Gvegidy (talk | contribs) (Created page with "{{i18n|Frequency Counter}} {{Module |NAME=Frequency Counter |MENUCONFIG={{Applications}}->Frequency Counter |STATUS={{stable}} |PINNING=yes |ECMD={{has_ecmd}} |DEPENDS=ECMD (…")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Frequency Counter
Status
Stable
menuconfig Applications->Frequency Counter
Pinning yes
Ecmd yes
Depends on ECMD (optional)
Requires -
Code https://github.com/ethersex/ethersex/tree/master/services/freqcount

Measures the frequency and duty cycle of a signal

Anschluss

  • muss immer an das ICP1-Pin angeschlossen werden
  • im Pinning muss der Pin zusätzlich noch definiert werden:

pin(FREQCOUNT_PIN, PB0, INPUT)

  • es ist geplant noch ein Multiplexing mit einem zusätzlichen 74HC251 oder dem Ananlog-Multiplexer (unter Verlust des ADCs) einzubauen

Frequenz

  • CPU-Ticks von Rising-Edge zu Rising-Edge werden gemessen
  • Minimal das kleinere von 1 Hz und CPU-Frequenz / 16777216, in der Praxis 2 Hz
  • Maximal ca. 50 CPU-Takte, also ca. 400KHz bei 20 MHz
  • Ist die Frequenz höher, wird dies nicht sicher erkannt, es werden einfach falsche Werte gemessen
  • Steigt die Interrupt-Last der CPU (z.B. durch Netzwerkverkverkehr oder UART), sinkt die maximal sicher messbare Frequenz
  • Die Frequenz wird intern als Anzahl der Ticks (32 Bit unsigned int) gespeichert

Duty-Cycle

  • Kann auch den Duty-Cycle eines PWM-Signals messen
  • Duty-Cycle ist (Zeit von Rising Edge zu Falling Edge) / Gesamtdauer des letzten Zyklus von Rising zu Rising
  • Frequenz und Duty-Cycle werden nacheinander gemessen
  • Sollte sich die Frequenz signifikant ändern, ist die Duty-Cycle Messung falsch
  • Der Duty Cycle wird intern als 8 Bit Wert gespeichert

Durchschnittsbildung

  • Durch Interrupt-Verzögerungen etc. kann es zu Fehlmessungen kommen
  • Bei höheren Frequenzen sinkt die maximal mögliche Auflösung
  • Um das zu kompensieren wird immer der Durchschnitt von n Messungen verwendet, n ist im Konfigurationsmenü einstellbar
  • Zusätzlich wird immer der höchste und der niedrigste Wert einer dieser Durchschnittsreihen verworfen (es werden n+2 Samples genommen)

ECMD-Befehle

Hinweis: Channel ist momentan immer 0
Kommando Funktion
fc freq Channel Gibt die Frequenz in Hz zurück (Achtung: 32 Bit).
fc ticks Channel Gibt die Frequenz in CPU Ticks zurück (Achtung: 32 Bit).
fc duty Channel Gibt den Duty Cycle als 8 Bit Wert zurück (0-255 dezimal).
fc %duty Channel Gibt den Duty Cycle in Prozent zurück.