Skip to content

Commit 77f9f0e

Browse files
73jnnashif
authored andcommitted
drivers: sensor: maxim: max31865: Fix fault bit clearing
Ensures D1 sets and D5, D3, D2 reset, preventing undefined states. Signed-off-by: Jean Nanchen <[email protected]>
1 parent 48e2354 commit 77f9f0e

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

drivers/sensor/maxim/max31865/max31865.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,15 +177,19 @@ static char *max31865_error_to_string(uint8_t fault_register)
177177
static int max31865_fault_register(const struct device *dev)
178178
{
179179
uint8_t fault_register;
180+
uint8_t saved_fault_bits;
180181

181182
max31865_spi_read(dev, (REG_FAULT_STATUS), &fault_register, 1);
182183
struct max31865_data *data = dev->data;
184+
saved_fault_bits = data->config_control_bits & FAULT_BITS_CLEAR_MASK;
183185
/*Clear fault register */
184186
WRITE_BIT(data->config_control_bits, 1, 1);
187+
data->config_control_bits &= ~FAULT_BITS_CLEAR_MASK;
185188
configure_device(dev);
186189
LOG_ERR("Fault Register: 0x%02x, %s", fault_register,
187190
max31865_error_to_string(fault_register));
188191
WRITE_BIT(data->config_control_bits, 1, 0);
192+
data->config_control_bits |= saved_fault_bits;
189193

190194
return 0;
191195
}

drivers/sensor/maxim/max31865/max31865.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ LOG_MODULE_REGISTER(MAX31865, CONFIG_SENSOR_LOG_LEVEL);
4242
#define REG_FAULT_STATUS 0x07
4343
#define WR(reg) ((reg) | 0x80)
4444

45+
/* Bitmask to clear fault status bits D5, D3, and D2 */
46+
#define FAULT_BITS_CLEAR_MASK 0x2C
47+
4548
/**
4649
* RTD data, RTD current, and measurement reference
4750
* voltage. The ITS-90 standard is used; other RTDs

0 commit comments

Comments
 (0)