🐛 Fix backlash applied steps when config changes (#23826)
Followup to #23814
This commit is contained in:
committed by
Scott Lahteine
parent
2d648e4dd9
commit
41a51e9527
@ -1706,7 +1706,7 @@ void Planner::endstop_triggered(const AxisEnum axis) {
|
||||
}
|
||||
|
||||
float Planner::triggered_position_mm(const AxisEnum axis) {
|
||||
const float result = DIFF_TERN(BACKLASH_COMPENSATION, stepper.triggered_position(axis), backlash.applied_steps(axis));
|
||||
const float result = DIFF_TERN(BACKLASH_COMPENSATION, stepper.triggered_position(axis), backlash.get_applied_steps(axis));
|
||||
return result * mm_per_step[axis];
|
||||
}
|
||||
|
||||
@ -1729,8 +1729,8 @@ float Planner::get_axis_position_mm(const AxisEnum axis) {
|
||||
// Protect the access to the position.
|
||||
const bool was_enabled = stepper.suspend();
|
||||
|
||||
const int32_t p1 = DIFF_TERN(BACKLASH_COMPENSATION, stepper.position(CORE_AXIS_1), backlash.applied_steps(CORE_AXIS_1)),
|
||||
p2 = DIFF_TERN(BACKLASH_COMPENSATION, stepper.position(CORE_AXIS_2), backlash.applied_steps(CORE_AXIS_2));
|
||||
const int32_t p1 = DIFF_TERN(BACKLASH_COMPENSATION, stepper.position(CORE_AXIS_1), backlash.get_applied_steps(CORE_AXIS_1)),
|
||||
p2 = DIFF_TERN(BACKLASH_COMPENSATION, stepper.position(CORE_AXIS_2), backlash.get_applied_steps(CORE_AXIS_2));
|
||||
|
||||
if (was_enabled) stepper.wake_up();
|
||||
|
||||
@ -1739,7 +1739,7 @@ float Planner::get_axis_position_mm(const AxisEnum axis) {
|
||||
axis_steps = (axis == CORE_AXIS_2 ? CORESIGN(p1 - p2) : p1 + p2) * 0.5f;
|
||||
}
|
||||
else
|
||||
axis_steps = DIFF_TERN(BACKLASH_COMPENSATION, stepper.position(axis), backlash.applied_steps(axis));
|
||||
axis_steps = DIFF_TERN(BACKLASH_COMPENSATION, stepper.position(axis), backlash.get_applied_steps(axis));
|
||||
|
||||
#elif EITHER(MARKFORGED_XY, MARKFORGED_YX)
|
||||
|
||||
@ -1756,12 +1756,12 @@ float Planner::get_axis_position_mm(const AxisEnum axis) {
|
||||
axis_steps = ((axis == CORE_AXIS_1) ? p1 - p2 : p2);
|
||||
}
|
||||
else
|
||||
axis_steps = DIFF_TERN(BACKLASH_COMPENSATION, stepper.position(axis), backlash.applied_steps(axis));
|
||||
axis_steps = DIFF_TERN(BACKLASH_COMPENSATION, stepper.position(axis), backlash.get_applied_steps(axis));
|
||||
|
||||
#else
|
||||
|
||||
axis_steps = stepper.position(axis);
|
||||
TERN_(BACKLASH_COMPENSATION, axis_steps -= backlash.applied_steps(axis));
|
||||
TERN_(BACKLASH_COMPENSATION, axis_steps -= backlash.get_applied_steps(axis));
|
||||
|
||||
#endif
|
||||
|
||||
@ -2844,7 +2844,7 @@ void Planner::buffer_sync_block(TERN_(LASER_SYNCHRONOUS_M106_M107, uint8_t sync_
|
||||
|
||||
block->position = position;
|
||||
#if ENABLED(BACKLASH_COMPENSATION)
|
||||
LOOP_LINEAR_AXES(axis) block->position[axis] += backlash.applied_steps((AxisEnum)axis);
|
||||
LOOP_LINEAR_AXES(axis) block->position[axis] += backlash.get_applied_steps((AxisEnum)axis);
|
||||
#endif
|
||||
|
||||
#if BOTH(HAS_FAN, LASER_SYNCHRONOUS_M106_M107)
|
||||
@ -3122,7 +3122,7 @@ void Planner::set_machine_position_mm(const abce_pos_t &abce) {
|
||||
else {
|
||||
#if ENABLED(BACKLASH_COMPENSATION)
|
||||
abce_long_t stepper_pos = position;
|
||||
LOOP_LINEAR_AXES(axis) stepper_pos[axis] += backlash.applied_steps((AxisEnum)axis);
|
||||
LOOP_LINEAR_AXES(axis) stepper_pos[axis] += backlash.get_applied_steps((AxisEnum)axis);
|
||||
stepper.set_position(stepper_pos);
|
||||
#else
|
||||
stepper.set_position(position);
|
||||
|
Reference in New Issue
Block a user