aboutsummaryrefslogtreecommitdiffstats
path: root/klippy/kinematics/corexy.py
diff options
context:
space:
mode:
Diffstat (limited to 'klippy/kinematics/corexy.py')
-rw-r--r--klippy/kinematics/corexy.py41
1 files changed, 12 insertions, 29 deletions
diff --git a/klippy/kinematics/corexy.py b/klippy/kinematics/corexy.py
index 4121c4b6..99f48fbf 100644
--- a/klippy/kinematics/corexy.py
+++ b/klippy/kinematics/corexy.py
@@ -48,42 +48,25 @@ class CoreXYKinematics:
# Each axis is homed independently and in order
for axis in homing_state.get_axes():
rail = self.rails[axis]
- # Determine moves
+ # Determine movement
position_min, position_max = rail.get_range()
hi = rail.get_homing_info()
+ homepos = [None, None, None, None]
+ homepos[axis] = hi.position_endstop
+ forcepos = list(homepos)
if hi.positive_dir:
- pos = hi.position_endstop - 1.5*(
- hi.position_endstop - position_min)
- rpos = hi.position_endstop - hi.retract_dist
- r2pos = rpos - hi.retract_dist
+ forcepos[axis] -= 1.5 * (hi.position_endstop - position_min)
else:
- pos = hi.position_endstop + 1.5*(
- position_max - hi.position_endstop)
- rpos = hi.position_endstop + hi.retract_dist
- r2pos = rpos + hi.retract_dist
- # Initial homing
- homing_speed = hi.speed
- second_homing_speed = hi.second_homing_speed
+ forcepos[axis] += 1.5 * (position_max - hi.position_endstop)
+ # Perform homing
+ limit_speed = None
if axis == 2:
- homing_speed = min(homing_speed, self.max_z_velocity)
- second_homing_speed = min(second_homing_speed,
- self.max_z_velocity)
- homepos = [None, None, None, None]
- homepos[axis] = hi.position_endstop
- coord = [None, None, None, None]
- coord[axis] = pos
- homing_state.home(coord, homepos, rail.get_endstops(), homing_speed)
- # Retract
- coord[axis] = rpos
- homing_state.retract(coord, homing_speed)
- # Home again
- coord[axis] = r2pos
- homing_state.home(coord, homepos, rail.get_endstops(),
- second_homing_speed, second_home=True)
+ limit_speed = self.max_z_velocity
+ homing_state.home_rails([rail], forcepos, homepos, limit_speed)
if axis == 2:
# Support endstop phase detection on Z axis
- coord[axis] = hi.position_endstop + rail.get_homed_offset()
- homing_state.set_homed_position(coord)
+ forcepos[axis] = hi.position_endstop + rail.get_homed_offset()
+ homing_state.set_homed_position(forcepos)
def motor_off(self, print_time):
self.limits = [(1.0, -1.0)] * 3
for rail in self.rails: