Browse Source

🐛 Followup to TEMP_SENSOR_BOARD (#22343, #22344)

Followup to #22279
Katelyn Schiesser 3 years ago
parent
commit
4479b0222b

+ 3
- 1
Marlin/src/inc/Conditionals_adv.h View File

@@ -127,7 +127,9 @@
127 127
 
128 128
 // Usurp a sensor to do redundant readings
129 129
 #if TEMP_SENSOR_REDUNDANT
130
-  #define REDUNDANT_TEMP_MATCH(M,N) (TEMP_SENSOR_REDUNDANT_##M == HID_##N)
130
+  #define _HEATER_ID(M) HID_##M
131
+  #define HEATER_ID(M)  _HEATER_ID(M)
132
+  #define REDUNDANT_TEMP_MATCH(M,N) (HEATER_ID(TEMP_SENSOR_REDUNDANT_##M) == _HEATER_ID(N))
131 133
 #else
132 134
   #define REDUNDANT_TEMP_MATCH(...) 0
133 135
 #endif

+ 17
- 0
Marlin/src/inc/Conditionals_post.h View File

@@ -1135,6 +1135,23 @@
1135 1135
   #endif
1136 1136
 #endif
1137 1137
 
1138
+#if TEMP_SENSOR_BOARD == -4
1139
+  #define TEMP_SENSOR_BOARD_IS_AD8495 1
1140
+#elif TEMP_SENSOR_BOARD == -3
1141
+  #error "MAX31855 Thermocouples (-3) not supported for TEMP_SENSOR_BOARD."
1142
+#elif TEMP_SENSOR_BOARD == -2
1143
+  #error "MAX6675 Thermocouples (-2) not supported for TEMP_SENSOR_BOARD."
1144
+#elif TEMP_SENSOR_BOARD == -1
1145
+  #define TEMP_SENSOR_BOARD_IS_AD595 1
1146
+#elif TEMP_SENSOR_BOARD > 0
1147
+  #define TEMP_SENSOR_BOARD_IS_THERMISTOR 1
1148
+  #if TEMP_SENSOR_BOARD == 1000
1149
+    #define TEMP_SENSOR_BOARD_IS_CUSTOM 1
1150
+  #elif TEMP_SENSOR_BOARD == 998 || TEMP_SENSOR_BOARD == 999
1151
+    #define TEMP_SENSOR_BOARD_IS_DUMMY 1
1152
+  #endif
1153
+#endif
1154
+
1138 1155
 /**
1139 1156
  * X_DUAL_ENDSTOPS endstop reassignment
1140 1157
  */

+ 8
- 8
Marlin/src/module/temperature.cpp View File

@@ -440,7 +440,7 @@ const char str_t_thermal_runaway[] PROGMEM = STR_T_THERMAL_RUNAWAY,
440 440
   board_info_t Temperature::temp_board; // = { 0 }
441 441
   #if ENABLED(THERMAL_PROTECTION_BOARD)
442 442
     int16_t Temperature::mintemp_raw_BOARD = TEMP_SENSOR_BOARD_RAW_LO_TEMP,
443
-            Temperature::maxtemp_raw_BOARD = TEMP_SENSOR_COOLER_RAW_HI_TEMP;
443
+            Temperature::maxtemp_raw_BOARD = TEMP_SENSOR_BOARD_RAW_HI_TEMP;
444 444
   #endif
445 445
 #endif
446 446
 
@@ -951,7 +951,7 @@ void Temperature::_temp_error(const heater_id_t heater_id, PGM_P const serial_ms
951 951
     #if HAS_TEMP_REDUNDANT
952 952
       if (heater_id == H_REDUNDANT) {
953 953
         SERIAL_ECHOPGM(STR_REDUNDANT); // print redundant and cascade to print target, too.
954
-        real_heater_id = (heater_id_t)TEMP_SENSOR_REDUNDANT_TARGET;
954
+        real_heater_id = (heater_id_t)HEATER_ID(TEMP_SENSOR_REDUNDANT_TARGET);
955 955
       }
956 956
     #endif
957 957
 
@@ -1323,7 +1323,7 @@ void Temperature::manage_heater() {
1323 1323
   #if HAS_TEMP_REDUNDANT
1324 1324
     // Make sure measured temperatures are close together
1325 1325
     if (ABS(degRedundantTarget() - degRedundant()) > TEMP_SENSOR_REDUNDANT_MAX_DIFF)
1326
-      _temp_error((heater_id_t)TEMP_SENSOR_REDUNDANT_TARGET, PSTR(STR_REDUNDANCY), GET_TEXT(MSG_ERR_REDUNDANT_TEMP));
1326
+      _temp_error((heater_id_t)HEATER_ID(TEMP_SENSOR_REDUNDANT_TARGET), PSTR(STR_REDUNDANCY), GET_TEXT(MSG_ERR_REDUNDANT_TEMP));
1327 1327
   #endif
1328 1328
 
1329 1329
   #if HAS_AUTO_FAN
@@ -2015,7 +2015,7 @@ void Temperature::updateTemperaturesFromRawValues() {
2015 2015
 
2016 2016
   TERN_(TEMP_SENSOR_0_IS_MAX_TC, temp_hotend[0].raw = READ_MAX_TC(0));
2017 2017
   TERN_(TEMP_SENSOR_1_IS_MAX_TC, temp_hotend[1].raw = READ_MAX_TC(1));
2018
-  TERN_(TEMP_SENSOR_REDUNDANT_IS_MAX_TC, temp_redundant.raw = READ_MAX_TC(TEMP_SENSOR_REDUNDANT_SOURCE));
2018
+  TERN_(TEMP_SENSOR_REDUNDANT_IS_MAX_TC, temp_redundant.raw = READ_MAX_TC(HEATER_ID(TEMP_SENSOR_REDUNDANT_SOURCE)));
2019 2019
 
2020 2020
   #if HAS_HOTEND
2021 2021
     HOTEND_LOOP() temp_hotend[e].celsius = analog_to_celsius_hotend(temp_hotend[e].raw, e);
@@ -2455,9 +2455,9 @@ void Temperature::init() {
2455 2455
     while (analog_to_celsius_cooler(maxtemp_raw_COOLER) < COOLER_MAXTEMP) maxtemp_raw_COOLER -= TEMPDIR(COOLER) * (OVERSAMPLENR);
2456 2456
   #endif
2457 2457
 
2458
-  #if HAS_TEMP_BOARD
2459
-    while (analog_to_celsius_board(mintemp_raw_BOARD) > BOARD_MINTEMP) mintemp_raw_BOARD += TEMPDIR(BOARD) * (OVERSAMPLENR);
2460
-    while (analog_to_celsius_board(maxtemp_raw_BOARD) < BOARD_MAXTEMP) maxtemp_raw_BOARD -= TEMPDIR(BOARD) * (OVERSAMPLENR);
2458
+  #if BOTH(HAS_TEMP_BOARD, THERMAL_PROTECTION_BOARD)
2459
+    while (analog_to_celsius_board(mintemp_raw_BOARD) < BOARD_MINTEMP) mintemp_raw_BOARD += TEMPDIR(BOARD) * (OVERSAMPLENR);
2460
+    while (analog_to_celsius_board(maxtemp_raw_BOARD) > BOARD_MAXTEMP) maxtemp_raw_BOARD -= TEMPDIR(BOARD) * (OVERSAMPLENR);
2461 2461
   #endif
2462 2462
 
2463 2463
   #if HAS_TEMP_REDUNDANT
@@ -2473,7 +2473,7 @@ void Temperature::init() {
2473 2473
       #elif REDUNDANT_TEMP_MATCH(TARGET, BED) && HAS_TEMP_BED
2474 2474
         temp_bed
2475 2475
       #else
2476
-        temp_hotend[TEMP_SENSOR_REDUNDANT_TARGET]
2476
+        temp_hotend[HEATER_ID(TEMP_SENSOR_REDUNDANT_TARGET)]
2477 2477
       #endif
2478 2478
     );
2479 2479
   #endif

+ 1
- 1
Marlin/src/module/temperature.h View File

@@ -815,7 +815,7 @@ class Temperature {
815 815
         static inline int16_t rawBoardTemp()    { return temp_board.raw; }
816 816
       #endif
817 817
       static inline celsius_float_t degBoard()  { return temp_board.celsius; }
818
-      static inline celsius_t wholeDegBoard()   { return static_cast<celsius_t>(degBoard() + 0.5f); }
818
+      static inline celsius_t wholeDegBoard()   { return static_cast<celsius_t>(temp_board.celsius + 0.5f); }
819 819
     #endif
820 820
 
821 821
     #if HAS_TEMP_REDUNDANT

+ 11
- 0
buildroot/tests/mega2560 View File

@@ -199,6 +199,17 @@ opt_enable REPRAP_DISCOUNT_SMART_CONTROLLER SDSUPPORT EEPROM_SETTINGS EEPROM_BOO
199 199
 exec_test $1 $2 "REPRAP MEGA2560 RAMPS | Laser Feature | Air Evacuation | Air Assist | Cooler | Flowmeter | 44780 LCD " "$3"
200 200
 
201 201
 #
202
+# Test redundant temperature sensors + MAX TC
203
+#
204
+restore_configs
205
+opt_set MOTHERBOARD BOARD_RAMPS_14_EFB EXTRUDERS 1 \
206
+        TEMP_SENSOR_0 -2 TEMP_SENSOR_REDUNDANT -2 \
207
+        TEMP_SENSOR_REDUNDANT_SOURCE E1 TEMP_SENSOR_REDUNDANT_TARGET E0 \
208
+        TEMP_0_CS_PIN 11 TEMP_1_CS_PIN 12
209
+
210
+exec_test $1 $2 "MEGA2560 RAMPS | Redundant temperature sensor | 2x MAX6675" "$3"
211
+
212
+#
202 213
 # Language files test with REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER
203 214
 #
204 215
 #restore_configs

Loading…
Cancel
Save