Bläddra i källkod

🐛 Fix Z_MULTI_ENDSTOPS + NUM_Z_STEPPER_DRIVERS 4 compile (#22203)

ellensp 2 år sedan
förälder
incheckning
d882a16b80
Inget konto är kopplat till bidragsgivarens mejladress
3 ändrade filer med 28 tillägg och 37 borttagningar
  1. 10
    12
      Marlin/src/gcode/calibrate/M666.cpp
  2. 12
    20
      Marlin/src/module/stepper.cpp
  3. 6
    5
      buildroot/tests/BIGTREE_GTR_V1_0

+ 10
- 12
Marlin/src/gcode/calibrate/M666.cpp Visa fil

@@ -71,29 +71,27 @@
71 71
     #endif
72 72
     #if ENABLED(Z_MULTI_ENDSTOPS)
73 73
       if (parser.seenval('Z')) {
74
-        #if NUM_Z_STEPPER_DRIVERS >= 3
75
-          const float z_adj = parser.value_linear_units();
76
-          const int ind = parser.intval('S');
77
-          if (!ind || ind == 2) endstops.z2_endstop_adj = z_adj;
78
-          if (!ind || ind == 3) endstops.z3_endstop_adj = z_adj;
79
-          #if NUM_Z_STEPPER_DRIVERS >= 4
80
-            if (!ind || ind == 4) endstops.z4_endstop_adj = z_adj;
81
-          #endif
74
+        const float z_adj = parser.value_linear_units();
75
+        #if NUM_Z_STEPPER_DRIVERS == 2
76
+          endstops.z2_endstop_adj = z_adj;
82 77
         #else
83
-          endstops.z2_endstop_adj = parser.value_linear_units();
78
+          const int ind = parser.intval('S');
79
+          #define _SET_ZADJ(N) if (!ind || ind == N) endstops.z##N##_endstop_adj = z_adj;
80
+          REPEAT_S(2, INCREMENT(NUM_Z_STEPPER_DRIVERS), _SET_ZADJ)
84 81
         #endif
85 82
       }
86 83
     #endif
87 84
     if (!parser.seen("XYZ")) {
85
+      auto echo_adj = [](PGM_P const label, const_float_t value) { SERIAL_ECHOPAIR_P(label, value); };
88 86
       SERIAL_ECHOPGM("Dual Endstop Adjustment (mm): ");
89 87
       #if ENABLED(X_DUAL_ENDSTOPS)
90
-        SERIAL_ECHOPAIR(" X2:", endstops.x2_endstop_adj);
88
+        echo_adj(PSTR(" X2:"), endstops.x2_endstop_adj);
91 89
       #endif
92 90
       #if ENABLED(Y_DUAL_ENDSTOPS)
93
-        SERIAL_ECHOPAIR(" Y2:", endstops.y2_endstop_adj);
91
+        echo_adj(PSTR(" Y2:"), endstops.y2_endstop_adj);
94 92
       #endif
95 93
       #if ENABLED(Z_MULTI_ENDSTOPS)
96
-        #define _ECHO_ZADJ(N) SERIAL_ECHOPAIR(" Z" STRINGIFY(N) ":", endstops.z##N##_endstop_adj);
94
+        #define _ECHO_ZADJ(N) echo_adj(PSTR(" Z" STRINGIFY(N) ":"), endstops.z##N##_endstop_adj);
97 95
         REPEAT_S(2, INCREMENT(NUM_Z_STEPPER_DRIVERS), _ECHO_ZADJ)
98 96
       #endif
99 97
       SERIAL_EOL();

+ 12
- 20
Marlin/src/module/stepper.cpp Visa fil

@@ -314,26 +314,18 @@ xyze_int8_t Stepper::count_direction{0};
314 314
     A##3_STEP_WRITE(V);                           \
315 315
   }
316 316
 
317
-#define QUAD_ENDSTOP_APPLY_STEP(A,V)                                                                                        \
318
-  if (separate_multi_axis) {                                                                                                \
319
-    if (ENABLED(A##_HOME_TO_MIN)) {                                                                                         \
320
-      if (!(TEST(endstops.state(), A##_MIN) && count_direction[_AXIS(A)] < 0) && !locked_##A##_motor) A##_STEP_WRITE(V);    \
321
-      if (!(TEST(endstops.state(), A##2_MIN) && count_direction[_AXIS(A)] < 0) && !locked_##A##2_motor) A##2_STEP_WRITE(V); \
322
-      if (!(TEST(endstops.state(), A##3_MIN) && count_direction[_AXIS(A)] < 0) && !locked_##A##3_motor) A##3_STEP_WRITE(V); \
323
-      if (!(TEST(endstops.state(), A##4_MIN) && count_direction[_AXIS(A)] < 0) && !locked_##A##4_motor) A##4_STEP_WRITE(V); \
324
-    }                                                                                                                       \
325
-    else {                                                                                                                  \
326
-      if (!(TEST(endstops.state(), A##_MAX) && count_direction[_AXIS(A)] > 0) && !locked_##A##_motor) A##_STEP_WRITE(V);    \
327
-      if (!(TEST(endstops.state(), A##2_MAX) && count_direction[_AXIS(A)] > 0) && !locked_##A##2_motor) A##2_STEP_WRITE(V); \
328
-      if (!(TEST(endstops.state(), A##3_MAX) && count_direction[_AXIS(A)] > 0) && !locked_##A##3_motor) A##3_STEP_WRITE(V); \
329
-      if (!(TEST(endstops.state(), A##4_MAX) && count_direction[_AXIS(A)] > 0) && !locked_##A##4_motor) A##4_STEP_WRITE(V); \
330
-    }                                                                                                                       \
331
-  }                                                                                                                         \
332
-  else {                                                                                                                    \
333
-    A##_STEP_WRITE(V);                                                                                                      \
334
-    A##2_STEP_WRITE(V);                                                                                                     \
335
-    A##3_STEP_WRITE(V);                                                                                                     \
336
-    A##4_STEP_WRITE(V);                                                                                                     \
317
+#define QUAD_ENDSTOP_APPLY_STEP(A,V) \
318
+  if (separate_multi_axis) {         \
319
+    if (!(TEST(endstops.state(), (TERN(A##_HOME_TO_MIN, A##_MIN,  A##_MAX)))  && count_direction[_AXIS(A)] < 0) && !locked_##A##_motor)  A##_STEP_WRITE(V);  \
320
+    if (!(TEST(endstops.state(), (TERN(A##_HOME_TO_MIN, A##2_MIN, A##2_MAX))) && count_direction[_AXIS(A)] < 0) && !locked_##A##2_motor) A##2_STEP_WRITE(V); \
321
+    if (!(TEST(endstops.state(), (TERN(A##_HOME_TO_MIN, A##3_MIN, A##3_MAX))) && count_direction[_AXIS(A)] < 0) && !locked_##A##3_motor) A##3_STEP_WRITE(V); \
322
+    if (!(TEST(endstops.state(), (TERN(A##_HOME_TO_MIN, A##4_MIN, A##4_MAX))) && count_direction[_AXIS(A)] < 0) && !locked_##A##4_motor) A##4_STEP_WRITE(V); \
323
+  }       \
324
+  else {  \
325
+    A##_STEP_WRITE(V);  \
326
+    A##2_STEP_WRITE(V); \
327
+    A##3_STEP_WRITE(V); \
328
+    A##4_STEP_WRITE(V); \
337 329
   }
338 330
 
339 331
 #define QUAD_SEPARATE_APPLY_STEP(A,V)             \

+ 6
- 5
buildroot/tests/BIGTREE_GTR_V1_0 Visa fil

@@ -20,11 +20,12 @@ exec_test $1 $2 "BigTreeTech GTR | 8 Extruders | Auto-Fan | Mixed TMC Drivers |
20 20
 
21 21
 restore_configs
22 22
 opt_set MOTHERBOARD BOARD_BTT_GTR_V1_0 SERIAL_PORT -1 \
23
-        EXTRUDERS 6 TEMP_SENSOR_1 1 TEMP_SENSOR_2 1 TEMP_SENSOR_3 1 TEMP_SENSOR_4 1 TEMP_SENSOR_5 1 \
24
-        NUM_Z_STEPPER_DRIVERS 3 \
25
-        DEFAULT_Kp_LIST '{ 22.2, 20.0, 21.0, 19.0, 18.0, 17.0 }' DEFAULT_Ki_LIST '{ 1.08 }' DEFAULT_Kd_LIST '{ 114.0, 112.0, 110.0, 108.0 }'
26
-opt_enable TOOLCHANGE_FILAMENT_SWAP TOOLCHANGE_MIGRATION_FEATURE TOOLCHANGE_FS_INIT_BEFORE_SWAP TOOLCHANGE_FS_PRIME_FIRST_USED PID_PARAMS_PER_HOTEND
27
-exec_test $1 $2 "BigTreeTech GTR | 6 Extruders | Triple Z" "$3"
23
+        EXTRUDERS 5 TEMP_SENSOR_1 1 TEMP_SENSOR_2 1 TEMP_SENSOR_3 1 TEMP_SENSOR_4 1 \
24
+        NUM_Z_STEPPER_DRIVERS 4 \
25
+        DEFAULT_Kp_LIST '{ 22.2, 20.0, 21.0, 19.0, 18.0 }' DEFAULT_Ki_LIST '{ 1.08 }' DEFAULT_Kd_LIST '{ 114.0, 112.0, 110.0, 108.0 }'
26
+opt_enable TOOLCHANGE_FILAMENT_SWAP TOOLCHANGE_MIGRATION_FEATURE TOOLCHANGE_FS_INIT_BEFORE_SWAP TOOLCHANGE_FS_PRIME_FIRST_USED \
27
+           PID_PARAMS_PER_HOTEND Z_MULTI_ENDSTOPS
28
+exec_test $1 $2 "BigTreeTech GTR | 6 Extruders | Quad Z + Endstops" "$3"
28 29
 
29 30
 restore_configs
30 31
 opt_set MOTHERBOARD BOARD_BTT_GTR_V1_0 SERIAL_PORT -1 \

Laddar…
Avbryt
Spara