www.mikrocontroller.net

Forum: Compiler & IDEs double


Autor: bst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
double "verschwendet" im ATmega 8 Byte meines Wissens.
Wenn man nun Temperaturwerte im XX.X Format verarbeiten will, kann man 
das effizienter als mit double lösen?

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Größe eines doubles hat nichts mit dem uC zu tun, sondern hängt vom 
Compiler ab. Bei avr-gcc sind es z.B. 4Byte.

Für Temperaturdarstellung verwende ich gerne Festkommazahlen im 8.8 
Format:
Ein Byte für die ganzen Zahlen (-128...+127) und ein Byte für die 
Nachkommastellen in 1/256 Schritten.

Autor: bst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Daran habe ich auch schon gedacht, aber wenn man mit den GENAUEN Werten 
rechnen will (z.B. um Temperaturbereiche auszuwerten), kommt man wohl 
nicht um double umher, oder?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube kaum, dass dein Temperatursensor eine Genauigkeit hat, die 
besser ist als 1/256 Grad.

Autor: bst (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das nicht, aber wie vergleichst du ein double (z.B. 21,43°) mit einer 
Zahl, die in eine ganze Zahl + Nachkommastelle aufgeteilt ist?

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gar nicht. Ich vergleiche einfach zwei Zahlen, die jeweils in eine ganze 
Zahl + Nachkommastellen aufgeteilt sind, miteinander.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ganz einfach: Man schreibt 21,43 nicht als double sondern als 
Festkommazahl:
21,43°C entspricht 5486.
Die Temperatur wird einfach mit 256 multipliziert und als signed int 
gespeichert. Damit lässt sich wunderbar rechnen, nur beim Anzeigen des 
Wertes muss man den wieder zurückrechnen: Das Highbyte kann man direkt 
anzeigen, dann kommt das Komma und danach noch die beiden Stellen von 
Lowbyte*100/256.
Dies ergibt die ersten beiden Nachkommstellen.

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Im Prinzip muss man es auch nicht auf eine bestimmte Anzahl an 
Nachkommabits festlegen. Man könnte die Temperatur z.B. auch einfach 
direkt in Hunderstelgrad abspeichern. Dann fällt die Rechnung beim 
Anzeigen auch noch weg. Man kann die Zahl einfach so ausgeben und muss 
nur das Komma an der richtigen Stelle einfügen. Die 21,43° entsprechen 
dann eben dem Wert 2143.

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.