Zitat Zitat von Ceos Beitrag anzeigen
hatte ich auch zuerst vermutet, aber er verwendet in seinem Code ja Datentypen die auf den Timer passen also unsigned int 16 und wenn ich 2 uint16 subtrahiere macht der überlauf garnichts aus, die differenz ist immer gleich und immer positiv, der Vorteil von uint halt
Du wirst sicher recht haben. Aber mir gefällt es grundsätzlich nicht, daß ein Programm nur mit Sideeffects funktioniert. Das mag in Assenbler noch angehen, in anderen Sprachen gibt es unsigned gar nicht. Ich versuche alles so zu halten, daß ein int zwar mindestens 16 Bit hat, der Code aber auch funktioniert, wenn es mal 64 sind. Mir sind noch die Problem beim Übergang von 16-Bit auf 32-Bit Code in Erinnerung. "unsigned" heißt bei mir eigentlich immer, es ist das Abbild eines HW-Registers, und da ist die Anzahl der benutzten Bits fest im Silizium. 10/12/14 Bit ADCs kann man direkt in ein int16_t einlesen und weiterrechnen, obwohl sie nie negativ werden. Nur bei Timern, wie hier, werden häufig alle Bits genutzt.

Das sind aber meine persönlichen Vorlieben. Ich war hier einfach zu faul, das Ganze beim Überlauf mal durch den Debugger laufen zu lassen und alle Grenzwerte auszutesten. Wenn bei tausend Touren mal eine Umdrehung nicht gemessen wird, merkt man das in der Anzeige nicht und es ist halt so im Code geblieben.

MfG Klebwax