Frequency Counter

Aus Ethersex_Wiki
(Weitergeleitet von Frequenzzähler)
Wechseln zu: Navigation, Suche

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.