@@ -112,8 +112,13 @@ def __init__(self, i2c, *, address=_MPL3115A2_ADDRESS):
112
112
# Validate the chip ID.
113
113
if self ._read_u8 (_MPL3115A2_WHOAMI ) != 0xC4 :
114
114
raise RuntimeError ('Failed to find MPL3115A2, check your wiring!' )
115
- # Reset.
116
- self ._write_u8 (_MPL3115A2_CTRL_REG1 , _MPL3115A2_CTRL_REG1_RST )
115
+ # Reset. Note the chip immediately resets and won't send an I2C back
116
+ # so we need to catch the OSError and swallow it (otherwise this fails
117
+ # expecting an ACK that never comes).
118
+ try :
119
+ self ._write_u8 (_MPL3115A2_CTRL_REG1 , _MPL3115A2_CTRL_REG1_RST )
120
+ except OSError :
121
+ pass
117
122
time .sleep (0.01 )
118
123
# Poll for the reset to finish.
119
124
self ._poll_reg1 (_MPL3115A2_CTRL_REG1_RST )
@@ -168,9 +173,9 @@ def pressure(self):
168
173
# First poll for a measurement to be finished.
169
174
self ._poll_reg1 (_MPL3115A2_CTRL_REG1_OST )
170
175
# Set control bits for pressure reading.
171
- self ._ctrl_reg1 &= ~ 0b00000001 # Turn off bit 0 , ALT.
176
+ self ._ctrl_reg1 &= ~ 0b10000000 # Turn off bit 7 , ALT.
172
177
self ._write_u8 (_MPL3115A2_CTRL_REG1 , self ._ctrl_reg1 )
173
- self ._ctrl_reg1 |= 0b00000100 # Set OST to 1
178
+ self ._ctrl_reg1 |= 0b00000010 # Set OST to 1 to start measurement.
174
179
self ._write_u8 (_MPL3115A2_CTRL_REG1 , self ._ctrl_reg1 )
175
180
# Poll status for PDR to be set.
176
181
while self ._read_u8 (_MPL3115A2_REGISTER_STATUS ) & _MPL3115A2_REGISTER_STATUS_PDR == 0 :
@@ -195,9 +200,9 @@ def altitude(self):
195
200
# First poll for a measurement to be finished.
196
201
self ._poll_reg1 (_MPL3115A2_CTRL_REG1_OST )
197
202
# Set control bits for pressure reading.
198
- self ._ctrl_reg1 |= 0b00000001 # Turn on bit 0, ALT.
203
+ self ._ctrl_reg1 |= 0b10000000 # Turn on bit 0, ALT.
199
204
self ._write_u8 (_MPL3115A2_CTRL_REG1 , self ._ctrl_reg1 )
200
- self ._ctrl_reg1 |= 0b00000100 # Set OST to 1
205
+ self ._ctrl_reg1 |= 0b00000010 # Set OST to 1 to start measurement.
201
206
self ._write_u8 (_MPL3115A2_CTRL_REG1 , self ._ctrl_reg1 )
202
207
# Poll status for PDR to be set.
203
208
while self ._read_u8 (_MPL3115A2_REGISTER_STATUS ) & _MPL3115A2_REGISTER_STATUS_PDR == 0 :
0 commit comments