bme280_xxx: Check the status register for completion

Instead of just waiting a safe time, check the status register
for completion of the measurement. The drawback is a slightly
increased power consumption.
pull/6/head
hh 2018-11-19 21:47:38 +01:00
rodzic 7bd268d0fa
commit db8689bd9a
2 zmienionych plików z 8 dodań i 8 usunięć

Wyświetl plik

@ -47,6 +47,7 @@ BME280_OSAMPLE_8 = 4
BME280_OSAMPLE_16 = 5 BME280_OSAMPLE_16 = 5
BME280_REGISTER_CONTROL_HUM = 0xF2 BME280_REGISTER_CONTROL_HUM = 0xF2
BME280_REGISTER_STATUS = 0xF3
BME280_REGISTER_CONTROL = 0xF4 BME280_REGISTER_CONTROL = 0xF4
@ -115,10 +116,9 @@ class BME280:
self.i2c.writeto_mem(self.address, BME280_REGISTER_CONTROL, self.i2c.writeto_mem(self.address, BME280_REGISTER_CONTROL,
self._l1_barray) self._l1_barray)
sleep_time = 1250 + 2300 * (1 << self._mode) # Wait for conversion to complete
sleep_time = sleep_time + 2300 * (1 << self._mode) + 575 while self.i2c.readfrom_mem(self.address, BME280_REGISTER_STATUS, 1)[0] & 0x08:
sleep_time = sleep_time + 2300 * (1 << self._mode) + 575 time.sleep_ms(10)
time.sleep_us(sleep_time) # Wait the required time
# burst readout from 0xF7 to 0xFE, recommended by datasheet # burst readout from 0xF7 to 0xFE, recommended by datasheet
self.i2c.readfrom_mem_into(self.address, 0xF7, self._l8_barray) self.i2c.readfrom_mem_into(self.address, 0xF7, self._l8_barray)

Wyświetl plik

@ -47,6 +47,7 @@ BME280_OSAMPLE_8 = 4
BME280_OSAMPLE_16 = 5 BME280_OSAMPLE_16 = 5
BME280_REGISTER_CONTROL_HUM = 0xF2 BME280_REGISTER_CONTROL_HUM = 0xF2
BME280_REGISTER_STATUS = 0xF3
BME280_REGISTER_CONTROL = 0xF4 BME280_REGISTER_CONTROL = 0xF4
@ -114,10 +115,9 @@ class BME280:
self.i2c.writeto_mem(self.address, BME280_REGISTER_CONTROL, self.i2c.writeto_mem(self.address, BME280_REGISTER_CONTROL,
self._l1_barray) self._l1_barray)
sleep_time = 1250 + 2300 * (1 << self._mode) # Wait for conversion to complete
sleep_time = sleep_time + 2300 * (1 << self._mode) + 575 while self.i2c.readfrom_mem(self.address, BME280_REGISTER_STATUS, 1)[0] & 0x08:
sleep_time = sleep_time + 2300 * (1 << self._mode) + 575 time.sleep_ms(10)
time.sleep_us(sleep_time) # Wait the required time
# burst readout from 0xF7 to 0xFE, recommended by datasheet # burst readout from 0xF7 to 0xFE, recommended by datasheet
self.i2c.readfrom_mem_into(self.address, 0xF7, self._l8_barray) self.i2c.readfrom_mem_into(self.address, 0xF7, self._l8_barray)