Ich muss 2 Zahlen die in 16bit Reinpassen miteinander multiplizieren.
Das Ergebnis speichere ich in einer Variablen mit 32 bit. Danach möchte
ich die Zahl durch einen eigestellten Teiler teilen, und am Display
ausgeben.
Dafür hab ich folgenden Code geschrieben:
1 | uint16_t adtg = 9765;
|
2 | uint16_t adcval_1 = 798;
|
3 | uint32_t temp_32;
|
4 | uint16_t teiler = 10000;
|
5 | uint16_t erg;
|
6 |
|
7 | temp_32 = adtg*adcval_1;
|
8 | erg = temp_32/teiler;
|
Also:
9756*798=7785288
7785288/10000=778.5288
Ich dachte, dass die Nachkommastellen jetz einfach verworfen werden da
es sich ja un einen Integer handelt (Die nachkommastellen brauch ich
auch nicht) und einfach 778 ausgegeben wird. Leider funktioniert das
nicht.
Denke da hab ich wohl irgendeien fehler oder Wickel mit den 32 und 16
bit!
Wer kann mir sagen wie es richtig geht?