Hi,
in der Zeile "way_end[ch] = way_akt[ch] / factor; " ist das auch schon so eine Sache...
way_akt[ch] ist doch ein uint16_t aber factor ist ein float oder double.
In dem Fall hast du nicht wirklich festgelegt, ob er jetzt mit floats oder mit ints rechnen soll.
Erst wenn du "way_end[ch] = (uint16_t)((double)way_akt[ch] / factor);" machst, kannst du dir wirklich sicher sein, dass er tut was du willst.
Das ist zwar übertrieben, da es vorher ja auch ging, allerdings ist es wirklich ärgerlich, wenn man lange nach einem Fehler sucht und es an einem fehlenden "(float)" lag.
Ich mache das deshalb bei Formeln mit verschiedenen Variablen-Typen immer so, dass der Compiler garnicht erst daran denken kann etwas anders zu machen als ich es will...
Dein 255.0000 ist allerdings wirklich übertieben, denn 255.0 reicht sicher.
Wer sich wirklich mit Compilern auskennt (ich tu es nicht), für den ist es völlig klar, was wann überflüssig ist und wann nicht, allerdings geh ich lieber auf Nummer sicher...
MfG Alex
Lesezeichen