|
|
|
@ -742,7 +742,8 @@ void Endstops::update() {
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
// Now, we must signal, after validation, if an endstop limit is pressed or not
|
|
|
|
|
// Signal, after validation, if an endstop limit is pressed or not
|
|
|
|
|
|
|
|
|
|
if (stepper.axis_is_moving(X_AXIS)) {
|
|
|
|
|
if (stepper.motor_direction(X_AXIS_HEAD)) { // -direction
|
|
|
|
|
#if HAS_X_MIN || (X_SPI_SENSORLESS && X_HOME_DIR < 0)
|
|
|
|
@ -804,19 +805,37 @@ void Endstops::update() {
|
|
|
|
|
bool Endstops::tmc_spi_homing_check() {
|
|
|
|
|
bool hit = false;
|
|
|
|
|
#if X_SPI_SENSORLESS
|
|
|
|
|
if (tmc_spi_homing.x && stepperX.test_stall_status()) {
|
|
|
|
|
if (tmc_spi_homing.x && (stepperX.test_stall_status()
|
|
|
|
|
#if CORE_IS_XY && Y_SPI_SENSORLESS
|
|
|
|
|
|| stepperY.test_stall_status()
|
|
|
|
|
#elif CORE_IS_XZ && Z_SPI_SENSORLESS
|
|
|
|
|
|| stepperZ.test_stall_status()
|
|
|
|
|
#endif
|
|
|
|
|
)) {
|
|
|
|
|
SBI(live_state, X_STOP);
|
|
|
|
|
hit = true;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#if Y_SPI_SENSORLESS
|
|
|
|
|
if (tmc_spi_homing.y && stepperY.test_stall_status()) {
|
|
|
|
|
if (tmc_spi_homing.y && (stepperY.test_stall_status()
|
|
|
|
|
#if CORE_IS_XY && X_SPI_SENSORLESS
|
|
|
|
|
|| stepperX.test_stall_status()
|
|
|
|
|
#elif CORE_IS_YZ && Z_SPI_SENSORLESS
|
|
|
|
|
|| stepperZ.test_stall_status()
|
|
|
|
|
#endif
|
|
|
|
|
)) {
|
|
|
|
|
SBI(live_state, Y_STOP);
|
|
|
|
|
hit = true;
|
|
|
|
|
}
|
|
|
|
|
#endif
|
|
|
|
|
#if Z_SPI_SENSORLESS
|
|
|
|
|
if (tmc_spi_homing.z && stepperZ.test_stall_status()) {
|
|
|
|
|
if (tmc_spi_homing.z && (stepperZ.test_stall_status()
|
|
|
|
|
#if CORE_IS_XZ && X_SPI_SENSORLESS
|
|
|
|
|
|| stepperX.test_stall_status()
|
|
|
|
|
#elif CORE_IS_YZ && Y_SPI_SENSORLESS
|
|
|
|
|
|| stepperY.test_stall_status()
|
|
|
|
|
#endif
|
|
|
|
|
)) {
|
|
|
|
|
SBI(live_state, Z_STOP);
|
|
|
|
|
hit = true;
|
|
|
|
|
}
|
|
|
|
|