Browse Source

Better ooze prevention during pause (#17625)

Ondřej Nový 4 years ago
parent
commit
468b813bc1
No account linked to committer's email address
1 changed files with 16 additions and 12 deletions
  1. 16
    12
      Marlin/src/feature/pause.cpp

+ 16
- 12
Marlin/src/feature/pause.cpp View File

@@ -541,11 +541,13 @@ void wait_for_confirmation(const bool is_reload/*=false*/, const int8_t max_beep
541 541
  *   - a nozzle timed out, or
542 542
  *   - the nozzle is already heated.
543 543
  * - Display "wait for print to resume"
544
+ * - Retract to prevent oozing
545
+ * - Move the nozzle back to resume_position
546
+ * - Unretract
544 547
  * - Re-prime the nozzle...
545 548
  *   -  FWRETRACT: Recover/prime from the prior G10.
546 549
  *   - !FWRETRACT: Retract by resume_position.e, if negative.
547 550
  *                 Not sure how this logic comes into use.
548
- * - Move the nozzle back to resume_position
549 551
  * - Sync the planner E to resume_position.e
550 552
  * - Send host action for resume, if configured
551 553
  * - Resume the current SD print job, if any
@@ -574,6 +576,18 @@ void resume_print(const float &slow_load_length/*=0*/, const float &fast_load_le
574 576
 
575 577
   TERN_(HAS_LCD_MENU, lcd_pause_show_message(PAUSE_MESSAGE_RESUME));
576 578
 
579
+  // Retract to prevent oozing
580
+  unscaled_e_move(-(PAUSE_PARK_RETRACT_LENGTH), feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE));
581
+
582
+  // Move XY to starting position, then Z
583
+  do_blocking_move_to_xy(resume_position, feedRate_t(NOZZLE_PARK_XY_FEEDRATE));
584
+
585
+  // Move Z_AXIS to saved position
586
+  do_blocking_move_to_z(resume_position.z, feedRate_t(NOZZLE_PARK_Z_FEEDRATE));
587
+
588
+  // Unretract
589
+  unscaled_e_move(PAUSE_PARK_RETRACT_LENGTH, feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE));
590
+
577 591
   // Intelligent resuming
578 592
   #if ENABLED(FWRETRACT)
579 593
     // If retracted before goto pause
@@ -583,13 +597,6 @@ void resume_print(const float &slow_load_length/*=0*/, const float &fast_load_le
583 597
 
584 598
   // If resume_position is negative
585 599
   if (resume_position.e < 0) unscaled_e_move(resume_position.e, feedRate_t(PAUSE_PARK_RETRACT_FEEDRATE));
586
-
587
-  // Move XY to starting position, then Z
588
-  do_blocking_move_to_xy(resume_position, feedRate_t(NOZZLE_PARK_XY_FEEDRATE));
589
-
590
-  // Move Z_AXIS to saved position
591
-  do_blocking_move_to_z(resume_position.z, feedRate_t(NOZZLE_PARK_Z_FEEDRATE));
592
-
593 600
   #if ADVANCED_PAUSE_RESUME_PRIME != 0
594 601
     unscaled_e_move(ADVANCED_PAUSE_RESUME_PRIME, feedRate_t(ADVANCED_PAUSE_PURGE_FEEDRATE));
595 602
   #endif
@@ -611,10 +618,7 @@ void resume_print(const float &slow_load_length/*=0*/, const float &fast_load_le
611 618
   TERN_(HOST_PROMPT_SUPPORT, host_prompt_open(PROMPT_INFO, PSTR("Resuming"), DISMISS_STR));
612 619
 
613 620
   #if ENABLED(SDSUPPORT)
614
-    if (did_pause_print) {
615
-      card.startFileprint();
616
-      --did_pause_print;
617
-    }
621
+    if (did_pause_print) { card.startFileprint(); --did_pause_print; }
618 622
   #endif
619 623
 
620 624
   #if ENABLED(ADVANCED_PAUSE_FANS_PAUSE) && FAN_COUNT > 0

Loading…
Cancel
Save