Du füllst ein Array mit Datenpunkten, wenn es voll ist (also ach einer
oder mehreren Perioden), Mittelwert bilden. Dazu sollte natürlich die
Frequenz und (höhere) Abtastrate bekannt sein und entsprechend die
Feldgröße angepasst.
Die kommenden Werte werden dann einfach von vorne an überschrieben und
mit jedem neuen Wert gibt es einen neuen Mittelwert. Du schiebst quasi
ein Fenster mit immer der gleichen Anzahl an Werten vor dir her.
Oder in Pseudocode:
1 | schleife start
|
2 | werte{i] = neuerWert
|
3 | bildeMittelwert( werte )
|
4 | i = i+1
|
5 | wenn i = max:
|
6 | i = 0
|
7 | schleife ende
|
Bei unbekannten Frequenzen kann man auch dynamisch mit Flankenerkennung
(oder Nulldurchgang bei Wechselsignalen) arbeiten und entsprechend die
Anzahl der Samples dynamisch festlegen...
Wenn Abtastrate und Frequenz kein vielfaches sind, halt mehre Perioden
nehmen, eine Verzögerung entsteht ja nur beim ersten Zyklus, danach
kommen die Werte quasi in Echezeit.