diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index e8b960f78..febc3bcca 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -292,6 +292,7 @@ const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of th //#define ULTRA_LCD //general lcd support, also 16x2 //#define SDSUPPORT // Enable SD Card Support in Hardware Console #define SD_FINISHED_STEPPERRELEASE true //if sd support and the file is finished: disable steppers? +#define SD_FINISHED_RELEASECOMMAND "M84 X Y E" // no z because of layer shift. //#define ULTIPANEL #ifdef ULTIPANEL diff --git a/Marlin/Marlin.pde b/Marlin/Marlin.pde index ac42c1584..f3182a7d0 100644 --- a/Marlin/Marlin.pde +++ b/Marlin/Marlin.pde @@ -903,18 +903,22 @@ FORCE_INLINE void process_commands() } else { - #if ((E_ENABLE_PIN != X_ENABLE_PIN) && (E_ENABLE_PIN != Y_ENABLE_PIN)) // Only enable on boards that have seperate ENABLE_PINS - if(code_seen('E')) { - st_synchronize(); - LCD_MESSAGEPGM("Free Move"); - disable_e(); - } - else { + bool all_axis = !((code_seen(axis_codes[0])) || (code_seen(axis_codes[1])) || (code_seen(axis_codes[2]))|| (code_seen(axis_codes[3]))); + if(all_axis) + { finishAndDisableSteppers(); } - #else - finishAndDisableSteppers(); - #endif + else + { + st_synchronize(); + if(code_seen('X')) disable_x(); + if(code_seen('Y')) disable_y(); + if(code_seen('Z')) disable_z(); + #if ((E_ENABLE_PIN != X_ENABLE_PIN) && (E_ENABLE_PIN != Y_ENABLE_PIN)) // Only enable on boards that have seperate ENABLE_PINS + if(code_seen('E')) disable_e(); + #endif + LCD_MESSAGEPGM("Partial Release"); + } } break; case 85: // M85 diff --git a/Marlin/cardreader.pde b/Marlin/cardreader.pde index 8355f6aed..6ad04068e 100644 --- a/Marlin/cardreader.pde +++ b/Marlin/cardreader.pde @@ -436,7 +436,7 @@ void CardReader::printingHasFinished() if(SD_FINISHED_STEPPERRELEASE) { //finishAndDisableSteppers(); - enquecommand("M84"); + enquecommand(SD_FINISHED_RELEASECOMMAND); } autotempShutdown(); }