Selaa lähdekoodia

Poll all endstops, even when stationary (#11123)

Scott Lahteine 7 vuotta sitten
vanhempi
commit
053438a3aa
No account linked to committer's email address
2 muutettua tiedostoa jossa 80 lisäystä ja 93 poistoa
  1. 2
    0
      Marlin/src/inc/SanityCheck.h
  2. 78
    93
      Marlin/src/module/endstops.cpp

+ 2
- 0
Marlin/src/inc/SanityCheck.h Näytä tiedosto

@@ -1528,6 +1528,8 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE && Y_MAX_LENGTH >= Y_BED_SIZE,
1528 1528
       #error "SENSORLESS_HOMING requires Y_MIN_ENDSTOP_INVERTING when homing to Y_MIN."
1529 1529
     #elif Y_HOME_DIR ==  1 && DISABLED(Y_MAX_ENDSTOP_INVERTING)
1530 1530
       #error "SENSORLESS_HOMING requires Y_MAX_ENDSTOP_INVERTING when homing to Y_MAX."
1531
+    #elif ENABLED(ENDSTOP_NOISE_FILTER)
1532
+      #error "SENSORLESS_HOMING is incompatible with ENDSTOP_NOISE_FILTER."
1531 1533
     #endif
1532 1534
   #endif
1533 1535
 

+ 78
- 93
Marlin/src/module/endstops.cpp Näytä tiedosto

@@ -429,109 +429,94 @@ void Endstops::update() {
429 429
   #endif
430 430
 
431 431
   /**
432
-   * Check and update endstops according to conditions
432
+   * Check and update endstops
433 433
    */
434
-  if (stepper.axis_is_moving(X_AXIS)) {
435
-    if (stepper.motor_direction(X_AXIS_HEAD)) { // -direction
436
-      #if HAS_X_MIN
437
-        #if ENABLED(X_DUAL_ENDSTOPS) && X_HOME_DIR < 0
438
-          UPDATE_ENDSTOP_BIT(X, MIN);
439
-          #if HAS_X2_MIN
440
-            UPDATE_ENDSTOP_BIT(X2, MIN);
441
-          #else
442
-            COPY_LIVE_STATE(X_MIN, X2_MIN);
443
-          #endif
444
-        #else
445
-          if (X_MIN_TEST) UPDATE_ENDSTOP_BIT(X, MIN);
446
-        #endif
447
-      #endif
448
-    }
449
-    else { // +direction
450
-      #if HAS_X_MAX
451
-        #if ENABLED(X_DUAL_ENDSTOPS) && X_HOME_DIR > 0
452
-          UPDATE_ENDSTOP_BIT(X, MAX);
453
-          #if HAS_X2_MAX
454
-            UPDATE_ENDSTOP_BIT(X2, MAX);
455
-          #else
456
-            COPY_LIVE_STATE(X_MAX, X2_MAX);
457
-          #endif
458
-        #else
459
-          if (X_MAX_TEST) UPDATE_ENDSTOP_BIT(X, MAX);
460
-        #endif
434
+  #if HAS_X_MIN
435
+    #if ENABLED(X_DUAL_ENDSTOPS) && X_HOME_DIR < 0
436
+      UPDATE_ENDSTOP_BIT(X, MIN);
437
+      #if HAS_X2_MIN
438
+        UPDATE_ENDSTOP_BIT(X2, MIN);
439
+      #else
440
+        COPY_LIVE_STATE(X_MIN, X2_MIN);
461 441
       #endif
462
-    }
463
-  }
442
+    #else
443
+      UPDATE_ENDSTOP_BIT(X, MIN);
444
+    #endif
445
+  #endif
464 446
 
465
-  if (stepper.axis_is_moving(Y_AXIS)) {
466
-    if (stepper.motor_direction(Y_AXIS_HEAD)) { // -direction
467
-      #if HAS_Y_MIN && Y_HOME_DIR < 0
468
-        #if ENABLED(Y_DUAL_ENDSTOPS)
469
-          UPDATE_ENDSTOP_BIT(Y, MIN);
470
-          #if HAS_Y2_MIN
471
-            UPDATE_ENDSTOP_BIT(Y2, MIN);
472
-          #else
473
-            COPY_LIVE_STATE(Y_MIN, Y2_MIN);
474
-          #endif
475
-        #else
476
-          UPDATE_ENDSTOP_BIT(Y, MIN);
477
-        #endif
447
+  #if HAS_X_MAX
448
+    #if ENABLED(X_DUAL_ENDSTOPS) && X_HOME_DIR > 0
449
+      UPDATE_ENDSTOP_BIT(X, MAX);
450
+      #if HAS_X2_MAX
451
+        UPDATE_ENDSTOP_BIT(X2, MAX);
452
+      #else
453
+        COPY_LIVE_STATE(X_MAX, X2_MAX);
478 454
       #endif
479
-    }
480
-    else { // +direction
481
-      #if HAS_Y_MAX && Y_HOME_DIR > 0
482
-        #if ENABLED(Y_DUAL_ENDSTOPS)
483
-          UPDATE_ENDSTOP_BIT(Y, MAX);
484
-          #if HAS_Y2_MAX
485
-            UPDATE_ENDSTOP_BIT(Y2, MAX);
486
-          #else
487
-            COPY_LIVE_STATE(Y_MAX, Y2_MAX);
488
-          #endif
489
-        #else
490
-          UPDATE_ENDSTOP_BIT(Y, MAX);
491
-        #endif
455
+    #else
456
+      UPDATE_ENDSTOP_BIT(X, MAX);
457
+    #endif
458
+  #endif
459
+
460
+  #if HAS_Y_MIN && Y_HOME_DIR < 0
461
+    #if ENABLED(Y_DUAL_ENDSTOPS)
462
+      UPDATE_ENDSTOP_BIT(Y, MIN);
463
+      #if HAS_Y2_MIN
464
+        UPDATE_ENDSTOP_BIT(Y2, MIN);
465
+      #else
466
+        COPY_LIVE_STATE(Y_MIN, Y2_MIN);
492 467
       #endif
493
-    }
494
-  }
468
+    #else
469
+      UPDATE_ENDSTOP_BIT(Y, MIN);
470
+    #endif
471
+  #endif
495 472
 
496
-  if (stepper.axis_is_moving(Z_AXIS)) {
497
-    if (stepper.motor_direction(Z_AXIS_HEAD)) { // Z -direction. Gantry down, bed up.
498
-      #if HAS_Z_MIN
499
-        #if ENABLED(Z_DUAL_ENDSTOPS) && Z_HOME_DIR < 0
500
-          UPDATE_ENDSTOP_BIT(Z, MIN);
501
-          #if HAS_Z2_MIN
502
-            UPDATE_ENDSTOP_BIT(Z2, MIN);
503
-          #else
504
-            COPY_LIVE_STATE(Z_MIN, Z2_MIN);
505
-          #endif
506
-        #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
507
-          if (z_probe_enabled) UPDATE_ENDSTOP_BIT(Z, MIN);
508
-        #elif Z_HOME_DIR < 0
509
-          UPDATE_ENDSTOP_BIT(Z, MIN);
510
-        #endif
473
+  #if HAS_Y_MAX && Y_HOME_DIR > 0
474
+    #if ENABLED(Y_DUAL_ENDSTOPS)
475
+      UPDATE_ENDSTOP_BIT(Y, MAX);
476
+      #if HAS_Y2_MAX
477
+        UPDATE_ENDSTOP_BIT(Y2, MAX);
478
+      #else
479
+        COPY_LIVE_STATE(Y_MAX, Y2_MAX);
511 480
       #endif
481
+    #else
482
+      UPDATE_ENDSTOP_BIT(Y, MAX);
483
+    #endif
484
+  #endif
512 485
 
513
-      // When closing the gap check the enabled probe
514
-      #if ENABLED(Z_MIN_PROBE_ENDSTOP)
515
-        if (z_probe_enabled) UPDATE_ENDSTOP_BIT(Z, MIN_PROBE);
486
+  #if HAS_Z_MIN
487
+    #if ENABLED(Z_DUAL_ENDSTOPS) && Z_HOME_DIR < 0
488
+      UPDATE_ENDSTOP_BIT(Z, MIN);
489
+      #if HAS_Z2_MIN
490
+        UPDATE_ENDSTOP_BIT(Z2, MIN);
491
+      #else
492
+        COPY_LIVE_STATE(Z_MIN, Z2_MIN);
516 493
       #endif
517
-    }
518
-    else { // Z +direction. Gantry up, bed down.
519
-      #if HAS_Z_MAX && Z_HOME_DIR > 0
520
-        // Check both Z dual endstops
521
-        #if ENABLED(Z_DUAL_ENDSTOPS)
522
-          UPDATE_ENDSTOP_BIT(Z, MAX);
523
-          #if HAS_Z2_MAX
524
-            UPDATE_ENDSTOP_BIT(Z2, MAX);
525
-          #else
526
-            COPY_LIVE_STATE(Z_MAX, Z2_MAX);
527
-          #endif
528
-        #elif DISABLED(Z_MIN_PROBE_ENDSTOP) || Z_MAX_PIN != Z_MIN_PROBE_PIN
529
-          // If this pin isn't the bed probe it's the Z endstop
530
-          UPDATE_ENDSTOP_BIT(Z, MAX);
531
-        #endif
494
+    #elif ENABLED(Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN)
495
+      UPDATE_ENDSTOP_BIT(Z, MIN);
496
+    #elif Z_HOME_DIR < 0
497
+      UPDATE_ENDSTOP_BIT(Z, MIN);
498
+    #endif
499
+  #endif
500
+
501
+  // When closing the gap check the enabled probe
502
+  #if ENABLED(Z_MIN_PROBE_ENDSTOP)
503
+    UPDATE_ENDSTOP_BIT(Z, MIN_PROBE);
504
+  #endif
505
+
506
+  #if HAS_Z_MAX && Z_HOME_DIR > 0
507
+    // Check both Z dual endstops
508
+    #if ENABLED(Z_DUAL_ENDSTOPS)
509
+      UPDATE_ENDSTOP_BIT(Z, MAX);
510
+      #if HAS_Z2_MAX
511
+        UPDATE_ENDSTOP_BIT(Z2, MAX);
512
+      #else
513
+        COPY_LIVE_STATE(Z_MAX, Z2_MAX);
532 514
       #endif
533
-    }
534
-  }
515
+    #elif DISABLED(Z_MIN_PROBE_ENDSTOP) || Z_MAX_PIN != Z_MIN_PROBE_PIN
516
+      // If this pin isn't the bed probe it's the Z endstop
517
+      UPDATE_ENDSTOP_BIT(Z, MAX);
518
+    #endif
519
+  #endif
535 520
 
536 521
   #if ENABLED(ENDSTOP_NOISE_FILTER)
537 522
     /**

Loading…
Peruuta
Tallenna