Fix home_delta for SENSORLESS_HOMING (#10145)

This commit is contained in:
Scott Lahteine 2018-03-17 20:52:06 -05:00 committed by GitHub
parent 883524056b
commit 93af8aa157
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -229,6 +229,14 @@ void forward_kinematics_DELTA(float z1, float z2, float z3) {
cartes[Z_AXIS] = z1 + ex[2] * Xnew + ey[2] * Ynew - ez[2] * Znew; cartes[Z_AXIS] = z1 + ex[2] * Xnew + ey[2] * Ynew - ez[2] * Znew;
} }
#if ENABLED(SENSORLESS_HOMING)
inline void delta_sensorless_homing(const bool on=true) {
sensorless_homing_per_axis(A_AXIS, on);
sensorless_homing_per_axis(B_AXIS, on);
sensorless_homing_per_axis(C_AXIS, on);
}
#endif
/** /**
* A delta can only safely home all axes at the same time * A delta can only safely home all axes at the same time
* This is like quick_home_xy() but for 3 towers. * This is like quick_home_xy() but for 3 towers.
@ -243,9 +251,7 @@ bool home_delta() {
// Disable stealthChop if used. Enable diag1 pin on driver. // Disable stealthChop if used. Enable diag1 pin on driver.
#if ENABLED(SENSORLESS_HOMING) #if ENABLED(SENSORLESS_HOMING)
sensorless_homing_per_axis(A_AXIS); delta_sensorless_homing();
sensorless_homing_per_axis(B_AXIS);
sensorless_homing_per_axis(C_AXIS);
#endif #endif
// Move all carriages together linearly until an endstop is hit. // Move all carriages together linearly until an endstop is hit.
@ -254,19 +260,15 @@ bool home_delta() {
line_to_current_position(); line_to_current_position();
stepper.synchronize(); stepper.synchronize();
// Re-enable stealthChop if used. Disable diag1 pin on driver.
#if ENABLED(SENSORLESS_HOMING)
sensorless_homing_per_axis(A_AXIS, false);
sensorless_homing_per_axis(B_AXIS, false);
sensorless_homing_per_axis(C_AXIS, false);
#endif
// If an endstop was not hit, then damage can occur if homing is continued. // If an endstop was not hit, then damage can occur if homing is continued.
// This can occur if the delta height not set correctly. // This can occur if the delta height not set correctly.
if (!(Endstops::endstop_hit_bits & (_BV(X_MAX) | _BV(Y_MAX) | _BV(Z_MAX)))) { if (!(Endstops::endstop_hit_bits & (_BV(X_MAX) | _BV(Y_MAX) | _BV(Z_MAX)))) {
LCD_MESSAGEPGM(MSG_ERR_HOMING_FAILED); LCD_MESSAGEPGM(MSG_ERR_HOMING_FAILED);
SERIAL_ERROR_START(); SERIAL_ERROR_START();
SERIAL_ERRORLNPGM(MSG_ERR_HOMING_FAILED); SERIAL_ERRORLNPGM(MSG_ERR_HOMING_FAILED);
#if ENABLED(SENSORLESS_HOMING)
delta_sensorless_homing(false);
#endif
return false; return false;
} }
@ -278,6 +280,11 @@ bool home_delta() {
HOMEAXIS(B); HOMEAXIS(B);
HOMEAXIS(C); HOMEAXIS(C);
// Re-enable stealthChop if used. Disable diag1 pin on driver.
#if ENABLED(SENSORLESS_HOMING)
delta_sensorless_homing(false);
#endif
// Set all carriages to their home positions // Set all carriages to their home positions
// Do this here all at once for Delta, because // Do this here all at once for Delta, because
// XYZ isn't ABC. Applying this per-tower would // XYZ isn't ABC. Applying this per-tower would