Skip to content

Commit 6edd79d

Browse files
committed
fix hangs due to HTS221 and speed upthe humidity readings
1 parent aebe5cf commit 6edd79d

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

src/MKRENV.cpp

+9-5
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ int ENVClass::begin()
8787
readHTS221Calibration();
8888

8989
// enable HTS221
90-
i2cWrite(HTS221_ADDRESS, HTS221_CTRL1_REG, 0x80);
90+
i2cWrite(HTS221_ADDRESS, HTS221_CTRL1_REG, 0x84);
9191

9292
// configure VEML6075 for 100 ms
9393
i2cWriteWord(VEML6075_ADDRESS, VEML6075_UV_CONF_REG, 0x0010);
@@ -100,8 +100,6 @@ void ENVClass::end()
100100
// shutdown VEML6075
101101
i2cWriteWord(VEML6075_ADDRESS, VEML6075_UV_CONF_REG, 0x0001);
102102

103-
delay(80);
104-
105103
// disable HTS221
106104
i2cWrite(HTS221_ADDRESS, HTS221_CTRL1_REG, 0x00);
107105

@@ -113,6 +111,9 @@ void ENVClass::end()
113111

114112
float ENVClass::readTemperature(int units)
115113
{
114+
// Wait for trigger a new read operation
115+
while (i2cRead(HTS221_ADDRESS, HTS221_CTRL2_REG) & 0x01);
116+
116117
// trigger one shot
117118
i2cWrite(HTS221_ADDRESS, HTS221_CTRL2_REG, 0x01);
118119

@@ -133,6 +134,9 @@ float ENVClass::readTemperature(int units)
133134

134135
float ENVClass::readHumidity()
135136
{
137+
// Wait for trigger a new read operation
138+
while (i2cRead(HTS221_ADDRESS, HTS221_CTRL2_REG) & 0x01);
139+
136140
// trigger one shot
137141
i2cWrite(HTS221_ADDRESS, HTS221_CTRL2_REG, 0x01);
138142

@@ -143,8 +147,8 @@ float ENVClass::readHumidity()
143147

144148
// read value and convert
145149
int16_t hout = i2cRead16(HTS221_ADDRESS, HTS221_HUMIDITY_OUT_L_REG);
146-
147-
return (hout * _hts221HumiditySlope + _hts221HumidityZero);
150+
float reading = hout * _hts221HumiditySlope + _hts221HumidityZero;
151+
return reading;
148152
}
149153

150154
float ENVClass::readPressure(int units)

0 commit comments

Comments
 (0)