From c2e0e61fe85967ff4ef4bba7f1f49475f396ed53 Mon Sep 17 00:00:00 2001
From: ellensp <ellensp@hotmail.com>
Date: Wed, 8 Jul 2020 23:28:32 +1200
Subject: [PATCH] Fix User Temp Sensor (1000), reversed Pt100 / Pt1000 (#18590)

---
 Marlin/src/module/temperature.cpp              | 4 ++--
 Marlin/src/module/thermistor/thermistor_1010.h | 2 ++
 Marlin/src/module/thermistor/thermistor_1047.h | 2 ++
 Marlin/src/module/thermistor/thermistor_110.h  | 2 ++
 Marlin/src/module/thermistor/thermistor_147.h  | 2 ++
 5 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/Marlin/src/module/temperature.cpp b/Marlin/src/module/temperature.cpp
index d5de826b47e..4d081f39c12 100644
--- a/Marlin/src/module/temperature.cpp
+++ b/Marlin/src/module/temperature.cpp
@@ -1800,13 +1800,13 @@ void Temperature::init() {
   #if HAS_HOTEND
 
     #define _TEMP_MIN_E(NR) do{ \
-      const int16_t tmin = _MAX(HEATER_ ##NR## _MINTEMP, (int16_t)pgm_read_word(&HEATER_ ##NR## _TEMPTABLE[HEATER_ ##NR## _SENSOR_MINTEMP_IND].celsius)); \
+      const int16_t tmin = _MAX(HEATER_ ##NR## _MINTEMP, TERN(HEATER_##NR##_USER_THERMISTOR, 0, (int16_t)pgm_read_word(&HEATER_ ##NR## _TEMPTABLE[HEATER_ ##NR## _SENSOR_MINTEMP_IND].celsius))); \
       temp_range[NR].mintemp = tmin; \
       while (analog_to_celsius_hotend(temp_range[NR].raw_min, NR) < tmin) \
         temp_range[NR].raw_min += TEMPDIR(NR) * (OVERSAMPLENR); \
     }while(0)
     #define _TEMP_MAX_E(NR) do{ \
-      const int16_t tmax = _MIN(HEATER_ ##NR## _MAXTEMP, (int16_t)pgm_read_word(&HEATER_ ##NR## _TEMPTABLE[HEATER_ ##NR## _SENSOR_MAXTEMP_IND].celsius) - 1); \
+      const int16_t tmax = _MIN(HEATER_ ##NR## _MAXTEMP, TERN(HEATER_##NR##_USER_THERMISTOR, 2000, (int16_t)pgm_read_word(&HEATER_ ##NR## _TEMPTABLE[HEATER_ ##NR## _SENSOR_MAXTEMP_IND].celsius) - 1)); \
       temp_range[NR].maxtemp = tmax; \
       while (analog_to_celsius_hotend(temp_range[NR].raw_max, NR) > tmax) \
         temp_range[NR].raw_max -= TEMPDIR(NR) * (OVERSAMPLENR); \
diff --git a/Marlin/src/module/thermistor/thermistor_1010.h b/Marlin/src/module/thermistor/thermistor_1010.h
index 71e830d952f..161e1385f9e 100644
--- a/Marlin/src/module/thermistor/thermistor_1010.h
+++ b/Marlin/src/module/thermistor/thermistor_1010.h
@@ -21,6 +21,8 @@
  */
 #pragma once
 
+#define REVERSE_TEMP_SENSOR_RANGE_1010 1
+
 // Pt1000 with 1k0 pullup
 const temp_entry_t temptable_1010[] PROGMEM = {
   PtLine(  0, 1000, 1000),
diff --git a/Marlin/src/module/thermistor/thermistor_1047.h b/Marlin/src/module/thermistor/thermistor_1047.h
index 6a82d04be8f..cc99771be67 100644
--- a/Marlin/src/module/thermistor/thermistor_1047.h
+++ b/Marlin/src/module/thermistor/thermistor_1047.h
@@ -21,6 +21,8 @@
  */
 #pragma once
 
+#define REVERSE_TEMP_SENSOR_RANGE_1047 1
+
 // Pt1000 with 4k7 pullup
 const temp_entry_t temptable_1047[] PROGMEM = {
   // only a few values are needed as the curve is very flat
diff --git a/Marlin/src/module/thermistor/thermistor_110.h b/Marlin/src/module/thermistor/thermistor_110.h
index 32ee0858076..264b6f5bab3 100644
--- a/Marlin/src/module/thermistor/thermistor_110.h
+++ b/Marlin/src/module/thermistor/thermistor_110.h
@@ -21,6 +21,8 @@
  */
 #pragma once
 
+#define REVERSE_TEMP_SENSOR_RANGE_110 1
+
 // Pt100 with 1k0 pullup
 const temp_entry_t temptable_110[] PROGMEM = {
   // only a few values are needed as the curve is very flat
diff --git a/Marlin/src/module/thermistor/thermistor_147.h b/Marlin/src/module/thermistor/thermistor_147.h
index 61a82affa74..b1e782e1116 100644
--- a/Marlin/src/module/thermistor/thermistor_147.h
+++ b/Marlin/src/module/thermistor/thermistor_147.h
@@ -21,6 +21,8 @@
  */
 #pragma once
 
+#define REVERSE_TEMP_SENSOR_RANGE_147 1
+
 // Pt100 with 4k7 pullup
 const temp_entry_t temptable_147[] PROGMEM = {
   // only a few values are needed as the curve is very flat