aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/extras/sht3x.py
diff options
context:
space:
mode:
authorTimofey Titovets <nefelim4ag@gmail.com>2024-07-07 00:28:45 +0200
committerGitHub <noreply@github.com>2024-07-06 18:28:45 -0400
commit248d3dbf8bcda69a51e3a303862bbcc64a32119d (patch)
treef3273300228cc88e8ac474d41608f89a8f51bb8d /klippy/extras/sht3x.py
parent00cb683def53be4b437bfb3e3a637d2d5879946c (diff)
downloadkutter-248d3dbf8bcda69a51e3a303862bbcc64a32119d.tar.gz
kutter-248d3dbf8bcda69a51e3a303862bbcc64a32119d.tar.xz
kutter-248d3dbf8bcda69a51e3a303862bbcc64a32119d.zip
sht3x: use periodic report mode (#6634)
Signed-off-by: Timofey Titovets <nefelim4ag@gmail.com>
Diffstat (limited to 'klippy/extras/sht3x.py')
-rw-r--r--klippy/extras/sht3x.py35
1 files changed, 22 insertions, 13 deletions
diff --git a/klippy/extras/sht3x.py b/klippy/extras/sht3x.py
index 699d3f20..5a8785e8 100644
--- a/klippy/extras/sht3x.py
+++ b/klippy/extras/sht3x.py
@@ -27,6 +27,13 @@ SHT3X_CMD = {
'LOW_REP': [0x24, 0x16],
},
},
+ 'PERIODIC': {
+ '2HZ': {
+ 'HIGH_REP': [0x22, 0x36],
+ 'MED_REP': [0x22, 0x20],
+ 'LOW_REP': [0x22, 0x2B],
+ },
+ },
'OTHER': {
'STATUS': {
'READ': [0xF3, 0x2D],
@@ -72,10 +79,12 @@ class SHT3X:
def _init_sht3x(self):
# Device Soft Reset
- self.i2c.i2c_write(SHT3X_CMD['OTHER']['SOFTRESET'])
-
- # Wait 2ms after reset
- self.reactor.pause(self.reactor.monotonic() + .02)
+ self.i2c.i2c_write_wait_ack(SHT3X_CMD['OTHER']['BREAK'])
+ # Break takes ~ 1ms
+ self.reactor.pause(self.reactor.monotonic() + .0015)
+ self.i2c.i2c_write_wait_ack(SHT3X_CMD['OTHER']['SOFTRESET'])
+ # Wait <=1.5ms after reset
+ self.reactor.pause(self.reactor.monotonic() + .0015)
status = self.i2c.i2c_read(SHT3X_CMD['OTHER']['STATUS']['READ'], 3)
response = bytearray(status['response'])
@@ -86,17 +95,17 @@ class SHT3X:
if self._crc8(status) != checksum:
logging.warning("sht3x: Reading status - checksum error!")
+ # Enable periodic mode
+ self.i2c.i2c_write_wait_ack(
+ SHT3X_CMD['PERIODIC']['2HZ']['HIGH_REP']
+ )
+ # Wait <=15.5ms for first measurment
+ self.reactor.pause(self.reactor.monotonic() + .0155)
+
def _sample_sht3x(self, eventtime):
try:
- # Read Temeprature
- params = self.i2c.i2c_write(
- SHT3X_CMD['MEASURE']['STRETCH_ENABLED']['HIGH_REP']
- )
- # Wait
- self.reactor.pause(self.reactor.monotonic()
- + .20)
-
- params = self.i2c.i2c_read([], 6)
+ # Read measurment
+ params = self.i2c.i2c_read(SHT3X_CMD['OTHER']['FETCH'], 6)
response = bytearray(params['response'])
rtemp = response[0] << 8