So,
ich habe auch nochmal getüfftelt.
Mein Code sieht jetz so aus:
Code:
signed int16 acc_tief = 0;
signed int16 acc_roh = 0;
unsigned int16 acc_ort = 0;
acc_ort += ((acc_roh - acc_tief)*4);
//Faktor 4 dient zum Anpassen der Zeitkonstante
acc_tief = acc_ort >> 8;
Kern der Sache ist die unsigned 16 Bit Zahl acc_ort (Name soll hier mal egal sein). Auf die addiere ich die Differenz des momentanen Einganges minus den letzten Ausgang.
Auf den Ausgang wird aber nur das HIGH Byte gegeben.
Da im LOW Byte jede noch so kleine Differenz aufaddiert wird, geht mir auch keine Nachkommastelle verloren. Fürher oder später wird kommt auch eine Differenz von 1 durch das ewige addieren am Ausgang an.
Ich hab im DEV-C Compiler mal das Äquivalent dazu geschrieben und mir die Zahlenreihen in ein .txt drucken lassen und die dann wieder in Ecxel eingefügt. Sehen wir es uns doch mal an:
Lesezeichen