浏览代码

🚑️ Fix thermal conditionals, structure

Scott Lahteine 3 年前
父节点
当前提交
b07887687e
共有 3 个文件被更改,包括 25 次插入27 次删除
  1. 4
    4
      Marlin/src/inc/Conditionals_post.h
  2. 16
    18
      Marlin/src/module/temperature.cpp
  3. 5
    5
      Marlin/src/module/temperature.h

+ 4
- 4
Marlin/src/inc/Conditionals_post.h 查看文件

2549
 #endif
2549
 #endif
2550
 
2550
 
2551
 // Thermal protection
2551
 // Thermal protection
2552
-#if BOTH(HAS_HEATED_BED, THERMAL_PROTECTION_BED)
2552
+#if !HAS_HEATED_BED
2553
-  #define HAS_THERMALLY_PROTECTED_BED 1
2553
+  #undef THERMAL_PROTECTION_BED
2554
 #endif
2554
 #endif
2555
 #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0
2555
 #if ENABLED(THERMAL_PROTECTION_HOTENDS) && WATCH_TEMP_PERIOD > 0
2556
   #define WATCH_HOTENDS 1
2556
   #define WATCH_HOTENDS 1
2557
 #endif
2557
 #endif
2558
-#if HAS_THERMALLY_PROTECTED_BED && WATCH_BED_TEMP_PERIOD > 0
2558
+#if ENABLED(THERMAL_PROTECTION_BED) && WATCH_BED_TEMP_PERIOD > 0
2559
   #define WATCH_BED 1
2559
   #define WATCH_BED 1
2560
 #endif
2560
 #endif
2561
 #if BOTH(HAS_HEATED_CHAMBER, THERMAL_PROTECTION_CHAMBER) && WATCH_CHAMBER_TEMP_PERIOD > 0
2561
 #if BOTH(HAS_HEATED_CHAMBER, THERMAL_PROTECTION_CHAMBER) && WATCH_CHAMBER_TEMP_PERIOD > 0
2567
 #if  (ENABLED(THERMAL_PROTECTION_HOTENDS) || !EXTRUDERS) \
2567
 #if  (ENABLED(THERMAL_PROTECTION_HOTENDS) || !EXTRUDERS) \
2568
   && (ENABLED(THERMAL_PROTECTION_BED)     || !HAS_HEATED_BED) \
2568
   && (ENABLED(THERMAL_PROTECTION_BED)     || !HAS_HEATED_BED) \
2569
   && (ENABLED(THERMAL_PROTECTION_CHAMBER) || !HAS_HEATED_CHAMBER) \
2569
   && (ENABLED(THERMAL_PROTECTION_CHAMBER) || !HAS_HEATED_CHAMBER) \
2570
-  && (ENABLED(THERMAL_PROTECTION_COOLER) || !HAS_COOLER)
2570
+  && (ENABLED(THERMAL_PROTECTION_COOLER)  || !HAS_COOLER)
2571
   #define THERMALLY_SAFE 1
2571
   #define THERMALLY_SAFE 1
2572
 #endif
2572
 #endif
2573
 
2573
 

+ 16
- 18
Marlin/src/module/temperature.cpp 查看文件

1444
 
1444
 
1445
       TERN_(HEATER_IDLE_HANDLER, heater_idle[IDLE_INDEX_BED].update(ms));
1445
       TERN_(HEATER_IDLE_HANDLER, heater_idle[IDLE_INDEX_BED].update(ms));
1446
 
1446
 
1447
-      #if HAS_THERMALLY_PROTECTED_BED
1447
+      #if ENABLED(THERMAL_PROTECTION_BED)
1448
         tr_state_machine[RUNAWAY_IND_BED].run(temp_bed.celsius, temp_bed.target, H_BED, THERMAL_PROTECTION_BED_PERIOD, THERMAL_PROTECTION_BED_HYSTERESIS);
1448
         tr_state_machine[RUNAWAY_IND_BED].run(temp_bed.celsius, temp_bed.target, H_BED, THERMAL_PROTECTION_BED_PERIOD, THERMAL_PROTECTION_BED_HYSTERESIS);
1449
       #endif
1449
       #endif
1450
 
1450
 
2570
       );
2570
       );
2571
     */
2571
     */
2572
 
2572
 
2573
-    #if HEATER_IDLE_HANDLER
2573
+    // If the heater idle timeout expires, restart
2574
-      // If the heater idle timeout expires, restart
2574
+    if (TERN0(HEATER_IDLE_HANDLER, heater_idle[idle_index].timed_out)) {
2575
-      if (heater_idle[idle_index].timed_out) {
2575
+      state = TRInactive;
2576
-        state = TRInactive;
2576
+      running_temp = 0;
2577
-        running_temp = 0;
2577
+    }
2578
-      }
2578
+    else if (running_temp != target) { // If the target temperature changes, restart
2579
-      else
2579
+      running_temp = target;
2580
-    #endif
2580
+      state = target > 0 ? TRFirstHeating : TRInactive;
2581
-    {
2582
-      // If the target temperature changes, restart
2583
-      if (running_temp != target) {
2584
-        running_temp = target;
2585
-        state = target > 0 ? TRFirstHeating : TRInactive;
2586
-      }
2587
     }
2581
     }
2588
 
2582
 
2589
     switch (state) {
2583
     switch (state) {
2596
         state = TRStable;
2590
         state = TRStable;
2597
 
2591
 
2598
       // While the temperature is stable watch for a bad temperature
2592
       // While the temperature is stable watch for a bad temperature
2599
-      case TRStable:
2593
+      case TRStable: {
2600
 
2594
 
2601
         #if ENABLED(ADAPTIVE_FAN_SLOWING)
2595
         #if ENABLED(ADAPTIVE_FAN_SLOWING)
2602
           if (adaptive_fan_slowing && heater_id >= 0) {
2596
           if (adaptive_fan_slowing && heater_id >= 0) {
2614
           }
2608
           }
2615
         #endif
2609
         #endif
2616
 
2610
 
2611
+        const millis_t now = millis();
2612
+
2617
         if (current >= running_temp - hysteresis_degc) {
2613
         if (current >= running_temp - hysteresis_degc) {
2618
-          timer = millis() + SEC_TO_MS(period_seconds);
2614
+          timer = now + SEC_TO_MS(period_seconds);
2619
           break;
2615
           break;
2620
         }
2616
         }
2621
-        else if (PENDING(millis(), timer)) break;
2617
+        else if (PENDING(now, timer)) break;
2622
         state = TRRunaway;
2618
         state = TRRunaway;
2623
 
2619
 
2620
+      } // fall through
2621
+
2624
       case TRRunaway:
2622
       case TRRunaway:
2625
         TERN_(HAS_DWIN_E3V2_BASIC, DWIN_Popup_Temperature(0));
2623
         TERN_(HAS_DWIN_E3V2_BASIC, DWIN_Popup_Temperature(0));
2626
         _temp_error(heater_id, FPSTR(str_t_thermal_runaway), GET_TEXT_F(MSG_THERMAL_RUNAWAY));
2624
         _temp_error(heater_id, FPSTR(str_t_thermal_runaway), GET_TEXT_F(MSG_THERMAL_RUNAWAY));

+ 5
- 5
Marlin/src/module/temperature.h 查看文件

1009
     static void min_temp_error(const heater_id_t e);
1009
     static void min_temp_error(const heater_id_t e);
1010
     static void max_temp_error(const heater_id_t e);
1010
     static void max_temp_error(const heater_id_t e);
1011
 
1011
 
1012
-    #define HAS_THERMAL_PROTECTION ANY(THERMAL_PROTECTION_HOTENDS, THERMAL_PROTECTION_CHAMBER, HAS_THERMALLY_PROTECTED_BED, THERMAL_PROTECTION_COOLER)
1012
+    #define HAS_THERMAL_PROTECTION ANY(THERMAL_PROTECTION_HOTENDS, THERMAL_PROTECTION_CHAMBER, THERMAL_PROTECTION_BED, THERMAL_PROTECTION_COOLER)
1013
 
1013
 
1014
     #if HAS_THERMAL_PROTECTION
1014
     #if HAS_THERMAL_PROTECTION
1015
 
1015
 
1021
           REPEAT(HOTENDS, _RUNAWAY_IND_E)
1021
           REPEAT(HOTENDS, _RUNAWAY_IND_E)
1022
           #undef _RUNAWAY_IND_E
1022
           #undef _RUNAWAY_IND_E
1023
         #endif
1023
         #endif
1024
-        OPTARG(HAS_THERMALLY_PROTECTED_BED, RUNAWAY_IND_BED)
1024
+        OPTARG(THERMAL_PROTECTION_BED, RUNAWAY_IND_BED)
1025
         OPTARG(THERMAL_PROTECTION_CHAMBER, RUNAWAY_IND_CHAMBER)
1025
         OPTARG(THERMAL_PROTECTION_CHAMBER, RUNAWAY_IND_CHAMBER)
1026
         OPTARG(THERMAL_PROTECTION_COOLER, RUNAWAY_IND_COOLER)
1026
         OPTARG(THERMAL_PROTECTION_COOLER, RUNAWAY_IND_COOLER)
1027
         , NR_HEATER_RUNAWAY
1027
         , NR_HEATER_RUNAWAY
1029
 
1029
 
1030
       // Convert the given heater_id_t to runaway state array index
1030
       // Convert the given heater_id_t to runaway state array index
1031
       static RunawayIndex runaway_index_for_id(const int8_t heater_id) {
1031
       static RunawayIndex runaway_index_for_id(const int8_t heater_id) {
1032
-        TERN_(HAS_THERMALLY_PROTECTED_CHAMBER, if (heater_id == H_CHAMBER) return RUNAWAY_IND_CHAMBER);
1032
+        TERN_(THERMAL_PROTECTION_CHAMBER, if (heater_id == H_CHAMBER) return RUNAWAY_IND_CHAMBER);
1033
-        TERN_(HAS_THERMALLY_PROTECTED_CHAMBER, if (heater_id == H_COOLER)  return RUNAWAY_IND_COOLER);
1033
+        TERN_(THERMAL_PROTECTION_COOLER,  if (heater_id == H_COOLER)  return RUNAWAY_IND_COOLER);
1034
-        TERN_(HAS_THERMALLY_PROTECTED_BED,     if (heater_id == H_BED)     return RUNAWAY_IND_BED);
1034
+        TERN_(THERMAL_PROTECTION_BED,     if (heater_id == H_BED)     return RUNAWAY_IND_BED);
1035
         return (RunawayIndex)_MAX(heater_id, 0);
1035
         return (RunawayIndex)_MAX(heater_id, 0);
1036
       }
1036
       }
1037
 
1037
 

正在加载...
取消
保存