diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index fd3687a7f..5679aa309 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -784,6 +784,8 @@ #define DEFAULT_YJERK 10.0 #define DEFAULT_ZJERK 0.3 + //#define TRAVEL_EXTRA_XYJERK 0.0 // Additional jerk allowance for all travel moves + //#define LIMITED_JERK_EDITING // Limit edit via M205 or LCD to DEFAULT_aJERK * 2 #if ENABLED(LIMITED_JERK_EDITING) #define MAX_JERK_EDIT_VALUES { 20, 20, 0.6, 10 } // ...or, set your own edit limits diff --git a/Marlin/src/module/planner.cpp b/Marlin/src/module/planner.cpp index bf01c771a..dd1109011 100644 --- a/Marlin/src/module/planner.cpp +++ b/Marlin/src/module/planner.cpp @@ -2397,8 +2397,15 @@ bool Planner::_populate_block(block_t * const block, bool split_move, LOOP_XYZE(i) #endif { - const float jerk = ABS(current_speed[i]), // cs : Starting from zero, change in speed for this axis - maxj = max_jerk[i]; // mj : The max jerk setting for this axis + const float jerk = ABS(current_speed[i]); // cs : Starting from zero, change in speed for this axis + + float maxj = max_jerk[i]; // mj : The max jerk setting for this axis + + #ifdef TRAVEL_EXTRA_XYJERK + if ((TRAVEL_EXTRA_XYJERK) && !de <= 0 && (i == X_AXIS || i == Y_AXIS)) + maxj += TRAVEL_EXTRA_XYJERK; // Extra jerk allowance for travel moves + #endif + if (jerk > maxj) { // cs > mj : New current speed too fast? if (limited) { // limited already? const float mjerk = nominal_speed * maxj; // ns*mj