High resolution barometer and altimeter using i2c mode

Dependents:   Q2_Stabi

Fork of ms5611 by Kevin Braun

Revision:
8:461f68bc94f2
Parent:
7:90ee2168baa7
Child:
9:6104e8cdb3ec
Child:
10:44e5b491a88c
--- a/ms5611.cpp	Mon Dec 22 23:38:34 2014 +0000
+++ b/ms5611.cpp	Tue Apr 28 23:36:22 2015 +0000
@@ -130,7 +130,13 @@
 //********************************************************
 
 void ms5611::cmd_reset() {
+#if defined  MS5611i2cLOWLEVEL
     m_i2c_send(MS5611_CMD_RESET);
+#else
+    char cobuf[1];
+    cobuf[0] = MS5611_CMD_RESET;
+    _i2c.write(_i2cWAddr, cobuf, 1, false);
+#endif
     wait_ms(4);
     loadCoefs();
 }
@@ -148,7 +154,12 @@
     cobuf[2] = 0;
     unsigned int ret;
     unsigned long temp = 0;
+#if defined  MS5611i2cLOWLEVEL
     m_i2c_send(MS5611_CMD_ADC_CONV + cmd);
+#else
+    cobuf[0] = MS5611_CMD_ADC_CONV + cmd;
+    _i2c.write(_i2cWAddr, cobuf, 1, false);
+#endif
     switch (cmd & 0x0f) {
         case MS5611_CMD_ADC_256 : wait_us(900); break;
         case MS5611_CMD_ADC_512 : wait_ms(3); break;
@@ -156,10 +167,15 @@
         case MS5611_CMD_ADC_2048: wait_ms(6); break;
         case MS5611_CMD_ADC_4096: wait_ms(10); break;
     }
+#if defined  MS5611i2cLOWLEVEL
     m_i2c_send(MS5611_CMD_ADC_READ);
-    
+#else
+    cobuf[0] = MS5611_CMD_ADC_READ;
+    _i2c.write(_i2cWAddr, cobuf, 1, true);
+    cobuf[0] = 0;
+#endif    
     ret = _i2c.read(_i2cRAddr, cobuf, 3, false);
-    if(ret) printf("\n*** ms5611 ADC Read Error ");
+    //if(ret) printf("\n*** ms5611 ADC Read Error ");
     temp = (cobuf[0] << 16) + (cobuf[1] << 8) + cobuf[2];
     return temp;
 }
@@ -176,9 +192,15 @@
     unsigned int rC = 0;
     cobuf[0] = 0;
     cobuf[1] = 0;
+#if defined  MS5611i2cLOWLEVEL
     m_i2c_send(MS5611_CMD_PROM_RD + coef_num * 2); // send PROM READ command
+#else
+    cobuf[0] = MS5611_CMD_PROM_RD + coef_num * 2;
+    _i2c.write(_i2cWAddr, cobuf, 1, true);
+    cobuf[0] = 0;
+#endif
     ret = _i2c.read(_i2cRAddr, cobuf, 2, false);
-    if(ret) printf("\n*** ms5611 PROM Read Error ");
+    //if(ret) printf("\n*** ms5611 PROM Read Error ");
     rC = cobuf[0] * 256 + cobuf[1];
     return rC;
 }
@@ -256,11 +278,14 @@
 //********************************************************
 
 void ms5611::loadCoefs() {
+    //printf(" - ms5611 coeffs\r\n");
     for (int i = 0; i < 8; i++){ 
         wait_ms(50);
         C[i] = cmd_prom(i);
+        //printf("   - C[%d] = 0x%04x\r\n", i, C[i]);
     }
     unsigned char n_crc = crc4(C);
+    //printf("   - crc  = 0x%02x\r\n", n_crc);
 }
 
 //********************************************************