www.mikrocontroller.net

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


Autor: Sascha G. (sascha-g)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Christoph Budelmann (Firma: Budelmann Elektronik GmbH) (christophbudelmann) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Joachim Rath (jorath)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

poste deinen Sourcecode

Gruß aus dem Odenwald

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
  int adcwert1, adcwert2;
  long ergebnis;

  ergebnis = (long)adcwert1 * adcwert2;

Autor: Sascha G. (sascha-g)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
okay danke der Tip hat geholfen



Gruß


Sascha

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.