High resolution barometer and altimeter using i2c mode

Dependents:   Q2_Stabi

Fork of ms5611 by Kevin Braun

Revision:
10:44e5b491a88c
Parent:
8:461f68bc94f2
Child:
11:e0417b67a4b5
--- a/ms5611.cpp	Tue Apr 28 23:36:22 2015 +0000
+++ b/ms5611.cpp	Tue Dec 01 17:23:12 2015 +0000
@@ -300,25 +300,25 @@
     int64_t dT = D2 - ((uint64_t)C[5] << 8);
     int64_t OFF  = ((uint32_t)C[2] << 16) + ((dT * (C[4]) >> 7));     //was  OFF  = (C[2] << 17) + dT * C[4] / (1 << 6);
     int64_t SENS = ((uint32_t)C[1] << 15) + ((dT * (C[3]) >> 8));     //was  SENS = (C[1] << 16) + dT * C[3] / (1 << 7);
-    T = (2000 + (((uint64_t)dT * C[6]) / (float)(1 << 23))) / 100;
+    T = (float)(2000 + (((uint64_t)dT * C[6]) / (float)(1 << 23))) / 100.0;
     int32_t TEMP = 2000 + (int64_t)dT * (int64_t)C[6] / (int64_t)(1 << 23);
 
     if(TEMP < 2000) { // if temperature lower than 20 Celsius
-        float T1 = (TEMP - 2000) * (TEMP - 2000);
-        int64_t OFF1  = (5 * T1) / 2;
-        int64_t SENS1 = (5 * T1) / 4;
+        float T1 = ((float)TEMP - 2000.0) * ((float)TEMP - 2000.0);
+        int64_t OFF1  = (5 * (int64_t)T1) >> 1;
+        int64_t SENS1 = (5 * (int64_t)T1) >> 2;
 
         if(TEMP < -1500) { // if temperature lower than -15 Celsius
-            T1 = (TEMP + 1500) * (TEMP + 1500);
-            OFF1  += 7 * T1;
-            SENS1 += 11 * T1 / 2;
+            T1 = ((float)TEMP + 1500.0) * ((float)TEMP + 1500.0);
+            OFF1  += 7 * (int64_t)T1;
+            SENS1 += 11 * (int64_t)T1 >> 1;
         } 
         OFF -= OFF1;
         SENS -= SENS1;
-        T = (float)TEMP / 100; 
+        T = (float)TEMP / 100.0; 
     }
 //    int64_t P1 = ((((int64_t)D1 * SENS) >> 21) - OFF) >> 15;   
-    P = ((((int64_t)D1 * SENS ) >> 21) - OFF) / (double) (1 << 15) / 100.0;
+    P = (float)(((((int64_t)D1 * SENS ) >> 21) - OFF) / (double) (1 << 15)) / 100.0;
 }
 
 //********************************************************