瀏覽代碼

Fast Filament Change temperature check (#18738)

InsanityAutomation 3 年之前
父節點
當前提交
e1191ded02
沒有連結到貢獻者的電子郵件帳戶。
共有 1 個檔案被更改,包括 13 行新增5 行删除
  1. 13
    5
      Marlin/src/feature/pause.cpp

+ 13
- 5
Marlin/src/feature/pause.cpp 查看文件

@@ -119,7 +119,7 @@ fil_change_settings_t fc_settings[EXTRUDERS];
119 119
  *
120 120
  * Returns 'true' if heating was completed, 'false' for abort
121 121
  */
122
-static bool ensure_safe_temperature(const PauseMode mode=PAUSE_MODE_SAME) {
122
+static bool ensure_safe_temperature(const bool wait=true, const PauseMode mode=PAUSE_MODE_SAME) {
123 123
 
124 124
   #if ENABLED(PREVENT_COLD_EXTRUSION)
125 125
     if (!DEBUGGING(DRYRUN) && thermalManager.targetTooColdToExtrude(active_extruder)) {
@@ -134,7 +134,13 @@ static bool ensure_safe_temperature(const PauseMode mode=PAUSE_MODE_SAME) {
134 134
     UNUSED(mode);
135 135
   #endif
136 136
 
137
-  return thermalManager.wait_for_hotend(active_extruder);
137
+  if (wait)
138
+    return thermalManager.wait_for_hotend(active_extruder);
139
+
140
+  while (ABS(thermalManager.degHotend(active_extruder) - thermalManager.degTargetHotend(active_extruder)) > TEMP_WINDOW)
141
+    idle();
142
+
143
+  return true;
138 144
 }
139 145
 
140 146
 /**
@@ -156,7 +162,7 @@ bool load_filament(const float &slow_load_length/*=0*/, const float &fast_load_l
156 162
 ) {
157 163
   TERN(HAS_LCD_MENU,,UNUSED(show_lcd));
158 164
 
159
-  if (!ensure_safe_temperature(mode)) {
165
+  if (!ensure_safe_temperature(false, mode)) {
160 166
     #if HAS_LCD_MENU
161 167
       if (show_lcd) lcd_pause_show_message(PAUSE_MESSAGE_STATUS, mode);
162 168
     #endif
@@ -291,7 +297,7 @@ bool unload_filament(const float &unload_length, const bool show_lcd/*=false*/,
291 297
     constexpr float mix_multiplier = 1.0;
292 298
   #endif
293 299
 
294
-  if (!ensure_safe_temperature(mode)) {
300
+  if (!ensure_safe_temperature(false, mode)) {
295 301
     #if HAS_LCD_MENU
296 302
       if (show_lcd) lcd_pause_show_message(PAUSE_MESSAGE_STATUS);
297 303
     #endif
@@ -498,7 +504,7 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
498 504
       HOTEND_LOOP() thermalManager.reset_hotend_idle_timer(e);
499 505
 
500 506
       // Wait for the heaters to reach the target temperatures
501
-      ensure_safe_temperature();
507
+      ensure_safe_temperature(false);
502 508
 
503 509
       // Show the prompt to continue
504 510
       show_continue_prompt(is_reload);
@@ -587,6 +593,8 @@ void resume_print(const float &slow_load_length/*=0*/, const float &fast_load_le
587 593
   // Unretract
588 594
   unscaled_e_move(PAUSE_PARK_RETRACT_LENGTH, feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE));
589 595
 
596
+  ensure_safe_temperature();
597
+
590 598
   // Intelligent resuming
591 599
   #if ENABLED(FWRETRACT)
592 600
     // If retracted before goto pause

Loading…
取消
儲存