diff --git a/Marlin/Conditionals.h b/Marlin/Conditionals.h
index 91760045d741acbf94cb6cbc4be4b68fc226fb8e..7063b198e7258da0087c3718ee3ac764b8d490d4 100644
--- a/Marlin/Conditionals.h
+++ b/Marlin/Conditionals.h
@@ -440,7 +440,9 @@
#define HEATER_0_USES_THERMISTOR
#endif
- #if TEMP_SENSOR_1 == -1
+ #if TEMP_SENSOR_1 <= -2
+ #error MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_1
+ #elif TEMP_SENSOR_1 == -1
#define HEATER_1_USES_AD595
#elif TEMP_SENSOR_1 == 0
#undef HEATER_1_MINTEMP
@@ -450,7 +452,9 @@
#define HEATER_1_USES_THERMISTOR
#endif
- #if TEMP_SENSOR_2 == -1
+ #if TEMP_SENSOR_2 <= -2
+ #error MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_2
+ #elif TEMP_SENSOR_2 == -1
#define HEATER_2_USES_AD595
#elif TEMP_SENSOR_2 == 0
#undef HEATER_2_MINTEMP
@@ -460,7 +464,9 @@
#define HEATER_2_USES_THERMISTOR
#endif
- #if TEMP_SENSOR_3 == -1
+ #if TEMP_SENSOR_3 <= -2
+ #error MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_3
+ #elif TEMP_SENSOR_3 == -1
#define HEATER_3_USES_AD595
#elif TEMP_SENSOR_3 == 0
#undef HEATER_3_MINTEMP
@@ -470,7 +476,9 @@
#define HEATER_3_USES_THERMISTOR
#endif
- #if TEMP_SENSOR_BED == -1
+ #if TEMP_SENSOR_BED <= -2
+ #error MAX6675 / MAX31855 Thermocouples not supported for TEMP_SENSOR_BED
+ #elif TEMP_SENSOR_BED == -1
#define BED_USES_AD595
#elif TEMP_SENSOR_BED == 0
#undef BED_MINTEMP
@@ -498,11 +506,11 @@
/**
* Shorthand for pin tests, used wherever needed
*/
- #define HAS_TEMP_0 (PIN_EXISTS(TEMP_0) && TEMP_SENSOR_0 != 0 && TEMP_SENSOR_0 != -2)
- #define HAS_TEMP_1 (PIN_EXISTS(TEMP_1) && TEMP_SENSOR_1 != 0)
- #define HAS_TEMP_2 (PIN_EXISTS(TEMP_2) && TEMP_SENSOR_2 != 0)
- #define HAS_TEMP_3 (PIN_EXISTS(TEMP_3) && TEMP_SENSOR_3 != 0)
- #define HAS_TEMP_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0)
+ #define HAS_TEMP_0 (PIN_EXISTS(TEMP_0) && TEMP_SENSOR_0 != 0 && TEMP_SENSOR_0 > -2)
+ #define HAS_TEMP_1 (PIN_EXISTS(TEMP_1) && TEMP_SENSOR_1 != 0 && TEMP_SENSOR_1 > -2)
+ #define HAS_TEMP_2 (PIN_EXISTS(TEMP_2) && TEMP_SENSOR_2 != 0 && TEMP_SENSOR_2 > -2)
+ #define HAS_TEMP_3 (PIN_EXISTS(TEMP_3) && TEMP_SENSOR_3 != 0 && TEMP_SENSOR_3 > -2)
+ #define HAS_TEMP_BED (PIN_EXISTS(TEMP_BED) && TEMP_SENSOR_BED != 0 && TEMP_SENSOR_BED > -2)
#define HAS_HEATER_0 (PIN_EXISTS(HEATER_0))
#define HAS_HEATER_1 (PIN_EXISTS(HEATER_1))
#define HAS_HEATER_2 (PIN_EXISTS(HEATER_2))
@@ -581,6 +589,8 @@
#define HAS_MOTOR_CURRENT_PWM (PIN_EXISTS(MOTOR_CURRENT_PWM_XY) || PIN_EXISTS(MOTOR_CURRENT_PWM_Z) || PIN_EXISTS(MOTOR_CURRENT_PWM_E))
+ #define HAS_TEMP_HOTEND (HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675))
+
/**
* Helper Macros for heaters and extruder fan
*/
diff --git a/Marlin/Marlin.h b/Marlin/Marlin.h
index c425a3b04941820db409c1c333cd68a3f99941e7..c6274056c1b65a37f6cf9f6aae843a89cc10dfac 100644
--- a/Marlin/Marlin.h
+++ b/Marlin/Marlin.h
@@ -368,7 +368,7 @@ extern uint8_t active_extruder;
extern void digipot_i2c_init();
#endif
-#if HAS_TEMP_0 || HAS_TEMP_BED || ENABLED(HEATER_0_USES_MAX6675)
+#if HAS_TEMP_HOTEND || HAS_TEMP_BED
void print_heaterstates();
#endif
diff --git a/Marlin/Marlin_main.cpp b/Marlin/Marlin_main.cpp
index 968555ca4aa2087869107c1559635bf30df69a63..99192f4f1cafafb0f71d3e4bd24066442a2b5f96 100644
--- a/Marlin/Marlin_main.cpp
+++ b/Marlin/Marlin_main.cpp
@@ -4100,10 +4100,10 @@ inline void gcode_M104() {
if (print_job_stop()) LCD_MESSAGEPGM(WELCOME_MSG);
}
-#if HAS_TEMP_0 || HAS_TEMP_BED || ENABLED(HEATER_0_USES_MAX6675)
+#if HAS_TEMP_HOTEND || HAS_TEMP_BED
void print_heaterstates() {
- #if HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675)
+ #if HAS_TEMP_HOTEND
SERIAL_PROTOCOLPGM(" T:");
SERIAL_PROTOCOL_F(degHotend(target_extruder), 1);
SERIAL_PROTOCOLPGM(" /");
@@ -4179,10 +4179,10 @@ inline void gcode_M104() {
inline void gcode_M105() {
if (setTargetedHotend(105)) return;
- #if HAS_TEMP_0 || HAS_TEMP_BED || ENABLED(HEATER_0_USES_MAX6675)
+ #if HAS_TEMP_HOTEND || HAS_TEMP_BED
SERIAL_PROTOCOLPGM(MSG_OK);
print_heaterstates();
- #else // !HAS_TEMP_0 && !HAS_TEMP_BED
+ #else // !HAS_TEMP_HOTEND && !HAS_TEMP_BED
SERIAL_ERROR_START;
SERIAL_ERRORLNPGM(MSG_ERR_NO_THERMISTORS);
#endif
@@ -4271,7 +4271,7 @@ inline void gcode_M109() {
now = millis();
if (now > next_temp_ms) { //Print temp & remaining time every 1s while waiting
next_temp_ms = now + 1000UL;
- #if HAS_TEMP_0 || HAS_TEMP_BED || ENABLED(HEATER_0_USES_MAX6675)
+ #if HAS_TEMP_HOTEND || HAS_TEMP_BED
print_heaterstates();
#endif
#ifdef TEMP_RESIDENCY_TIME
diff --git a/Marlin/temperature.cpp b/Marlin/temperature.cpp
index d20b6e7054bb4bbc18042a108ce75af960ba0533..22797a06fbcf995a684bb1e9e45b29ab0cb77218 100644
--- a/Marlin/temperature.cpp
+++ b/Marlin/temperature.cpp
@@ -350,7 +350,7 @@ void PID_autotune(float temp, int extruder, int ncycles, bool set_result/*=false
}
// Every 2 seconds...
if (ms > temp_ms + 2000) {
- #if HAS_TEMP_0 || HAS_TEMP_BED || ENABLED(HEATER_0_USES_MAX6675)
+ #if HAS_TEMP_HOTEND || HAS_TEMP_BED
print_heaterstates();
SERIAL_EOL;
#endif
@@ -1183,7 +1183,7 @@ void disable_all_heaters() {
WRITE_HEATER_ ## NR (LOW); \
}
- #if HAS_TEMP_0 || ENABLED(HEATER_0_USES_MAX6675)
+ #if HAS_TEMP_HOTEND
setTargetHotend(0, 0);
soft_pwm[0] = 0;
WRITE_HEATER_0P(LOW); // Should HEATERS_PARALLEL apply here? Then change to DISABLE_HEATER(0)