double in IAR für AVR

26/03/2010 - 16:55 von Andreas Ruetten | Report spam
Hallo,
benutzt hier jemand den IAR für den AVR?


Ich verzweifele gerade .


Folgende Routine làuft unter Codevision AVR :

double PT100_Temp(double R)
{

double T = 0;
double x1 , x2 , x3 , x4 , x5 ;

x1 = ( 3.908302E-3 * (double)100 ) * ( 3.908302E-3 * (double)100 ) ;
x2 = ( 2 * -5.802E-7 * (double)100 ) ;
x3 = ( 4 * -5.802E-7 * (double)100* ( (double)100-R)) ;
x4 = (-3.908302E-3 * (double)100 ) ;

T = ((-3.908302E-3*(double)100)+( sqrt( ( ((3.908302E-
3*(double)100)*(3.908302E-3*(double)100))-
(4*-5.802E-7*(double)100*((double)100-R))) ) ))/(2*-5.802E-7*(double)100);

x5 = x1 - x3 ;
x5 = sqrt(x5) ;

T = x4 + x5 ;
T = T / x2 ;

return T;
}



Unter dem IAR kommt schon bei x1 0 Raus !!!
Und bei T= zerlegt es das ganze Programm ( Stack overflow ??)



Verwendet wird ein AtMega88.


Der IAR soll verwendet werden, weil der wohl der einzige AVR Compiler
ist der double unterstützt.

Im Moment verwenden wir zum Test die 30 Tage Eval Version.
Wenn das mit der Genauigkeit funktioniert wie gewünscht, dann würden
wir die Vollversion kaufen.
Im Moment haben wir daher auch keinen Support von IAR.


Andreas
 

Lesen sie die antworten

#1 Klaus Bahner
26/03/2010 - 17:16 | Warnen spam
Hallo Andreas,

Andreas Ruetten wrote:

Unter dem IAR kommt schon bei x1 0 Raus !!!
Und bei T= zerlegt es das ganze Programm ( Stack overflow ??)



Kenne den IAR nicht, aber hast du acuh die entsprechende Bibliothek
eingebunden? 64-bit-Fliesskomma-Arithmetik auf einem 8-bit Processor zu
implementieren, duerfte so viel Code/Performance erfordern, dass der
Compiler/Linker dass bestimmt nicht automatisch unterstuetzt, sondern
nur auf Anforderung.


Der IAR soll verwendet werden, weil der wohl der einzige AVR Compiler
ist der double unterstützt.



Warum eigentlich? In deinem geposteten Code Beispiel, kann ich nicht
unmittelbar sehen, warum 32-bit Fliesskomma nicht ausreichend sein
sollte. Und du willst vermutlich auch nicht Temperatur einer Aufloesung
von mehr als 5-6 Nachkommastellen messen.


Im Moment verwenden wir zum Test die 30 Tage Eval Version.
Wenn das mit der Genauigkeit funktioniert wie gewünscht, dann würden
wir die Vollversion kaufen.
Im Moment haben wir daher auch keinen Support von IAR.



Ich denke, wenn du denen sagst, dass dieses Feature kaufentscheiden ist,
dann werden dir die schon weiterhelfen.

Gruss
Klaus

Ähnliche fragen