Gast
#3664180
Moin, ich habe hier folgende Funktion geschrieben. Urpsrünglich hatte ich sie für float Werte geschrieben, was auch funktioniert hat. Jetzt möchte ich sie auf Integer Werte umschreiben und bekomme falsche Werte. Sicherlich läuft ein Integer über oder so, aber ich weiss nicht wo.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
Erwarten würde ich: _ocr1a = 1600*50/100 = 80.000/100 = 800 Das Ergebnis ist: _ocr1a = 144 Ich dachte erst, dass das Zwischenergebnis von 80.000 das Problem wäre, da es nicht in uint16_t passt. Aber die Berechnung mit uint32_t ergab das gleiche unsinnige Ergebnis. Ich sehe meinen Fehler gerade echt nicht... Viele Grüße, Christian