Option for extra endstop check (#18424)
This commit is contained in:
@ -861,10 +861,6 @@ void Endstops::update() {
|
||||
|
||||
#if ENABLED(SPI_ENDSTOPS)
|
||||
|
||||
#define X_STOP (X_HOME_DIR < 0 ? X_MIN : X_MAX)
|
||||
#define Y_STOP (Y_HOME_DIR < 0 ? Y_MIN : Y_MAX)
|
||||
#define Z_STOP (Z_HOME_DIR < 0 ? Z_MIN : Z_MAX)
|
||||
|
||||
bool Endstops::tmc_spi_homing_check() {
|
||||
bool hit = false;
|
||||
#if X_SPI_SENSORLESS
|
||||
@ -875,7 +871,7 @@ void Endstops::update() {
|
||||
|| stepperZ.test_stall_status()
|
||||
#endif
|
||||
)) {
|
||||
SBI(live_state, X_STOP);
|
||||
SBI(live_state, X_ENDSTOP);
|
||||
hit = true;
|
||||
}
|
||||
#endif
|
||||
@ -887,7 +883,7 @@ void Endstops::update() {
|
||||
|| stepperZ.test_stall_status()
|
||||
#endif
|
||||
)) {
|
||||
SBI(live_state, Y_STOP);
|
||||
SBI(live_state, Y_ENDSTOP);
|
||||
hit = true;
|
||||
}
|
||||
#endif
|
||||
@ -899,7 +895,7 @@ void Endstops::update() {
|
||||
|| stepperY.test_stall_status()
|
||||
#endif
|
||||
)) {
|
||||
SBI(live_state, Z_STOP);
|
||||
SBI(live_state, Z_ENDSTOP);
|
||||
hit = true;
|
||||
}
|
||||
#endif
|
||||
@ -907,9 +903,9 @@ void Endstops::update() {
|
||||
}
|
||||
|
||||
void Endstops::clear_endstop_state() {
|
||||
TERN_(X_SPI_SENSORLESS, CBI(live_state, X_STOP));
|
||||
TERN_(Y_SPI_SENSORLESS, CBI(live_state, Y_STOP));
|
||||
TERN_(Z_SPI_SENSORLESS, CBI(live_state, Z_STOP));
|
||||
TERN_(X_SPI_SENSORLESS, CBI(live_state, X_ENDSTOP));
|
||||
TERN_(Y_SPI_SENSORLESS, CBI(live_state, Y_ENDSTOP));
|
||||
TERN_(Z_SPI_SENSORLESS, CBI(live_state, Z_ENDSTOP));
|
||||
}
|
||||
|
||||
#endif // SPI_ENDSTOPS
|
||||
|
@ -38,6 +38,10 @@ enum EndstopEnum : char {
|
||||
Z4_MIN, Z4_MAX
|
||||
};
|
||||
|
||||
#define X_ENDSTOP (X_HOME_DIR < 0 ? X_MIN : X_MAX)
|
||||
#define Y_ENDSTOP (Y_HOME_DIR < 0 ? Y_MIN : Y_MAX)
|
||||
#define Z_ENDSTOP (Z_HOME_DIR < 0 ? TERN(HOMING_Z_WITH_PROBE, Z_MIN, Z_MIN_PROBE) : Z_MAX)
|
||||
|
||||
class Endstops {
|
||||
public:
|
||||
#if HAS_EXTRA_ENDSTOPS
|
||||
|
@ -1606,6 +1606,21 @@ void homeaxis(const AxisEnum axis) {
|
||||
#endif
|
||||
);
|
||||
|
||||
#if ENABLED(DETECT_BROKEN_ENDSTOP)
|
||||
// Check for a broken endstop
|
||||
EndstopEnum es;
|
||||
switch (axis) {
|
||||
default:
|
||||
case X_AXIS: es = X_ENDSTOP; break;
|
||||
case Y_AXIS: es = Y_ENDSTOP; break;
|
||||
case Z_AXIS: es = Z_ENDSTOP; break;
|
||||
}
|
||||
if (TEST(endstops.state(), es)) {
|
||||
SERIAL_ECHO_MSG("Bad ", axis_codes[axis], " Endstop?");
|
||||
kill(GET_TEXT(MSG_KILL_HOMING_FAILED));
|
||||
}
|
||||
#endif
|
||||
|
||||
// Slow move towards endstop until triggered
|
||||
if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Home 2 Slow:");
|
||||
|
||||
|
Reference in New Issue
Block a user