Bonsoir à tous,
Je suis en train de programmer un pic 8 bit (pic16f1777) pour un asservissement de température.
J'ai une fonction qui fait deux trois calculs en faisant appel à la fonction pow() de <math.h>, et là, 25% d'espace programme bouffé !
Okay faire des calculs sur des flottants sur un pic 8 bit a un coût, mais à ce point là ?
Voici la fonction en question :
Code:double servo_temperatureToNISTVoltage(double temperature){ //to convert LM35 temperature to thermoelectric voltage using NIST equations const double c[6] = { -0.176004136860e-1, 0.389212049750e-1, 0.185587700320e-4, -0.994575928740e-7, 0.318409457190e-9, -0.560728448890e-12 }; double voltage = 0; uint8_t i = 0; for(i = 0; i < 6; i++){ voltage += c[i]*pow(temperature, i); } voltage += a0*exp(a1*pow(temperature - a2, 2)); return voltage; }
C'est bien la fonction pow() qui prend toute cette place. Si j'enlève le bout de code qui utilise cette fonction, je regagne mes 25% d'espace programme
Pourquoi cette fonction prend autant de place ? Une telle implémentation sur un micro ce n'est pas bien pratique...
Quelqu'un pourrait me fournir quelques explications ?
Merci beaucoup !
-----