Frequency Counter
(Weitergeleitet von Frequenzzähler)
Inhaltsverzeichnis
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
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. |