1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| //Second order compensation
if((Ms5837_Temp/100)<20){ //Low temp
Ti = (3*(int64_t)(dT)*(int64_t)(dT))/(8589934592LL);
OFFi = (3*(Ms5837_Temp-2000)*(Ms5837_Temp-2000))/2;
SENSi = (5*(Ms5837_Temp-2000)*(Ms5837_Temp-2000))/8;
if((Ms5837_Temp/100)<-15){ //Very low temp
OFFi = OFFi+7*(Ms5837_Temp+1500l)*(Ms5837_Temp+1500l);
SENSi = SENSi+4*(Ms5837_Temp+1500l)*(Ms5837_Temp+1500l);
}
}
else if((Ms5837_Temp/100)>=20){ //High temp
Ti = 2*(dT*dT)/(137438953472LL);
OFFi = (1*(Ms5837_Temp-2000)*(Ms5837_Temp-2000))/16;
SENSi = 0;
}
OFF2 = OFF-OFFi; //Calculate pressure and temp second order
SENS2 = SENS-SENSi;
Ms5837_Temp = (Ms5837_Temp-Ti);
Ms5837_P = (((D1*SENS2)/2097152l-OFF2)/8192l);
|