Float berechnungen und Ausgabe auf Atmel128

OP #328386
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
Gast #328387
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);

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