thermocouple: Report fault information in fault field
Send the fault information explicitly in the query_thermocouple fault field for max6675, max31855, and max31865. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
ddb59440a8
commit
4e930294b8
|
@ -193,11 +193,11 @@ class MAX31855(SensorBase):
|
||||||
def __init__(self, config):
|
def __init__(self, config):
|
||||||
SensorBase.__init__(self, config, "MAX31855", spi_mode=0)
|
SensorBase.__init__(self, config, "MAX31855", spi_mode=0)
|
||||||
def calc_temp(self, adc, fault):
|
def calc_temp(self, adc, fault):
|
||||||
if adc & 0x1:
|
if fault & 0x1:
|
||||||
self.fault("MAX31855 : Open Circuit")
|
self.fault("MAX31855 : Open Circuit")
|
||||||
if adc & 0x2:
|
if fault & 0x2:
|
||||||
self.fault("MAX31855 : Short to GND")
|
self.fault("MAX31855 : Short to GND")
|
||||||
if adc & 0x4:
|
if fault & 0x4:
|
||||||
self.fault("MAX31855 : Short to Vcc")
|
self.fault("MAX31855 : Short to Vcc")
|
||||||
adc = adc >> MAX31855_SCALE
|
adc = adc >> MAX31855_SCALE
|
||||||
# Fix sign bit:
|
# Fix sign bit:
|
||||||
|
@ -222,9 +222,9 @@ class MAX6675(SensorBase):
|
||||||
def __init__(self, config):
|
def __init__(self, config):
|
||||||
SensorBase.__init__(self, config, "MAX6675", spi_mode=0)
|
SensorBase.__init__(self, config, "MAX6675", spi_mode=0)
|
||||||
def calc_temp(self, adc, fault):
|
def calc_temp(self, adc, fault):
|
||||||
if adc & 0x02:
|
if fault & 0x02:
|
||||||
self.fault("Max6675 : Device ID error")
|
self.fault("Max6675 : Device ID error")
|
||||||
if adc & 0x04:
|
if fault & 0x04:
|
||||||
self.fault("Max6675 : Thermocouple Open Fault")
|
self.fault("Max6675 : Thermocouple Open Fault")
|
||||||
adc = adc >> MAX6675_SCALE
|
adc = adc >> MAX6675_SCALE
|
||||||
# Fix sign bit:
|
# Fix sign bit:
|
||||||
|
@ -293,7 +293,7 @@ class MAX31865(SensorBase):
|
||||||
self.fault("Max31865 VRTD- is less than 0.85 * VBIAS, FORCE- open")
|
self.fault("Max31865 VRTD- is less than 0.85 * VBIAS, FORCE- open")
|
||||||
if fault & 0x04:
|
if fault & 0x04:
|
||||||
self.fault("Max31865 Overvoltage or undervoltage fault")
|
self.fault("Max31865 Overvoltage or undervoltage fault")
|
||||||
if fault & 0x03:
|
if not fault & 0xfc:
|
||||||
self.fault("Max31865 Unspecified error")
|
self.fault("Max31865 Unspecified error")
|
||||||
adc = adc >> 1 # remove fault bit
|
adc = adc >> 1 # remove fault bit
|
||||||
R_div_nominal = adc * self.adc_to_resist_div_nominal
|
R_div_nominal = adc * self.adc_to_resist_div_nominal
|
||||||
|
|
|
@ -90,6 +90,8 @@ thermocouple_respond(struct thermocouple_spi *spi, uint32_t next_begin_time
|
||||||
/* check the result and stop if below or above allowed range */
|
/* check the result and stop if below or above allowed range */
|
||||||
if (value < spi->min_value || value > spi->max_value)
|
if (value < spi->min_value || value > spi->max_value)
|
||||||
try_shutdown("Thermocouple ADC out of range");
|
try_shutdown("Thermocouple ADC out of range");
|
||||||
|
if (fault)
|
||||||
|
try_shutdown("Thermocouple reader fault");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -101,10 +103,7 @@ thermocouple_handle_max31855(struct thermocouple_spi *spi
|
||||||
uint32_t value;
|
uint32_t value;
|
||||||
memcpy(&value, msg, sizeof(value));
|
memcpy(&value, msg, sizeof(value));
|
||||||
value = be32_to_cpu(value);
|
value = be32_to_cpu(value);
|
||||||
thermocouple_respond(spi, next_begin_time, value, 0, oid);
|
thermocouple_respond(spi, next_begin_time, value, value & 0x07, oid);
|
||||||
// Kill after data send, host decode an error
|
|
||||||
if (value & 0x04)
|
|
||||||
try_shutdown("Thermocouple reader fault");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#define MAX31856_LTCBH_REG 0x0C
|
#define MAX31856_LTCBH_REG 0x0C
|
||||||
|
@ -142,10 +141,8 @@ thermocouple_handle_max31865(struct thermocouple_spi *spi
|
||||||
msg[0] = MAX31865_FAULTSTAT_REG;
|
msg[0] = MAX31865_FAULTSTAT_REG;
|
||||||
msg[1] = 0x00;
|
msg[1] = 0x00;
|
||||||
spidev_transfer(spi->spi, 1, 2, msg);
|
spidev_transfer(spi->spi, 1, 2, msg);
|
||||||
thermocouple_respond(spi, next_begin_time, value, msg[1], oid);
|
uint8_t fault = (msg[1] & ~0x03) | (value & 0x0001);
|
||||||
// Kill after data send, host decode an error
|
thermocouple_respond(spi, next_begin_time, value, fault, oid);
|
||||||
if (value & 0x0001)
|
|
||||||
try_shutdown("Thermocouple reader fault");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -157,10 +154,7 @@ thermocouple_handle_max6675(struct thermocouple_spi *spi
|
||||||
uint16_t value;
|
uint16_t value;
|
||||||
memcpy(&value, msg, sizeof(msg));
|
memcpy(&value, msg, sizeof(msg));
|
||||||
value = be16_to_cpu(value);
|
value = be16_to_cpu(value);
|
||||||
thermocouple_respond(spi, next_begin_time, value, 0, oid);
|
thermocouple_respond(spi, next_begin_time, value, value & 0x06, oid);
|
||||||
// Kill after data send, host decode an error
|
|
||||||
if (value & 0x04)
|
|
||||||
try_shutdown("Thermocouple reader fault");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// task to read thermocouple and send response
|
// task to read thermocouple and send response
|
||||||
|
|
Loading…
Reference in New Issue