Für dsa Hochzählen der Zeit sollte man eine Ganzzahl variable nehmen, also eher die Zeit in µs, vielfachen von 128 µs, oder einfach der Zahl der Überläufe (entspricht 256 mal 128 µs = 32,768 ms). Das sind dann rund 30 Interrupts pro Sekunde. Dafür reicht ggf, schon ein 16 Bit Word variable (bis ca. 2000 Sekunden) oder halt ein Long.
Das hochzählen mit Fließkommazahlen geht im Prinzip ist aber recht langsam und man kann Rundungsfehler bekommen die sich irgendwann aufaddieren. Die Umrechnung in die Genaue Zeitskala kann man besser später beim Auslesen machen. Die FP Multiplikation ist auch nicht so langsam wird dann aber viel seltener gebraucht. Dabei kann man ggf. auch Abweichungen der Quarzfrequenz berücksichtigen.
Der Fehler ist bei der Zeit für den Overflow, das sind rund 32 ms, nicht 128 ms. Außerdem sollte die Addition von Uint64 und Float ein Problem machen. Da müsste der Typ schon float sein.
Lesezeichen