1 2 3 4 5 6 7 8 | // Terms called dT = D2-(uint32_t)(C[5])*256L; SENS = (int64_t)(C[1])*32768L+((int64_t)(C[3])*dT)/256L; OFF = (int64_t)(C[2])*65536L+((int64_t)(C[4])*dT)/128L; //Temp and P conversion Ms5837_Temp = 2000L+(int64_t)(dT)*C[6]/8388608LL; Ms5837_P = (D1*SENS/(2097152L)-OFF)/(8192l); |
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); |
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |