mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Float berechnungen und Ausgabe auf Atmel128


Autor: Thomas O. (tommyo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich bin seit einigen Tagen ratlos...
Ich habe einen Atmel128 und den ICC AVR Compiler.
Da ich einen PT100 an  einem ADC hängen habe, müsste ich mit floating
point Zahlen rechnen. Integer Berechnungen und Ausgabe mit fprintf und
printf klappen. Nur eben nicht float.

Der Code ist im Moment:
...
if (strncmp("te", buff, got) == 0) {
    float temp = 0;

   ADCSetup();                                //vorbereiten des ADCs
   fprintf(stream, "Read Temperature...\r\n");

  for(i = 0; i<11; i++) {
      Result = (float)ADConvert(1,1);         // Ch. 1 mit Divfaktor 1
                                              // liefert Int
      fprintf(stream, "The ADC Result: %i \r\n", Result);
    temp  = (float)temp + ((float)Result * (float)2.5600 )/(float)1024
}

temp = (float)temp/(float)10.0000;

fprintf(stream, "The voltage on ADC: %.6f [V]\r\n", temp);


.....
}



Im Compiler (ICC AVR Version 6.28) hab ich schon die Option "Printf
Version - float" gewählt und meine Return Stack Size auf 128 gesetzt.

Versuchshalber hab ich extra noch #include "float.h" gesetzt. Aber
leider ohne Erfolg. Auch wenn ich eine float Variable fest definier,
also float var = 1.23; und dann mit printf("...%f",var); ausgebe
klappts nicht.

Wäre super wenn jemand das gleiche Problem hatte und gelöst hat.

Grüße Thomas

Autor: Profi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
versuchs mal mit
#include <math.h>

Ich würde trotzdem versuchen, ohne float auszukommen, nämlich mit
fixed-point:
temp = temp + adc*256;

fprintf(stream, "The voltage on ADC: %d.%03d [V]\r\n",
temp/100,temp%100);

Autor: Thomas O. (tommyo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Cool fixed-point macht er wunderbar!
Vielen Dank.
Aber im Prinzip soll es doch einfach sein mit float auf AVRs zu
rechnen?
Oder wendet man eigendlich immer fixed-point an?

Gruß
Thomas

Autor: Thomas O. (tommyo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://www.mikrocontroller.net/forum/read-1-120732.html#new

hier wurde das Thema auch besprochen.

Für die, die es wissen wollen.

Gruß
Thomas

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.