stepper: Return homing offset in steps instead of an absolute position

Rename get_homed_position() to get_homed_offset() and return the
endstop position delta in steps instead of an absolute position
relative to position_endstop.  The conversion to absolute positions
can be dependent on the type of kinematics in use, so is inappropriate
to do in the low level stepper.py code.

Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2016-10-13 10:04:30 -04:00
parent da7d8dbcac
commit 977aabe038
2 changed files with 7 additions and 6 deletions

View File

@ -28,7 +28,8 @@ class CartKinematics:
max_xy_accel = min(s.max_accel for s in self.steppers[:2]) max_xy_accel = min(s.max_accel for s in self.steppers[:2])
return max_xy_speed, max_xy_accel return max_xy_speed, max_xy_accel
def get_homed_position(self): def get_homed_position(self):
return [s.get_homed_position() for s in self.steppers] return [s.position_endstop + s.get_homed_offset()*s.step_dist
for s in self.steppers]
def home(self, toolhead, axes): def home(self, toolhead, axes):
# Each axis is homed independently and in order # Each axis is homed independently and in order
homing_state = homing.Homing(toolhead, axes) homing_state = homing.Homing(toolhead, axes)

View File

@ -85,21 +85,21 @@ class PrinterStepper:
return None return None
self.mcu_endstop.query_endstop() self.mcu_endstop.query_endstop()
return self.mcu_endstop return self.mcu_endstop
def get_homed_position(self): def get_homed_offset(self):
if not self.homing_stepper_phases: if not self.homing_stepper_phases:
return self.position_endstop return 0
pos = self.mcu_endstop.get_last_position() pos = self.mcu_endstop.get_last_position()
pos %= self.homing_stepper_phases pos %= self.homing_stepper_phases
if self.homing_endstop_phase is None: if self.homing_endstop_phase is None:
logging.info("Setting %s endstop phase to %d" % ( logging.info("Setting %s endstop phase to %d" % (
self.config.section, pos)) self.config.section, pos))
self.homing_endstop_phase = pos self.homing_endstop_phase = pos
return self.position_endstop return 0
delta = (pos - self.homing_endstop_phase) % self.homing_stepper_phases delta = (pos - self.homing_endstop_phase) % self.homing_stepper_phases
if delta >= self.homing_stepper_phases - self.homing_endstop_accuracy: if delta >= self.homing_stepper_phases - self.homing_endstop_accuracy:
delta -= self.homing_stepper_phases delta -= self.homing_stepper_phases
elif delta > self.homing_endstop_accuracy: elif delta > self.homing_endstop_accuracy:
logging.error("Endstop %s incorrect phase (got %d vs %d)" % ( logging.error("Endstop %s incorrect phase (got %d vs %d)" % (
self.config.section, pos, self.homing_endstop_phase)) self.config.section, pos, self.homing_endstop_phase))
return self.position_endstop return 0
return self.position_endstop + delta * self.step_dist return delta