From c994c3323ee1b0d19faa86ebe26a01d566b86eaa Mon Sep 17 00:00:00 2001 From: root Date: Wed, 17 Feb 2021 18:33:49 +0000 Subject: stm8 humidity sensor --- humidity_sensors/app/sht20.c | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'humidity_sensors/app/sht20.c') diff --git a/humidity_sensors/app/sht20.c b/humidity_sensors/app/sht20.c index d6d648b..5d6acb7 100644 --- a/humidity_sensors/app/sht20.c +++ b/humidity_sensors/app/sht20.c @@ -11,6 +11,13 @@ #define SOFT_RESET 0xFE +#define MAX_RESOLUTION ((u8) 0x00) +#define BATTERY_LOW ((u8) 0x40) +#define RESERVED_MASK ((u8) 0x38) +#define ENABLE_HEATER ((u8) 0x04) +#define DISABLE_OTP_RELOAD ((u8) 0x02) + + void sht20_reset (void) { @@ -119,3 +126,27 @@ sht20_humid_s (void) return ret; } + +void sht20_setup (void) +{ + uint8_t u; + + i2cb_start_transaction (SHT20_ADDRESS, I2C_WRITE); + i2cb_send_data (READ_USER_REG); + i2cb_start_transaction (SHT20_ADDRESS, I2C_READ); + u = i2cb_read (0); + i2cb_stop(); + + + u &= RESERVED_MASK; + u |= MAX_RESOLUTION | DISABLE_OTP_RELOAD; + + // FWIW - it appears to be impossible to turn off the heater + // with either a reset or write, perhaps a fake chip? + u &= ~ ENABLE_HEATER; + + i2cb_start_transaction (SHT20_ADDRESS, I2C_WRITE); + i2cb_send_data (WRITE_USER_REG); + i2cb_send_data (u); + i2cb_stop(); +} -- cgit v1.2.3