High resolution barometer and altimeter using i2c mode
Fork of ms5611 by
Diff: ms5611.cpp
- 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); } //********************************************************