From 032f2637a793b5258911e288aea5d0e99743f680 Mon Sep 17 00:00:00 2001 From: PavelSindler <sindlerpa@gmail.com> Date: Sun, 30 Apr 2017 17:08:00 +0200 Subject: [PATCH] adding edits made by akukan --- Firmware/Marlin_main.cpp | 33 ++++++++++++++++++++++++++++---- Firmware/stepper.cpp | 41 ++++++++++++++++++++++++++++++++-------- Firmware/ultralcd.cpp | 9 +++++++++ Firmware/ultralcd.h | 4 ++++ 4 files changed, 75 insertions(+), 12 deletions(-) diff --git a/Firmware/Marlin_main.cpp b/Firmware/Marlin_main.cpp index 2c1a6bf0..0f8d9fd0 100644 --- a/Firmware/Marlin_main.cpp +++ b/Firmware/Marlin_main.cpp @@ -5109,11 +5109,35 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp } else { - #ifdef FILAMENTCHANGE_FINALRETRACT - target[E_AXIS]+= FILAMENTCHANGE_FINALRETRACT ; - #endif + #ifdef SNMM + + #else + #ifdef FILAMENTCHANGE_FINALRETRACT + target[E_AXIS] += FILAMENTCHANGE_FINALRETRACT; + #endif + #endif // SNMM } - plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_RFEED, active_extruder); + +#ifdef SNMM + target[E_AXIS] += 12; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3500, active_extruder); + target[E_AXIS] += 6; + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5000, active_extruder); + target[E_AXIS] += (FIL_LOAD_LENGTH * -1); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 5000, active_extruder); + st_synchronize(); + target[E_AXIS] += (FIL_COOLING); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); + target[E_AXIS] += (FIL_COOLING*-1); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 50, active_extruder); + target[E_AXIS] += (BOWDEN_LENGTH*-1); + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], 3000, active_extruder); + st_synchronize(); + +#else + plan_buffer_line(target[X_AXIS], target[Y_AXIS], target[Z_AXIS], target[E_AXIS], FILAMENTCHANGE_RFEED, active_extruder); +#endif // SNMM + //finish moves st_synchronize(); @@ -5389,6 +5413,7 @@ case 404: //M404 Enter the nominal filament width (3mm, 1.75mm ) N<3.0> or disp else { tmp_extruder = code_value(); #ifdef SNMM + snmm_extruder = tmp_extruder; st_synchronize(); delay(100); diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index 919c5591..b92f54ee 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -515,14 +515,39 @@ ISR(TIMER1_COMPA_vect) } #endif - if ((out_bits & (1<<E_AXIS)) != 0) { // -direction - REV_E_DIR(); - count_direction[E_AXIS]=-1; - } - else { // +direction - NORM_E_DIR(); - count_direction[E_AXIS]=1; - } + if ((out_bits & (1 << E_AXIS)) != 0) + { // -direction + //AKU +#ifdef SNMM + if (snmm_extruder == 0 || snmm_extruder == 2) + { + NORM_E_DIR(); + } + else + { + REV_E_DIR(); + } +#else + REV_E_DIR(); +#endif // SNMM + count_direction[E_AXIS] = -1; + } + else + { // +direction +#ifdef SNMM + if (snmm_extruder == 0 || snmm_extruder == 2) + { + REV_E_DIR(); + } + else + { + NORM_E_DIR(); + } +#else + NORM_E_DIR(); +#endif // SNMM + count_direction[E_AXIS] = 1; + } for(uint8_t i=0; i < step_loops; i++) { // Take multiple steps per interrupt (For high speed moves) #ifndef AT90USB diff --git a/Firmware/ultralcd.cpp b/Firmware/ultralcd.cpp index 94c3ad76..5a9461f3 100644 --- a/Firmware/ultralcd.cpp +++ b/Firmware/ultralcd.cpp @@ -96,6 +96,10 @@ int8_t SDscrool = 0; int8_t SilentModeMenu = 0; +#ifdef SNMM +uint8_t snmm_extruder = 0; +#endif + int lcd_commands_type=LCD_COMMAND_IDLE; int lcd_commands_step=0; bool isPrintPaused = false; @@ -2949,9 +2953,14 @@ void change_extr(int extr) { //switches multiplexer for extruders disable_e1(); disable_e2(); +#ifdef SNMM + snmm_extruder = extr; +#endif + pinMode(E_MUX0_PIN, OUTPUT); pinMode(E_MUX1_PIN, OUTPUT); pinMode(E_MUX2_PIN, OUTPUT); + switch (extr) { case 1: WRITE(E_MUX0_PIN, HIGH); diff --git a/Firmware/ultralcd.h b/Firmware/ultralcd.h index cd7e1842..865be3f1 100644 --- a/Firmware/ultralcd.h +++ b/Firmware/ultralcd.h @@ -103,6 +103,10 @@ void lcd_mylang(); extern int farm_timer; extern int farm_status; +#ifdef SNMM + extern uint8_t snmm_extruder; +#endif // SNMM + extern bool cancel_heatup; extern bool isPrintPaused;