From f16bea26e5cc360086194d152af6ccf027731c07 Mon Sep 17 00:00:00 2001 From: NotaRobotexe Date: Thu, 25 Apr 2019 17:34:52 +0200 Subject: [PATCH 1/2] raise the Z axis before filament loading to nozzle on MMU2S --- Firmware/mmu.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index ef5b021c9..b7746f2d5 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -1367,6 +1367,7 @@ bFilamentAction=false; // NOT in "mmu_load_to_nozzle_ manage_response(true, true, MMU_TCODE_MOVE); mmu_continue_loading(false); mmu_extruder = tmp_extruder; //filament change is finished + if (current_position[Z_AXIS] < 20) current_position[Z_AXIS] += 30; mmu_load_to_nozzle(); load_filament_final_feed(); st_synchronize(); From 1f3877b221628c0db8383f0a28549554112630b0 Mon Sep 17 00:00:00 2001 From: Marek Bel Date: Wed, 15 May 2019 16:27:24 +0200 Subject: [PATCH 2/2] Extract duplicate code into function. Saves 4B of flash. --- Firmware/Marlin.h | 1 + Firmware/Marlin_main.cpp | 11 +++++++++-- Firmware/mmu.cpp | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Firmware/Marlin.h b/Firmware/Marlin.h index 08f7b4f22..b82856f8d 100644 --- a/Firmware/Marlin.h +++ b/Firmware/Marlin.h @@ -498,3 +498,4 @@ void M600_wait_for_user(float HotendTempBckp); void M600_check_state(float nozzle_temp); void load_filament_final_feed(); void marlin_wait_for_click(); +void marlin_rise_z(void); diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index e23ca37e8..44489085c 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -3123,7 +3123,14 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float } - +//! @brief Rise Z if too low to avoid blob/jam before filament loading +//! +//! It doesn't plan_buffer_line(), as it expects plan_buffer_line() to be called after +//! during extruding (loading) filament. +void marlin_rise_z(void) +{ + if (current_position[Z_AXIS] < 20) current_position[Z_AXIS] += 30; +} void gcode_M701() { @@ -3148,7 +3155,7 @@ void gcode_M701() plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence st_synchronize(); - if (current_position[Z_AXIS] < 20) current_position[Z_AXIS] += 30; + marlin_rise_z(); current_position[E_AXIS] += 30; plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence diff --git a/Firmware/mmu.cpp b/Firmware/mmu.cpp index b7746f2d5..5a8ef817d 100644 --- a/Firmware/mmu.cpp +++ b/Firmware/mmu.cpp @@ -1367,7 +1367,7 @@ bFilamentAction=false; // NOT in "mmu_load_to_nozzle_ manage_response(true, true, MMU_TCODE_MOVE); mmu_continue_loading(false); mmu_extruder = tmp_extruder; //filament change is finished - if (current_position[Z_AXIS] < 20) current_position[Z_AXIS] += 30; + marlin_rise_z(); mmu_load_to_nozzle(); load_filament_final_feed(); st_synchronize();