C++ driver software code for Maxim Integrated MAX31723/MAX31722 device temperature sensor. The MAX31723 provides 9 to 12 bits of resolution.
Dependents: MAX31723_Thermostat_Thermometer_Sensor
Diff: max31723.cpp
- Revision:
- 2:7a20e65da621
- Parent:
- 1:bb6f11be119f
- Child:
- 3:f39791139435
--- a/max31723.cpp Sun Jan 27 02:49:07 2019 +0000 +++ b/max31723.cpp Sun Jan 27 07:26:37 2019 +0000 @@ -55,12 +55,14 @@ return MAX31723_NO_ERROR; } -int MAX31723::perform_one_shot(uint8_t resolution) +int MAX31723::perform_one_shot_int(uint8_t resolution) { - if (resolution <= MAX31723_CFG_RESOLUTION_12BIT) - write_reg(resolution | MAX31723_CFG_1SHOT | MAX31723_CFG_STANDBY, + if (resolution <= MAX31723_CFG_RESOLUTION_12BIT) { + write_reg(0, MAX31723_REG_CFG | MAX31723_WRITE_MASK); + write_reg(MAX31723_CFG_TM_MODE_INTERRUPT | MAX31723_CFG_1SHOT | + resolution | MAX31723_CFG_STANDBY, MAX31723_REG_CFG | MAX31723_WRITE_MASK); - else + } else return MAX31723_ERROR; return MAX31723_NO_ERROR; } @@ -70,10 +72,9 @@ uint8_t lsb, msb; uint16_t raw_temp; float temperature; - + wait(0.2); read_reg(lsb, MAX31723_REG_TEMP_LSB); read_reg(msb, MAX31723_REG_TEMP_MSB); - raw_temp = int16_t((msb << 8) | (lsb)); raw_temp = raw_temp >> 4; temperature = raw_temp * 0.0625 ;