@@ -207,6 +207,9 @@ def __init__(self, *, refresh_rate: int = 10) -> None:
207
207
self ._humidity_oversample = 0b010
208
208
self ._filter = 0b010
209
209
210
+ # Gas measurements, as a mask applied to _BME680_RUNGAS
211
+ self ._run_gas = 0xFF
212
+
210
213
self ._adc_pres = None
211
214
self ._adc_temp = None
212
215
self ._adc_hum = None
@@ -389,9 +392,9 @@ def _perform_reading(self) -> None:
389
392
self ._write (_BME680_REG_CTRL_HUM , [self ._humidity_oversample ])
390
393
# gas measurements enabled
391
394
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 ])
393
396
else :
394
- self ._write (_BME680_REG_CTRL_GAS , [_BME680_RUNGAS ])
397
+ self ._write (_BME680_REG_CTRL_GAS , [( self . _run_gas & _BME680_RUNGAS ) ])
395
398
ctrl = self ._read_byte (_BME680_REG_CTRL_MEAS )
396
399
ctrl = (ctrl & 0xFC ) | 0x01 # enable single shot!
397
400
self ._write (_BME680_REG_CTRL_MEAS , [ctrl ])
@@ -492,6 +495,7 @@ def _set_heatr_conf(
492
495
else :
493
496
hctrl = _BME68X_DISABLE_HEATER
494
497
run_gas = _BME68X_DISABLE_GAS_MEAS
498
+ self ._run_gas = ~ (run_gas - 1 )
495
499
496
500
ctrl_gas_data_0 = bme_set_bits (
497
501
ctrl_gas_data_0 , _BME68X_HCTRL_MSK , _BME68X_HCTRL_POS , hctrl
@@ -598,7 +602,7 @@ def _calc_gas_wait(self, dur: int) -> int:
598
602
factor : int = 0
599
603
durval : int = 0xFF # Max duration
600
604
601
- if dur < 0xFC0 :
605
+ if dur >= 0xFC0 :
602
606
return durval
603
607
while dur > 0x3F :
604
608
dur = dur / 4
0 commit comments