|
|
@ -20,11 +20,13 @@ |
|
|
|
* |
|
|
|
*/ |
|
|
|
|
|
|
|
#include "../Marlin.h" |
|
|
|
#include "../inc/MarlinConfigPre.h" |
|
|
|
|
|
|
|
#if ENABLED(BACKLASH_COMPENSATION) |
|
|
|
|
|
|
|
#include "backlash.h" |
|
|
|
|
|
|
|
#include "../module/motion.h" |
|
|
|
#include "../module/planner.h" |
|
|
|
|
|
|
|
#if ENABLED(BACKLASH_GCODE) |
|
|
@ -75,10 +77,10 @@ void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const |
|
|
|
// to segments where there is no direction change.
|
|
|
|
static int32_t residual_error[XYZ] = { 0 }; |
|
|
|
#else |
|
|
|
// No leftover residual error from segment to segment
|
|
|
|
int32_t residual_error[XYZ] = { 0 }; |
|
|
|
// No direction change, no correction.
|
|
|
|
if (!changed_dir) return; |
|
|
|
// No leftover residual error from segment to segment
|
|
|
|
int32_t residual_error[XYZ] = { 0 }; |
|
|
|
#endif |
|
|
|
|
|
|
|
const float f_corr = float(correction) / 255.0f; |
|
|
@ -100,7 +102,7 @@ void Backlash::add_correction_steps(const int32_t &da, const int32_t &db, const |
|
|
|
if (reversing == (error_correction < 0)) { |
|
|
|
if (segment_proportion == 0) |
|
|
|
segment_proportion = MIN(1.0f, block->millimeters / smoothing_mm); |
|
|
|
error_correction = ceil(segment_proportion * error_correction); |
|
|
|
error_correction = CEIL(segment_proportion * error_correction); |
|
|
|
} |
|
|
|
else |
|
|
|
error_correction = 0; // Don't take up any backlash in this segment, as it would subtract steps
|
|
|
|