@@ -141,7 +141,11 @@ def __init__(self, i2c, *, address=_MPL3115A2_ADDRESS):
141
141
pass
142
142
time .sleep (0.01 )
143
143
# Poll for the reset to finish.
144
- self ._poll_reg1 (_MPL3115A2_CTRL_REG1_RST )
144
+ # try/except is a hack for RP2040
145
+ try :
146
+ self ._poll_reg1 (_MPL3115A2_CTRL_REG1_RST )
147
+ except OSError :
148
+ self ._poll_reg1 (_MPL3115A2_CTRL_REG1_RST )
145
149
# Configure the chip registers with default values.
146
150
self ._ctrl_reg1 = _MPL3115A2_CTRL_REG1_OS128 | _MPL3115A2_CTRL_REG1_ALT
147
151
self ._write_u8 (_MPL3115A2_CTRL_REG1 , self ._ctrl_reg1 )
@@ -198,7 +202,7 @@ def pressure(self):
198
202
self ._write_u8 (_MPL3115A2_CTRL_REG1 , self ._ctrl_reg1 )
199
203
self ._ctrl_reg1 |= 0b00000010 # Set OST to 1 to start measurement.
200
204
self ._write_u8 (_MPL3115A2_CTRL_REG1 , self ._ctrl_reg1 )
201
- # Poll status for PDR to be set.
205
+ # Poll status for PDR to be set = press conversion complete
202
206
while (
203
207
self ._read_u8 (_MPL3115A2_REGISTER_STATUS ) & _MPL3115A2_REGISTER_STATUS_PDR
204
208
== 0
@@ -211,8 +215,8 @@ def pressure(self):
211
215
(self ._BUFFER [0 ] << 16 ) | (self ._BUFFER [1 ] << 8 ) | self ._BUFFER [2 ]
212
216
) & 0xFFFFFF
213
217
pressure >>= 4
214
- # Scale down to pascals .
215
- return pressure / 4 .0
218
+ # Scale down to hectopascals .
219
+ return pressure / 400 .0
216
220
217
221
@property
218
222
def altitude (self ):
@@ -248,7 +252,12 @@ def altitude(self):
248
252
@property
249
253
def temperature (self ):
250
254
"""Read the temperature as measured by the sensor in degrees Celsius."""
251
- # Poll status for TDR to be set.
255
+ # First poll for a measurement to be finished.
256
+ self ._poll_reg1 (_MPL3115A2_CTRL_REG1_OST )
257
+ # Initatiate a one-shot measurement
258
+ self ._ctrl_reg1 |= 0b00000010 # Set OST to 1 to start measurement.
259
+ self ._write_u8 (_MPL3115A2_CTRL_REG1 , self ._ctrl_reg1 )
260
+ # Poll status for TDR to be set = temp conv complete
252
261
while (
253
262
self ._read_u8 (_MPL3115A2_REGISTER_STATUS ) & _MPL3115A2_REGISTER_STATUS_TDR
254
263
== 0
0 commit comments