diff --git a/Marlin/cardreader.pde b/Marlin/cardreader.pde index 6ad04068e4559972230751023c0defaf63b10cba..735a1cdcd8e231b7682ccffa9444307a4af232fe 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 33c7e154c1c2866db960aad9cb59741199fb9b3c..51a9fe0719b6231ec22e3d0d3c9efffabf504203 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 fd388ca68bd5b338a9928cb2682dfd482ae7e8fe..37ce3b546992e7cd8662c72173c42726ee0edb9f 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