Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
Так вот, время выполнения 4500 тактов для обоих!
Надеялся, что 16-битник будет по-шустрее, а вот фиг вам.
unsigned int IT2(unsigned int T)
{
#define Rd 4990
#define Rt0 10000
const double _8016[48] = {
Rt0*96.3, Rt0*67.01, Rt0*47.17, Rt0*33.65, Rt0*24.26, Rt0*17.70, Rt0*13.04, Rt0*9.707, Rt0*7.293, Rt0*5.533, Rt0*4.232, Rt0*3.265, Rt0*2.539, Rt0*1.990, Rt0*1.571, Rt0*1.249, Rt0*1.000, Rt0*0.8057, Rt0*0.6531, Rt0*0.5327, Rt0*0.4369, Rt0*0.3603, Rt0*0.2986, Rt0*0.2488, Rt0*0.2063, Rt0*0.1752, Rt0*0.1481, Rt0*0.1258, Rt0*0.1072, Rt0*0.09177, Rt0*0.07885, Rt0*0.06800, Rt0*0.05886, Rt0*0.05112, Rt0*0.04454, Rt0*0.03893, Rt0*0.03417, Rt0*0.03009, Rt0*0.02654, Rt0*0.02348, Rt0*0.02083, Rt0*0.01853, Rt0*0.01653, Rt0*0.01478, Rt0*0.01323, Rt0*0.01183, Rt0*0.01053, Rt0*0.00928 };
char i;
unsigned int R;
double F;
F = (double)Tadc * Rd / (65536 - Tadc);
i = 0;
while ((i <= 41) && (F < _8016[i])) i++;
if (i==0) F = -56;
else
if (i==42) F = 151;
else
F = ((i-1)*5-55) + 5 / (_8016[i]-_8016[i-1]) * (F-_8016[i-1]);
F = F*300+20000;
R = (unsigned int) F;
return R;
}
//вызов функции:
unsigned int DD;
DD = IT2(15000);