@@ -207,6 +207,9 @@ def __init__(self, *, refresh_rate: int = 10) -> None:
207207 self ._humidity_oversample = 0b010
208208 self ._filter = 0b010
209209
210+ # Gas measurements, as a mask applied to _BME680_RUNGAS
211+ self ._run_gas = 0xFF
212+
210213 self ._adc_pres = None
211214 self ._adc_temp = None
212215 self ._adc_hum = None
@@ -389,9 +392,9 @@ def _perform_reading(self) -> None:
389392 self ._write (_BME680_REG_CTRL_HUM , [self ._humidity_oversample ])
390393 # gas measurements enabled
391394 if self ._chip_variant == 0x01 :
392- self ._write (_BME680_REG_CTRL_GAS , [_BME680_RUNGAS << 1 ])
395+ self ._write (_BME680_REG_CTRL_GAS , [( self . _run_gas & _BME680_RUNGAS ) << 1 ])
393396 else :
394- self ._write (_BME680_REG_CTRL_GAS , [_BME680_RUNGAS ])
397+ self ._write (_BME680_REG_CTRL_GAS , [( self . _run_gas & _BME680_RUNGAS ) ])
395398 ctrl = self ._read_byte (_BME680_REG_CTRL_MEAS )
396399 ctrl = (ctrl & 0xFC ) | 0x01 # enable single shot!
397400 self ._write (_BME680_REG_CTRL_MEAS , [ctrl ])
@@ -492,6 +495,7 @@ def _set_heatr_conf(
492495 else :
493496 hctrl = _BME68X_DISABLE_HEATER
494497 run_gas = _BME68X_DISABLE_GAS_MEAS
498+ self ._run_gas = ~ (run_gas - 1 )
495499
496500 ctrl_gas_data_0 = bme_set_bits (
497501 ctrl_gas_data_0 , _BME68X_HCTRL_MSK , _BME68X_HCTRL_POS , hctrl
@@ -598,7 +602,7 @@ def _calc_gas_wait(self, dur: int) -> int:
598602 factor : int = 0
599603 durval : int = 0xFF # Max duration
600604
601- if dur < 0xFC0 :
605+ if dur > 0xFC0 :
602606 return durval
603607 while dur > 0x3F :
604608 dur = dur / 4
0 commit comments