Option for extra endstop check (#18424)
This commit is contained in:
parent
4457b9d5d2
commit
2c238e4fc2
5 changed files with 29 additions and 11 deletions
|
@ -719,6 +719,9 @@
|
|||
*/
|
||||
//#define ENDSTOP_NOISE_THRESHOLD 2
|
||||
|
||||
// Check for stuck or disconnected endstops during homing moves.
|
||||
//#define DETECT_BROKEN_ENDSTOP
|
||||
|
||||
//=============================================================================
|
||||
//============================== Movement Settings ============================
|
||||
//=============================================================================
|
||||
|
|
|
@ -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:");
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ opt_set NUM_SERVOS 1
|
|||
opt_enable ZONESTAR_LCD Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE BOOT_MARLIN_LOGO_ANIMATED \
|
||||
AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL \
|
||||
NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET JOYSTICK \
|
||||
PRUSA_MMU2 MMU2_MENUS PRUSA_MMU2_S_MODE DIRECT_STEPPING \
|
||||
PRUSA_MMU2 MMU2_MENUS PRUSA_MMU2_S_MODE DIRECT_STEPPING DETECT_BROKEN_ENDSTOP \
|
||||
FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE Z_SAFE_HOMING
|
||||
exec_test $1 $2 "RAMPS | ZONESTAR + Chinese | MMU2 | Servo | 3-Point + Debug | G38 ..."
|
||||
|
||||
|
|
Reference in a new issue