16 oder 32 Bit-Variable

#3957971
Lesenswert?

Hallo zusmmanen,

ich hab folgenden Code:
1
WRT0 = Ubat_errechnen(232, 3300);
2
....
3

4
int Ubat_errechnen (int wert, int ref) 
5
{
6
  uint16_t result = 0;      //max. Wert 3300 (Wert 256 x 3300 Ref. / 256)
7
  result = wert * ref / 256;  //erst Multiplikation um Rundungsfehler zu minimieren
8

9
  return result;
10
}

In der Simulation im AVR-Studio erwarte ich jetzt eigentlich als 
Rückgabewert "2990", doch in der Varible result steht "65455". Warum ?

Könnte es sein, dass der µC (Atmega8) mit den Zwischenergebnis "765.600" 
(bevor er mit 256 diviert) ist klar kommt, da dieser größer als 16 Bits 
ist ? Auch wenn ich die Variable "result" mit uint32_t deklariere, kommt 
nur Mist raus. Was mache ich falsch ?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren