diff --git a/Marlin/cardreader.pde b/Marlin/cardreader.pde index 6ad04068e4..735a1cdcd8 100644 --- a/Marlin/cardreader.pde +++ b/Marlin/cardreader.pde @@ -432,6 +432,7 @@ void CardReader::updir() void CardReader::printingHasFinished() { + quickStop(); sdprinting = false; if(SD_FINISHED_STEPPERRELEASE) { diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index 33c7e154c1..51a9fe0719 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -752,3 +752,12 @@ void finishAndDisableSteppers() disable_z(); disable_e(); } + +void quickStop() +{ + DISABLE_STEPPER_DRIVER_INTERRUPT(); + while(blocks_queued()) + plan_discard_current_block(); + ENABLE_STEPPER_DRIVER_INTERRUPT(); +} + diff --git a/Marlin/stepper.h b/Marlin/stepper.h index fd388ca68b..37ce3b5469 100644 --- a/Marlin/stepper.h +++ b/Marlin/stepper.h @@ -52,5 +52,5 @@ void finishAndDisableSteppers(); extern block_t *current_block; // A pointer to the block currently being traced - +void quickStop(); #endif