diff --git a/drivers/sensor/maxim/max31865/max31865.c b/drivers/sensor/maxim/max31865/max31865.c index 9fd2fc0108ccecc..7ac28f78140b1fc 100644 --- a/drivers/sensor/maxim/max31865/max31865.c +++ b/drivers/sensor/maxim/max31865/max31865.c @@ -177,15 +177,21 @@ static char *max31865_error_to_string(uint8_t fault_register) static int max31865_fault_register(const struct device *dev) { uint8_t fault_register; + uint8_t old_d5_d3_d2; max31865_spi_read(dev, (REG_FAULT_STATUS), &fault_register, 1); struct max31865_data *data = dev->data; + old_d5_d3_d2 = data->config_control_bits & BITMASK_D5_D3_D2; /*Clear fault register */ WRITE_BIT(data->config_control_bits, 1, 1); + WRITE_BIT(data->config_control_bits, 5, 0); + WRITE_BIT(data->config_control_bits, 3, 0); + WRITE_BIT(data->config_control_bits, 2, 0); configure_device(dev); LOG_ERR("Fault Register: 0x%02x, %s", fault_register, max31865_error_to_string(fault_register)); WRITE_BIT(data->config_control_bits, 1, 0); + data->config_control_bits |= old_d5_d3_d2; return 0; } diff --git a/drivers/sensor/maxim/max31865/max31865.h b/drivers/sensor/maxim/max31865/max31865.h index 9efc3221499f2fd..126cd900da402d5 100644 --- a/drivers/sensor/maxim/max31865/max31865.h +++ b/drivers/sensor/maxim/max31865/max31865.h @@ -42,6 +42,9 @@ LOG_MODULE_REGISTER(MAX31865, CONFIG_SENSOR_LOG_LEVEL); #define REG_FAULT_STATUS 0x07 #define WR(reg) ((reg) | 0x80) +/* Bitmask for bits D5, D3, and D2 */ +#define BITMASK_D5_D3_D2 0x2C + /** * RTD data, RTD current, and measurement reference * voltage. The ITS-90 standard is used; other RTDs