Added LED SMOOTH and SCD4x TEMPERATURE OFFSET to the config.
This commit is contained in:
parent
25df18ed66
commit
400a83ef64
34
README.md
34
README.md
@ -4,29 +4,31 @@
|
||||
|
||||
|Value|Register|
|
||||
|---|---|
|
||||
|CO2 | 30010|
|
||||
|SHT4x | 30011|
|
||||
|RH SHT4x | 30012|
|
||||
|T SCD4x | 30013|
|
||||
|RH SCD4x | 30014|
|
||||
|T SHT4x SIGNED | 30015|
|
||||
|T SCD4x SIGNED | 30016|
|
||||
|CO2 | 30010|
|
||||
|SHT4x | 30011|
|
||||
|RH SHT4x | 30012|
|
||||
|T SCD4x | 30013|
|
||||
|RH SCD4x | 30014|
|
||||
|T SHT4x SIGNED | 30015|
|
||||
|T SCD4x SIGNED | 30016|
|
||||
|
||||
### Holding Registers
|
||||
|
||||
|Value|Register|
|
||||
|---|---|
|
||||
|LED ON | 40001|
|
||||
|CO2 ALERT LIMIT1 | 40002|
|
||||
|CO2 ALERT LIMIT2 | 40003|
|
||||
|MODBUS ADDR | 40004|
|
||||
|LED ON | 40001|
|
||||
|LED SMOOTH | 40002|
|
||||
|CO2 ALERT LIMIT1 | 40003|
|
||||
|CO2 ALERT LIMIT2 | 40004|
|
||||
|SCD4x T OFFSET | 40005|
|
||||
|MODBUS ADDR | 40006|
|
||||
|
||||
### Device Information Registers
|
||||
|
||||
|Value|Register|
|
||||
|---|---|
|
||||
|VENDOR NAME | 30010|
|
||||
|PRODUCT CODE | 30011|
|
||||
|REVISION | 30012|
|
||||
|PRODUCT NAME | 30013|
|
||||
|SERIAL NUMBER | 30014|
|
||||
|VENDOR NAME | 30010|
|
||||
|PRODUCT CODE | 30011|
|
||||
|REVISION | 30012|
|
||||
|PRODUCT NAME | 30013|
|
||||
|SERIAL NUMBER | 30014|
|
||||
|
@ -51,11 +51,16 @@ config_read(&config);
|
||||
#define CONFIG_DEFAULT_LED_ON 1
|
||||
#define CONFIG_DEFAULT_LED_ALERT1_LIMIT 1500
|
||||
#define CONFIG_DEFAULT_LED_ALERT2_LIMIT 3000
|
||||
#define CONFIG_DEFAULT_LED_SMOOTH 0
|
||||
#define CONFIG_DEFAULT_SCD4x_T_OFFSET 0
|
||||
|
||||
#define MODBUS_ADDR_LENGTH 2
|
||||
#define CONFIG_LED_ON_LENGTH 2
|
||||
#define CONFIG_LED_SMOOTH_LENGTH 2
|
||||
#define CONFIG_LED_ALERT1_LENGTH 2
|
||||
#define CONFIG_LED_ALERT2_LENGTH 2
|
||||
#define CONFIG_LED_ALERT2_LENGTH 2
|
||||
#define CONFIG_SCD4x_T_OFFSET_LENGTH 2
|
||||
#define VENDOR_NAME_LENGTH 64
|
||||
#define PRODUCT_CODE_LENGTH 64
|
||||
#define PRODUCT_NAME_LENGTH 64
|
||||
@ -69,9 +74,12 @@ config_read(&config);
|
||||
|
||||
#define CONFIG_EEPROM_ADDR_MODBUS_ADDR (EEPROM_ADDR_START)
|
||||
#define CONFIG_EEPROM_ADDR_LED_ON (CONFIG_EEPROM_ADDR_MODBUS_ADDR + MODBUS_ADDR_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_LED_ALERT1 (CONFIG_EEPROM_ADDR_LED_ON + CONFIG_LED_ON_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_LED_SMOOTH (CONFIG_EEPROM_ADDR_LED_ON + CONFIG_LED_ON_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_LED_ALERT1 (CONFIG_EEPROM_ADDR_LED_SMOOTH + CONFIG_LED_SMOOTH_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_LED_ALERT2 (CONFIG_EEPROM_ADDR_LED_ALERT1 + CONFIG_LED_ALERT1_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_VENDOR_NAME (CONFIG_EEPROM_ADDR_LED_ALERT2 + CONFIG_LED_ALERT2_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET (CONFIG_EEPROM_ADDR_LED_ALERT2 + CONFIG_LED_ALERT2_LENGTH)
|
||||
|
||||
#define CONFIG_EEPROM_ADDR_VENDOR_NAME (CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET + CONFIG_SCD4x_T_OFFSET_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_PRODUCT_CODE (CONFIG_EEPROM_ADDR_VENDOR_NAME + VENDOR_NAME_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_PRODUCT_NAME (CONFIG_EEPROM_ADDR_PRODUCT_CODE + PRODUCT_CODE_LENGTH)
|
||||
#define CONFIG_EEPROM_ADDR_REVISION (CONFIG_EEPROM_ADDR_PRODUCT_NAME + PRODUCT_NAME_LENGTH)
|
||||
@ -95,11 +103,15 @@ config_read(&config);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* DEVICE CONFIG */
|
||||
/* LED CONFIG */
|
||||
uint8_t led_on;
|
||||
uint8_t led_smooth;
|
||||
uint16_t led_co2_alert_limit1;
|
||||
uint16_t led_co2_alert_limit2;
|
||||
|
||||
/* SCD4x Temperature sensor offset */
|
||||
int16_t scd4x_t_offset;
|
||||
|
||||
/* MODBUS CONFIG */
|
||||
uint16_t modbus_addr;
|
||||
} config_t;
|
||||
|
@ -22,8 +22,10 @@ int8_t config_read(config_t *config)
|
||||
{
|
||||
config->modbus_addr = *(uint16_t *) (CONFIG_EEPROM_ADDR_MODBUS_ADDR);
|
||||
config->led_on = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ON);
|
||||
config->led_smooth = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_SMOOTH);
|
||||
config->led_co2_alert_limit1 = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ALERT1);
|
||||
config->led_co2_alert_limit2 = *(uint16_t *) (CONFIG_EEPROM_ADDR_LED_ALERT2);
|
||||
config->scd4x_t_offset = *(int16_t *) (CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET);
|
||||
|
||||
/* Check if the EEPROM is initialized - do not check LED ON, that is 1 or 0 */
|
||||
if ((config->modbus_addr == EEPROM_EMPTY_BYTE) ||
|
||||
@ -57,6 +59,12 @@ int8_t config_write(config_t *config)
|
||||
return EEPROM_WRITE_ERROR;
|
||||
}
|
||||
|
||||
/* Write LED SMOOTH */
|
||||
if (eeprom_program_byte(CONFIG_EEPROM_ADDR_LED_SMOOTH, config->led_smooth) != EEPROM_OK)
|
||||
{
|
||||
return EEPROM_WRITE_ERROR;
|
||||
}
|
||||
|
||||
/* Write LED CO2 ALERT LIMIT 1 */
|
||||
if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_LED_ALERT1, config->led_co2_alert_limit1) != EEPROM_OK)
|
||||
{
|
||||
@ -69,6 +77,12 @@ int8_t config_write(config_t *config)
|
||||
return EEPROM_WRITE_ERROR;
|
||||
}
|
||||
|
||||
/* Write LED SCD4x TEMPERATURE OFFSET */
|
||||
if (eeprom_program_halfword(CONFIG_EEPROM_ADDR_SCD4x_T_OFFSET, config->scd4x_t_offset) != EEPROM_OK)
|
||||
{
|
||||
return EEPROM_WRITE_ERROR;
|
||||
}
|
||||
|
||||
/* Lock EEPROM*/
|
||||
if (eeprom_lock() != EEPROM_OK)
|
||||
{
|
||||
|
@ -81,9 +81,11 @@ enum {
|
||||
|
||||
enum {
|
||||
REGISTER_NUM_LED_ON = 40001,
|
||||
REGISTER_NUM_CO2_ALERT_LIMIT1 = 40002,
|
||||
REGISTER_NUM_CO2_ALERT_LIMIT2 = 40003,
|
||||
REGISTER_NUM_MODBUS_ADDR = 40004
|
||||
REGISTER_NUM_LED_SMOOTH = 40002,
|
||||
REGISTER_NUM_CO2_ALERT_LIMIT1 = 40003,
|
||||
REGISTER_NUM_CO2_ALERT_LIMIT2 = 40004,
|
||||
REGISTER_NUM_SCD4x_T_OFFSET = 40005,
|
||||
REGISTER_NUM_MODBUS_ADDR = 40006,
|
||||
} config_registers_numbers;
|
||||
|
||||
enum {
|
||||
@ -284,6 +286,8 @@ int main(void)
|
||||
sensor_config.led_co2_alert_limit1 = CONFIG_DEFAULT_LED_ALERT1_LIMIT;
|
||||
sensor_config.led_co2_alert_limit2 = CONFIG_DEFAULT_LED_ALERT2_LIMIT;
|
||||
sensor_config.led_on = CONFIG_DEFAULT_LED_ON;
|
||||
sensor_config.led_smooth = CONFIG_DEFAULT_LED_SMOOTH;
|
||||
sensor_config.scd4x_t_offset = CONFIG_DEFAULT_SCD4x_T_OFFSET;
|
||||
}
|
||||
|
||||
/* Set the modbus address */
|
||||
|
Loading…
Reference in New Issue
Block a user