Problem AVR Studio 4 - Variablen

OP #1089172
Lesenswert?

Hallo,

ich habe ein kleines Problem mit meinem AVR Studio 4 ich lese 2 ADCs ein 
und will diese multiplizieren dafür speichere ich sie zuerst in einer 
int-Variablen und multipliezie sie dann und speichere das Ergebnis in 
einer unsigned long variable leider  gibt der Compiler mir als Ergebnis 
immer 0 oder 64512  zurück obwohl der Größtmöglichste wert 1024*1024 
ist. Hat einer von euch eine Ahnung woran das liegt?


Gruß

Sascha
Persönliche Seite #1089183
Lesenswert?

Sascha G. wrote:
> ich habe ein kleines Problem mit meinem AVR Studio 4 ich lese 2 ADCs ein
> und will diese multiplizieren dafür speichere ich sie zuerst in einer
> int-Variablen und multipliezie sie dann und speichere das Ergebnis in
> einer unsigned long variable leider  gibt der Compiler mir als Ergebnis
> immer 0 oder 64512  zurück obwohl der Größtmöglichste wert 1024*1024
> ist. Hat einer von euch eine Ahnung woran das liegt?

Poste mal den Code. Eventuell musst du da mal casten.
Gast #1089203
Lesenswert?

Das Ergebnis einer int-Multiplikation ist auf 32767 (bzw. 65535 bei
unsigned int) beschränkt. Du musst mindestens einen der beiden Faktoren
nach long (oder unsigned long) casten, damit die Multiplikation
ebenfalls als long ausgeführt wird. Also bspw. so:
1
  int adcwert1, adcwert2;
2
  long ergebnis;
3

4
  ergebnis = (long)adcwert1 * adcwert2;

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