Skip to content

Commit 425431d

Browse files
committed
✨ SOFT_FEED_HOLD
MarlinFirmware/Marlin#28265
1 parent 3c281e9 commit 425431d

File tree

406 files changed

+12586
-3248
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

406 files changed

+12586
-3248
lines changed

config/default/Configuration_adv.h

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2830,8 +2830,8 @@
28302830
*
28312831
* Adds support for commands:
28322832
* S000 : Report State and Position while moving.
2833-
* P000 : Instant Pause / Hold while moving.
2834-
* R000 : Resume from Pause / Hold.
2833+
* P000 : Instant Pause / Hold while moving. Enable SOFT_FEED_HOLD for soft deceleration.
2834+
* R000 : Resume from Pause / Hold. Enable SOFT_FEED_HOLD for soft acceleration.
28352835
*
28362836
* - During Hold all Emergency Parser commands are available, as usual.
28372837
* - Enable NANODLP_Z_SYNC and NANODLP_ALL_AXIS for move command end-state reports.
@@ -4478,15 +4478,38 @@
44784478
#endif
44794479

44804480
/**
4481-
* Instant freeze / unfreeze functionality
4482-
* Potentially useful for rapid stop that allows being resumed. Halts stepper movement.
4483-
* Note this does NOT pause spindles, lasers, fans, heaters or any other auxiliary device.
4484-
* @section interface
4481+
* Freeze / Unfreeze
4482+
*
4483+
* Pause / Hold that keeps power available and does not stop the spindle can be initiated by
4484+
* the FREEZE_PIN. Halts instantly (default) or performs a soft feed hold that decelerates and
4485+
* halts movement at FREEZE_JERK (requires SOFT_FEED_HOLD).
4486+
* Motion can be resumed by using the FREEZE_PIN.
4487+
*
4488+
* NOTE: Controls Laser PWM but does NOT pause Spindle, Fans, Heaters or other devices.
4489+
* @section freeze
44854490
*/
44864491
//#define FREEZE_FEATURE
44874492
#if ENABLED(FREEZE_FEATURE)
4488-
//#define FREEZE_PIN 41 // Override the default (KILL) pin here
4489-
#define FREEZE_STATE LOW // State of pin indicating freeze
4493+
//#define FREEZE_PIN -1 // Override the default (KILL) pin here
4494+
#define FREEZE_STATE LOW // State of pin indicating freeze
4495+
#endif
4496+
4497+
#if ANY(FREEZE_FEATURE, REALTIME_REPORTING_COMMANDS)
4498+
/**
4499+
* Command P000 (REALTIME_REPORTING_COMMANDS and EMERGENCY_PARSER) or
4500+
* FREEZE_PIN (FREEZE_FEATURE) initiates a soft feed hold that keeps
4501+
* power available and does not stop the spindle.
4502+
*
4503+
* The soft feed hold decelerates and halts movement at FREEZE_JERK.
4504+
* Motion can be resumed with command R000 (requires REALTIME_REPORTING_COMMANDS) or
4505+
* by using the FREEZE_PIN (requires FREEZE_FEATURE).
4506+
*
4507+
* NOTE: Affects Laser PWM but DOES NOT pause Spindle, Fans, Heaters or other devices.
4508+
*/
4509+
//#define SOFT_FEED_HOLD
4510+
#if ENABLED(SOFT_FEED_HOLD)
4511+
#define FREEZE_JERK 2 // (mm/s) Completely halt when motion has decelerated below this value
4512+
#endif
44904513
#endif
44914514

44924515
/**

config/examples/3DFabXYZ/Migbot/Configuration_adv.h

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2821,8 +2821,8 @@
28212821
*
28222822
* Adds support for commands:
28232823
* S000 : Report State and Position while moving.
2824-
* P000 : Instant Pause / Hold while moving.
2825-
* R000 : Resume from Pause / Hold.
2824+
* P000 : Instant Pause / Hold while moving. Enable SOFT_FEED_HOLD for soft deceleration.
2825+
* R000 : Resume from Pause / Hold. Enable SOFT_FEED_HOLD for soft acceleration.
28262826
*
28272827
* - During Hold all Emergency Parser commands are available, as usual.
28282828
* - Enable NANODLP_Z_SYNC and NANODLP_ALL_AXIS for move command end-state reports.
@@ -4469,15 +4469,38 @@
44694469
#endif
44704470

44714471
/**
4472-
* Instant freeze / unfreeze functionality
4473-
* Potentially useful for rapid stop that allows being resumed. Halts stepper movement.
4474-
* Note this does NOT pause spindles, lasers, fans, heaters or any other auxiliary device.
4475-
* @section interface
4472+
* Freeze / Unfreeze
4473+
*
4474+
* Pause / Hold that keeps power available and does not stop the spindle can be initiated by
4475+
* the FREEZE_PIN. Halts instantly (default) or performs a soft feed hold that decelerates and
4476+
* halts movement at FREEZE_JERK (requires SOFT_FEED_HOLD).
4477+
* Motion can be resumed by using the FREEZE_PIN.
4478+
*
4479+
* NOTE: Controls Laser PWM but does NOT pause Spindle, Fans, Heaters or other devices.
4480+
* @section freeze
44764481
*/
44774482
//#define FREEZE_FEATURE
44784483
#if ENABLED(FREEZE_FEATURE)
4479-
//#define FREEZE_PIN 41 // Override the default (KILL) pin here
4480-
#define FREEZE_STATE LOW // State of pin indicating freeze
4484+
//#define FREEZE_PIN -1 // Override the default (KILL) pin here
4485+
#define FREEZE_STATE LOW // State of pin indicating freeze
4486+
#endif
4487+
4488+
#if ANY(FREEZE_FEATURE, REALTIME_REPORTING_COMMANDS)
4489+
/**
4490+
* Command P000 (REALTIME_REPORTING_COMMANDS and EMERGENCY_PARSER) or
4491+
* FREEZE_PIN (FREEZE_FEATURE) initiates a soft feed hold that keeps
4492+
* power available and does not stop the spindle.
4493+
*
4494+
* The soft feed hold decelerates and halts movement at FREEZE_JERK.
4495+
* Motion can be resumed with command R000 (requires REALTIME_REPORTING_COMMANDS) or
4496+
* by using the FREEZE_PIN (requires FREEZE_FEATURE).
4497+
*
4498+
* NOTE: Affects Laser PWM but DOES NOT pause Spindle, Fans, Heaters or other devices.
4499+
*/
4500+
//#define SOFT_FEED_HOLD
4501+
#if ENABLED(SOFT_FEED_HOLD)
4502+
#define FREEZE_JERK 2 // (mm/s) Completely halt when motion has decelerated below this value
4503+
#endif
44814504
#endif
44824505

44834506
/**

config/examples/3DMatik/XL/Configuration_adv.h

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2821,8 +2821,8 @@
28212821
*
28222822
* Adds support for commands:
28232823
* S000 : Report State and Position while moving.
2824-
* P000 : Instant Pause / Hold while moving.
2825-
* R000 : Resume from Pause / Hold.
2824+
* P000 : Instant Pause / Hold while moving. Enable SOFT_FEED_HOLD for soft deceleration.
2825+
* R000 : Resume from Pause / Hold. Enable SOFT_FEED_HOLD for soft acceleration.
28262826
*
28272827
* - During Hold all Emergency Parser commands are available, as usual.
28282828
* - Enable NANODLP_Z_SYNC and NANODLP_ALL_AXIS for move command end-state reports.
@@ -4469,15 +4469,38 @@
44694469
#endif
44704470

44714471
/**
4472-
* Instant freeze / unfreeze functionality
4473-
* Potentially useful for rapid stop that allows being resumed. Halts stepper movement.
4474-
* Note this does NOT pause spindles, lasers, fans, heaters or any other auxiliary device.
4475-
* @section interface
4472+
* Freeze / Unfreeze
4473+
*
4474+
* Pause / Hold that keeps power available and does not stop the spindle can be initiated by
4475+
* the FREEZE_PIN. Halts instantly (default) or performs a soft feed hold that decelerates and
4476+
* halts movement at FREEZE_JERK (requires SOFT_FEED_HOLD).
4477+
* Motion can be resumed by using the FREEZE_PIN.
4478+
*
4479+
* NOTE: Controls Laser PWM but does NOT pause Spindle, Fans, Heaters or other devices.
4480+
* @section freeze
44764481
*/
44774482
//#define FREEZE_FEATURE
44784483
#if ENABLED(FREEZE_FEATURE)
4479-
//#define FREEZE_PIN 41 // Override the default (KILL) pin here
4480-
#define FREEZE_STATE LOW // State of pin indicating freeze
4484+
//#define FREEZE_PIN -1 // Override the default (KILL) pin here
4485+
#define FREEZE_STATE LOW // State of pin indicating freeze
4486+
#endif
4487+
4488+
#if ANY(FREEZE_FEATURE, REALTIME_REPORTING_COMMANDS)
4489+
/**
4490+
* Command P000 (REALTIME_REPORTING_COMMANDS and EMERGENCY_PARSER) or
4491+
* FREEZE_PIN (FREEZE_FEATURE) initiates a soft feed hold that keeps
4492+
* power available and does not stop the spindle.
4493+
*
4494+
* The soft feed hold decelerates and halts movement at FREEZE_JERK.
4495+
* Motion can be resumed with command R000 (requires REALTIME_REPORTING_COMMANDS) or
4496+
* by using the FREEZE_PIN (requires FREEZE_FEATURE).
4497+
*
4498+
* NOTE: Affects Laser PWM but DOES NOT pause Spindle, Fans, Heaters or other devices.
4499+
*/
4500+
//#define SOFT_FEED_HOLD
4501+
#if ENABLED(SOFT_FEED_HOLD)
4502+
#define FREEZE_JERK 2 // (mm/s) Completely halt when motion has decelerated below this value
4503+
#endif
44814504
#endif
44824505

44834506
/**

config/examples/ADIMLab/Gantry v1/Configuration_adv.h

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2821,8 +2821,8 @@
28212821
*
28222822
* Adds support for commands:
28232823
* S000 : Report State and Position while moving.
2824-
* P000 : Instant Pause / Hold while moving.
2825-
* R000 : Resume from Pause / Hold.
2824+
* P000 : Instant Pause / Hold while moving. Enable SOFT_FEED_HOLD for soft deceleration.
2825+
* R000 : Resume from Pause / Hold. Enable SOFT_FEED_HOLD for soft acceleration.
28262826
*
28272827
* - During Hold all Emergency Parser commands are available, as usual.
28282828
* - Enable NANODLP_Z_SYNC and NANODLP_ALL_AXIS for move command end-state reports.
@@ -4469,15 +4469,38 @@
44694469
#endif
44704470

44714471
/**
4472-
* Instant freeze / unfreeze functionality
4473-
* Potentially useful for rapid stop that allows being resumed. Halts stepper movement.
4474-
* Note this does NOT pause spindles, lasers, fans, heaters or any other auxiliary device.
4475-
* @section interface
4472+
* Freeze / Unfreeze
4473+
*
4474+
* Pause / Hold that keeps power available and does not stop the spindle can be initiated by
4475+
* the FREEZE_PIN. Halts instantly (default) or performs a soft feed hold that decelerates and
4476+
* halts movement at FREEZE_JERK (requires SOFT_FEED_HOLD).
4477+
* Motion can be resumed by using the FREEZE_PIN.
4478+
*
4479+
* NOTE: Controls Laser PWM but does NOT pause Spindle, Fans, Heaters or other devices.
4480+
* @section freeze
44764481
*/
44774482
//#define FREEZE_FEATURE
44784483
#if ENABLED(FREEZE_FEATURE)
4479-
//#define FREEZE_PIN 41 // Override the default (KILL) pin here
4480-
#define FREEZE_STATE LOW // State of pin indicating freeze
4484+
//#define FREEZE_PIN -1 // Override the default (KILL) pin here
4485+
#define FREEZE_STATE LOW // State of pin indicating freeze
4486+
#endif
4487+
4488+
#if ANY(FREEZE_FEATURE, REALTIME_REPORTING_COMMANDS)
4489+
/**
4490+
* Command P000 (REALTIME_REPORTING_COMMANDS and EMERGENCY_PARSER) or
4491+
* FREEZE_PIN (FREEZE_FEATURE) initiates a soft feed hold that keeps
4492+
* power available and does not stop the spindle.
4493+
*
4494+
* The soft feed hold decelerates and halts movement at FREEZE_JERK.
4495+
* Motion can be resumed with command R000 (requires REALTIME_REPORTING_COMMANDS) or
4496+
* by using the FREEZE_PIN (requires FREEZE_FEATURE).
4497+
*
4498+
* NOTE: Affects Laser PWM but DOES NOT pause Spindle, Fans, Heaters or other devices.
4499+
*/
4500+
//#define SOFT_FEED_HOLD
4501+
#if ENABLED(SOFT_FEED_HOLD)
4502+
#define FREEZE_JERK 2 // (mm/s) Completely halt when motion has decelerated below this value
4503+
#endif
44814504
#endif
44824505

44834506
/**

config/examples/ADIMLab/Gantry v2/Configuration_adv.h

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2821,8 +2821,8 @@
28212821
*
28222822
* Adds support for commands:
28232823
* S000 : Report State and Position while moving.
2824-
* P000 : Instant Pause / Hold while moving.
2825-
* R000 : Resume from Pause / Hold.
2824+
* P000 : Instant Pause / Hold while moving. Enable SOFT_FEED_HOLD for soft deceleration.
2825+
* R000 : Resume from Pause / Hold. Enable SOFT_FEED_HOLD for soft acceleration.
28262826
*
28272827
* - During Hold all Emergency Parser commands are available, as usual.
28282828
* - Enable NANODLP_Z_SYNC and NANODLP_ALL_AXIS for move command end-state reports.
@@ -4469,15 +4469,38 @@
44694469
#endif
44704470

44714471
/**
4472-
* Instant freeze / unfreeze functionality
4473-
* Potentially useful for rapid stop that allows being resumed. Halts stepper movement.
4474-
* Note this does NOT pause spindles, lasers, fans, heaters or any other auxiliary device.
4475-
* @section interface
4472+
* Freeze / Unfreeze
4473+
*
4474+
* Pause / Hold that keeps power available and does not stop the spindle can be initiated by
4475+
* the FREEZE_PIN. Halts instantly (default) or performs a soft feed hold that decelerates and
4476+
* halts movement at FREEZE_JERK (requires SOFT_FEED_HOLD).
4477+
* Motion can be resumed by using the FREEZE_PIN.
4478+
*
4479+
* NOTE: Controls Laser PWM but does NOT pause Spindle, Fans, Heaters or other devices.
4480+
* @section freeze
44764481
*/
44774482
//#define FREEZE_FEATURE
44784483
#if ENABLED(FREEZE_FEATURE)
4479-
//#define FREEZE_PIN 41 // Override the default (KILL) pin here
4480-
#define FREEZE_STATE LOW // State of pin indicating freeze
4484+
//#define FREEZE_PIN -1 // Override the default (KILL) pin here
4485+
#define FREEZE_STATE LOW // State of pin indicating freeze
4486+
#endif
4487+
4488+
#if ANY(FREEZE_FEATURE, REALTIME_REPORTING_COMMANDS)
4489+
/**
4490+
* Command P000 (REALTIME_REPORTING_COMMANDS and EMERGENCY_PARSER) or
4491+
* FREEZE_PIN (FREEZE_FEATURE) initiates a soft feed hold that keeps
4492+
* power available and does not stop the spindle.
4493+
*
4494+
* The soft feed hold decelerates and halts movement at FREEZE_JERK.
4495+
* Motion can be resumed with command R000 (requires REALTIME_REPORTING_COMMANDS) or
4496+
* by using the FREEZE_PIN (requires FREEZE_FEATURE).
4497+
*
4498+
* NOTE: Affects Laser PWM but DOES NOT pause Spindle, Fans, Heaters or other devices.
4499+
*/
4500+
//#define SOFT_FEED_HOLD
4501+
#if ENABLED(SOFT_FEED_HOLD)
4502+
#define FREEZE_JERK 2 // (mm/s) Completely halt when motion has decelerated below this value
4503+
#endif
44814504
#endif
44824505

44834506
/**

config/examples/Alfawise/U20-bltouch/Configuration_adv.h

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2831,8 +2831,8 @@
28312831
*
28322832
* Adds support for commands:
28332833
* S000 : Report State and Position while moving.
2834-
* P000 : Instant Pause / Hold while moving.
2835-
* R000 : Resume from Pause / Hold.
2834+
* P000 : Instant Pause / Hold while moving. Enable SOFT_FEED_HOLD for soft deceleration.
2835+
* R000 : Resume from Pause / Hold. Enable SOFT_FEED_HOLD for soft acceleration.
28362836
*
28372837
* - During Hold all Emergency Parser commands are available, as usual.
28382838
* - Enable NANODLP_Z_SYNC and NANODLP_ALL_AXIS for move command end-state reports.
@@ -4479,15 +4479,38 @@
44794479
#endif
44804480

44814481
/**
4482-
* Instant freeze / unfreeze functionality
4483-
* Potentially useful for rapid stop that allows being resumed. Halts stepper movement.
4484-
* Note this does NOT pause spindles, lasers, fans, heaters or any other auxiliary device.
4485-
* @section interface
4482+
* Freeze / Unfreeze
4483+
*
4484+
* Pause / Hold that keeps power available and does not stop the spindle can be initiated by
4485+
* the FREEZE_PIN. Halts instantly (default) or performs a soft feed hold that decelerates and
4486+
* halts movement at FREEZE_JERK (requires SOFT_FEED_HOLD).
4487+
* Motion can be resumed by using the FREEZE_PIN.
4488+
*
4489+
* NOTE: Controls Laser PWM but does NOT pause Spindle, Fans, Heaters or other devices.
4490+
* @section freeze
44864491
*/
44874492
//#define FREEZE_FEATURE
44884493
#if ENABLED(FREEZE_FEATURE)
4489-
//#define FREEZE_PIN 41 // Override the default (KILL) pin here
4490-
#define FREEZE_STATE LOW // State of pin indicating freeze
4494+
//#define FREEZE_PIN -1 // Override the default (KILL) pin here
4495+
#define FREEZE_STATE LOW // State of pin indicating freeze
4496+
#endif
4497+
4498+
#if ANY(FREEZE_FEATURE, REALTIME_REPORTING_COMMANDS)
4499+
/**
4500+
* Command P000 (REALTIME_REPORTING_COMMANDS and EMERGENCY_PARSER) or
4501+
* FREEZE_PIN (FREEZE_FEATURE) initiates a soft feed hold that keeps
4502+
* power available and does not stop the spindle.
4503+
*
4504+
* The soft feed hold decelerates and halts movement at FREEZE_JERK.
4505+
* Motion can be resumed with command R000 (requires REALTIME_REPORTING_COMMANDS) or
4506+
* by using the FREEZE_PIN (requires FREEZE_FEATURE).
4507+
*
4508+
* NOTE: Affects Laser PWM but DOES NOT pause Spindle, Fans, Heaters or other devices.
4509+
*/
4510+
//#define SOFT_FEED_HOLD
4511+
#if ENABLED(SOFT_FEED_HOLD)
4512+
#define FREEZE_JERK 2 // (mm/s) Completely halt when motion has decelerated below this value
4513+
#endif
44914514
#endif
44924515

44934516
/**

config/examples/Alfawise/U20/Configuration_adv.h

Lines changed: 31 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2822,8 +2822,8 @@
28222822
*
28232823
* Adds support for commands:
28242824
* S000 : Report State and Position while moving.
2825-
* P000 : Instant Pause / Hold while moving.
2826-
* R000 : Resume from Pause / Hold.
2825+
* P000 : Instant Pause / Hold while moving. Enable SOFT_FEED_HOLD for soft deceleration.
2826+
* R000 : Resume from Pause / Hold. Enable SOFT_FEED_HOLD for soft acceleration.
28272827
*
28282828
* - During Hold all Emergency Parser commands are available, as usual.
28292829
* - Enable NANODLP_Z_SYNC and NANODLP_ALL_AXIS for move command end-state reports.
@@ -4470,15 +4470,38 @@
44704470
#endif
44714471

44724472
/**
4473-
* Instant freeze / unfreeze functionality
4474-
* Potentially useful for rapid stop that allows being resumed. Halts stepper movement.
4475-
* Note this does NOT pause spindles, lasers, fans, heaters or any other auxiliary device.
4476-
* @section interface
4473+
* Freeze / Unfreeze
4474+
*
4475+
* Pause / Hold that keeps power available and does not stop the spindle can be initiated by
4476+
* the FREEZE_PIN. Halts instantly (default) or performs a soft feed hold that decelerates and
4477+
* halts movement at FREEZE_JERK (requires SOFT_FEED_HOLD).
4478+
* Motion can be resumed by using the FREEZE_PIN.
4479+
*
4480+
* NOTE: Controls Laser PWM but does NOT pause Spindle, Fans, Heaters or other devices.
4481+
* @section freeze
44774482
*/
44784483
//#define FREEZE_FEATURE
44794484
#if ENABLED(FREEZE_FEATURE)
4480-
//#define FREEZE_PIN 41 // Override the default (KILL) pin here
4481-
#define FREEZE_STATE LOW // State of pin indicating freeze
4485+
//#define FREEZE_PIN -1 // Override the default (KILL) pin here
4486+
#define FREEZE_STATE LOW // State of pin indicating freeze
4487+
#endif
4488+
4489+
#if ANY(FREEZE_FEATURE, REALTIME_REPORTING_COMMANDS)
4490+
/**
4491+
* Command P000 (REALTIME_REPORTING_COMMANDS and EMERGENCY_PARSER) or
4492+
* FREEZE_PIN (FREEZE_FEATURE) initiates a soft feed hold that keeps
4493+
* power available and does not stop the spindle.
4494+
*
4495+
* The soft feed hold decelerates and halts movement at FREEZE_JERK.
4496+
* Motion can be resumed with command R000 (requires REALTIME_REPORTING_COMMANDS) or
4497+
* by using the FREEZE_PIN (requires FREEZE_FEATURE).
4498+
*
4499+
* NOTE: Affects Laser PWM but DOES NOT pause Spindle, Fans, Heaters or other devices.
4500+
*/
4501+
//#define SOFT_FEED_HOLD
4502+
#if ENABLED(SOFT_FEED_HOLD)
4503+
#define FREEZE_JERK 2 // (mm/s) Completely halt when motion has decelerated below this value
4504+
#endif
44824505
#endif
44834506

44844507
/**

0 commit comments

Comments
 (0)