Преглед на файлове

Option for extra endstop check (#18424)

Speaka преди 3 години
родител
ревизия
2c238e4fc2
No account linked to committer's email address
променени са 5 файла, в които са добавени 29 реда и са изтрити 11 реда
  1. 3
    0
      Marlin/Configuration.h
  2. 6
    10
      Marlin/src/module/endstops.cpp
  3. 4
    0
      Marlin/src/module/endstops.h
  4. 15
    0
      Marlin/src/module/motion.cpp
  5. 1
    1
      buildroot/tests/mega2560-tests

+ 3
- 0
Marlin/Configuration.h Целия файл

719
  */
719
  */
720
 //#define ENDSTOP_NOISE_THRESHOLD 2
720
 //#define ENDSTOP_NOISE_THRESHOLD 2
721
 
721
 
722
+// Check for stuck or disconnected endstops during homing moves.
723
+//#define DETECT_BROKEN_ENDSTOP
724
+
722
 //=============================================================================
725
 //=============================================================================
723
 //============================== Movement Settings ============================
726
 //============================== Movement Settings ============================
724
 //=============================================================================
727
 //=============================================================================

+ 6
- 10
Marlin/src/module/endstops.cpp Целия файл

861
 
861
 
862
 #if ENABLED(SPI_ENDSTOPS)
862
 #if ENABLED(SPI_ENDSTOPS)
863
 
863
 
864
-  #define X_STOP (X_HOME_DIR < 0 ? X_MIN : X_MAX)
865
-  #define Y_STOP (Y_HOME_DIR < 0 ? Y_MIN : Y_MAX)
866
-  #define Z_STOP (Z_HOME_DIR < 0 ? Z_MIN : Z_MAX)
867
-
868
   bool Endstops::tmc_spi_homing_check() {
864
   bool Endstops::tmc_spi_homing_check() {
869
     bool hit = false;
865
     bool hit = false;
870
     #if X_SPI_SENSORLESS
866
     #if X_SPI_SENSORLESS
875
           || stepperZ.test_stall_status()
871
           || stepperZ.test_stall_status()
876
         #endif
872
         #endif
877
       )) {
873
       )) {
878
-        SBI(live_state, X_STOP);
874
+        SBI(live_state, X_ENDSTOP);
879
         hit = true;
875
         hit = true;
880
       }
876
       }
881
     #endif
877
     #endif
887
           || stepperZ.test_stall_status()
883
           || stepperZ.test_stall_status()
888
         #endif
884
         #endif
889
       )) {
885
       )) {
890
-        SBI(live_state, Y_STOP);
886
+        SBI(live_state, Y_ENDSTOP);
891
         hit = true;
887
         hit = true;
892
       }
888
       }
893
     #endif
889
     #endif
899
           || stepperY.test_stall_status()
895
           || stepperY.test_stall_status()
900
         #endif
896
         #endif
901
       )) {
897
       )) {
902
-        SBI(live_state, Z_STOP);
898
+        SBI(live_state, Z_ENDSTOP);
903
         hit = true;
899
         hit = true;
904
       }
900
       }
905
     #endif
901
     #endif
907
   }
903
   }
908
 
904
 
909
   void Endstops::clear_endstop_state() {
905
   void Endstops::clear_endstop_state() {
910
-    TERN_(X_SPI_SENSORLESS, CBI(live_state, X_STOP));
911
-    TERN_(Y_SPI_SENSORLESS, CBI(live_state, Y_STOP));
912
-    TERN_(Z_SPI_SENSORLESS, CBI(live_state, Z_STOP));
906
+    TERN_(X_SPI_SENSORLESS, CBI(live_state, X_ENDSTOP));
907
+    TERN_(Y_SPI_SENSORLESS, CBI(live_state, Y_ENDSTOP));
908
+    TERN_(Z_SPI_SENSORLESS, CBI(live_state, Z_ENDSTOP));
913
   }
909
   }
914
 
910
 
915
 #endif // SPI_ENDSTOPS
911
 #endif // SPI_ENDSTOPS

+ 4
- 0
Marlin/src/module/endstops.h Целия файл

38
   Z4_MIN, Z4_MAX
38
   Z4_MIN, Z4_MAX
39
 };
39
 };
40
 
40
 
41
+#define X_ENDSTOP (X_HOME_DIR < 0 ? X_MIN : X_MAX)
42
+#define Y_ENDSTOP (Y_HOME_DIR < 0 ? Y_MIN : Y_MAX)
43
+#define Z_ENDSTOP (Z_HOME_DIR < 0 ? TERN(HOMING_Z_WITH_PROBE, Z_MIN, Z_MIN_PROBE) : Z_MAX)
44
+
41
 class Endstops {
45
 class Endstops {
42
   public:
46
   public:
43
     #if HAS_EXTRA_ENDSTOPS
47
     #if HAS_EXTRA_ENDSTOPS

+ 15
- 0
Marlin/src/module/motion.cpp Целия файл

1606
       #endif
1606
       #endif
1607
     );
1607
     );
1608
 
1608
 
1609
+    #if ENABLED(DETECT_BROKEN_ENDSTOP)
1610
+      // Check for a broken endstop
1611
+      EndstopEnum es;
1612
+      switch (axis) {
1613
+        default:
1614
+        case X_AXIS: es = X_ENDSTOP; break;
1615
+        case Y_AXIS: es = Y_ENDSTOP; break;
1616
+        case Z_AXIS: es = Z_ENDSTOP; break;
1617
+      }
1618
+      if (TEST(endstops.state(), es)) {
1619
+        SERIAL_ECHO_MSG("Bad ", axis_codes[axis], " Endstop?");
1620
+        kill(GET_TEXT(MSG_KILL_HOMING_FAILED));
1621
+      }
1622
+    #endif
1623
+
1609
     // Slow move towards endstop until triggered
1624
     // Slow move towards endstop until triggered
1610
     if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Home 2 Slow:");
1625
     if (DEBUGGING(LEVELING)) DEBUG_ECHOLNPGM("Home 2 Slow:");
1611
 
1626
 

+ 1
- 1
buildroot/tests/mega2560-tests Целия файл

71
 opt_enable ZONESTAR_LCD Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE BOOT_MARLIN_LOGO_ANIMATED \
71
 opt_enable ZONESTAR_LCD Z_PROBE_SERVO_NR Z_SERVO_ANGLES DEACTIVATE_SERVOS_AFTER_MOVE BOOT_MARLIN_LOGO_ANIMATED \
72
            AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL \
72
            AUTO_BED_LEVELING_3POINT DEBUG_LEVELING_FEATURE EEPROM_SETTINGS EEPROM_CHITCHAT M114_DETAIL \
73
            NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET JOYSTICK \
73
            NO_VOLUMETRICS EXTENDED_CAPABILITIES_REPORT AUTO_REPORT_TEMPERATURES AUTOTEMP G38_PROBE_TARGET JOYSTICK \
74
-           PRUSA_MMU2 MMU2_MENUS PRUSA_MMU2_S_MODE DIRECT_STEPPING \
74
+           PRUSA_MMU2 MMU2_MENUS PRUSA_MMU2_S_MODE DIRECT_STEPPING DETECT_BROKEN_ENDSTOP \
75
            FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE Z_SAFE_HOMING
75
            FILAMENT_RUNOUT_SENSOR NOZZLE_PARK_FEATURE ADVANCED_PAUSE_FEATURE Z_SAFE_HOMING
76
 exec_test $1 $2 "RAMPS | ZONESTAR + Chinese | MMU2 | Servo | 3-Point + Debug | G38 ..."
76
 exec_test $1 $2 "RAMPS | ZONESTAR + Chinese | MMU2 | Servo | 3-Point + Debug | G38 ..."
77
 
77
 

Loading…
Отказ
Запис