Forum: Mikrocontroller und Digitale Elektronik Problem AVR Studio 4 - Variablen


von Sascha G. (sascha-g)


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

von Christoph B. (christophbudelmann) Benutzerseite


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.

von Joachim R. (jorath)


Lesenswert?

Hallo,

Ja,
das Problem liegt an dem Menschen der vor dem AVR Studio 4 sitzt :-)

poste deinen Sourcecode

Gruß aus dem Odenwald

von yalu (Gast)


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;

von Sascha G. (sascha-g)


Lesenswert?

okay danke der Tip hat geholfen



Gruß


Sascha

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.