From 2dd990ad5534fa897bce031aaef574e71c6ee926 Mon Sep 17 00:00:00 2001 From: "Peter A. Bigot" Date: Fri, 23 Nov 2018 06:51:02 -0600 Subject: [PATCH] drivers: sensor: ccs811: enable drive mode 4 This mode is documented as producing a raw result every 250 ms that the application must convert to eCO2 and eTVOC readings. In practice application firmware 2.0 appears to convert the readings as with all other rates. Signed-off-by: Peter A. Bigot --- drivers/sensor/ccs811/Kconfig | 3 +++ drivers/sensor/ccs811/ccs811.c | 10 ++++++---- include/drivers/sensor/ccs811.h | 2 +- 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/drivers/sensor/ccs811/Kconfig b/drivers/sensor/ccs811/Kconfig index dc3844182d1..6bebb12aeca 100644 --- a/drivers/sensor/ccs811/Kconfig +++ b/drivers/sensor/ccs811/Kconfig @@ -31,6 +31,9 @@ config CCS811_DRIVE_MODE_2 config CCS811_DRIVE_MODE_3 bool "Measurement every sixty seconds" +config CCS811_DRIVE_MODE_4 + bool "Measurement every 250 milliseconds" + endchoice config CCS811_TRIGGER diff --git a/drivers/sensor/ccs811/ccs811.c b/drivers/sensor/ccs811/ccs811.c index 0b54b7a83a5..8e4d1e11dbb 100644 --- a/drivers/sensor/ccs811/ccs811.c +++ b/drivers/sensor/ccs811/ccs811.c @@ -474,13 +474,15 @@ static int ccs811_init(struct device *dev) } /* Configure measurement mode */ - u8_t meas_mode = 0; + u8_t meas_mode = CCS811_MODE_IDLE; #ifdef CONFIG_CCS811_DRIVE_MODE_1 - meas_mode = 0x10; + meas_mode = CCS811_MODE_IAQ_1SEC; #elif defined(CONFIG_CCS811_DRIVE_MODE_2) - meas_mode = 0x20; + meas_mode = CCS811_MODE_IAQ_10SEC; #elif defined(CONFIG_CCS811_DRIVE_MODE_3) - meas_mode = 0x30; + meas_mode = CCS811_MODE_IAQ_60SEC; +#elif defined(CONFIG_CCS811_DRIVE_MODE_4) + meas_mode = CCS811_MODE_IAQ_250MSEC; #endif if (i2c_reg_write_byte(drv_data->i2c, DT_INST_0_AMS_CCS811_BASE_ADDRESS, CCS811_REG_MEAS_MODE, diff --git a/include/drivers/sensor/ccs811.h b/include/drivers/sensor/ccs811.h index 65617529895..c51d8e52866 100644 --- a/include/drivers/sensor/ccs811.h +++ b/include/drivers/sensor/ccs811.h @@ -41,7 +41,7 @@ extern "C" { #define CCS811_MODE_IAQ_1SEC 0x10 #define CCS811_MODE_IAQ_10SEC 0x20 #define CCS811_MODE_IAQ_60SEC 0x30 -#define CCS811_MODE_IAQ_RAW_250MSEC 0x40 +#define CCS811_MODE_IAQ_250MSEC 0x40 /** @brief Information collected from the sensor on each fetch. */ struct ccs811_result_type {