fix fixed-point calclulations

This commit is contained in:
eddyem 2018-05-27 19:09:10 +03:00
parent a6ef59c73e
commit 87784ffbda

View File

@ -96,7 +96,7 @@ uint8_t calc_t(uint32_t t, int i){
int j;
double d = (double)t/256., tmp = 0.;
// k0*(-1.5e-2) + 0.1*1e-5*val*(1*k1 + 1e-5*val*(-2.*k2 + 1e-5*val*(4*k3 + 1e-5*val*(-2*k4))))
double mul[5] = {-1.5e-2, 1., -2., 4., -2.};
const double mul[5] = {-1.5e-2, 1., -2., 4., -2.};
for(j = 4; j > 0; --j){
tmp += mul[j] * (double)coefficients[i][j];
tmp *= 1e-5*d;
@ -121,17 +121,23 @@ uint8_t calc_t(uint32_t t, int i){
return 1;
}
/*
void calc_t(){
int i;
for(i = 0; i < 2; ++i){
if(!Tlast[i] || !coefficients[i][0]) continue;
uint8_t calc_t(uint32_t t, int i){
if(coefficients[i][0] == 0){
if(i == 0) showcoeffs(TSYS01_ADDR0, 0);
else showcoeffs(TSYS01_ADDR1, 0);
}
if(coefficients[i][0] == 0){
SEND("no sensor\n");
return 0;
}
if (t < 6500000 || t > 13000000) return 0; // wrong value - too small or too large
int j;
int64_t d = Tlast[i], tmp = 0.;
int64_t d = t, tmp = 0.;
// k0*(-1.5e-2) + 0.1*1e-5*val*(1*k1 + 1e-5*val*(-2.*k2 + 1e-5*val*(4*k3 + 1e-5*val*(-2*k4))))
int8_t mul[5] = {0, 1, -2, 4, -2};
for(j = 4; j > 0; --j){
tmp /= 100000;
tmp += mul[j] * (double)coefficients[i][j];
tmp += mul[j] * coefficients[i][j];
tmp *= d;
tmp >>= 8; // (/256)
}
@ -152,7 +158,7 @@ void calc_t(){
SEND(".");
printu((uint32_t)tmp);
newline();
}
return 1;
}*/
int main(void){