Procházet zdrojové kódy

Patch M425 for CAN_CALIBRATE

Fixes #17430
Scott Lahteine před 4 roky
rodič
revize
3a42b6c5c6

+ 1
- 2
Marlin/src/gcode/calibrate/G425.cpp Zobrazit soubor

@@ -51,7 +51,6 @@
51 51
   #undef CALIBRATION_MEASURE_AT_TOP_EDGES
52 52
 #endif
53 53
 
54
-
55 54
 /**
56 55
  * G425 backs away from the calibration object by various distances
57 56
  * depending on the confidence level:
@@ -256,7 +255,7 @@ inline void probe_side(measurements_t &m, const float uncertainty, const side_t
256 255
     #endif
257 256
   }
258 257
 
259
-  if (AXIS_CAN_CALIBRATE(X) && axis == X_AXIS || AXIS_CAN_CALIBRATE(Y) && axis == Y_AXIS) {
258
+  if ((AXIS_CAN_CALIBRATE(X) && axis == X_AXIS) || (AXIS_CAN_CALIBRATE(Y) && axis == Y_AXIS)) {
260 259
     // Move to safe distance to the side of the calibration object
261 260
     current_position[axis] = m.obj_center[axis] + (-dir) * (dimensions[axis] / 2 + m.nozzle_outer_dimension[axis] / 2 + uncertainty);
262 261
     calibration_move();

+ 12
- 3
Marlin/src/gcode/calibrate/M425.cpp Zobrazit soubor

@@ -46,8 +46,17 @@
46 46
 void GcodeSuite::M425() {
47 47
   bool noArgs = true;
48 48
 
49
+  auto axis_can_calibrate = [](const uint8_t a) {
50
+    switch (a) {
51
+      default:
52
+      case X_AXIS: return AXIS_CAN_CALIBRATE(X);
53
+      case Y_AXIS: return AXIS_CAN_CALIBRATE(Y);
54
+      case Z_AXIS: return AXIS_CAN_CALIBRATE(Z);
55
+    }
56
+  };
57
+
49 58
   LOOP_XYZ(a) {
50
-    if (CAN_CALIBRATE(a) && parser.seen(XYZ_CHAR(a))) {
59
+    if (AXIS_CAN_CALIBRATE(a) && parser.seen(XYZ_CHAR(a))) {
51 60
       planner.synchronize();
52 61
       backlash.distance_mm[a] = parser.has_value() ? parser.value_linear_units() : backlash.get_measurement(AxisEnum(a));
53 62
       noArgs = false;
@@ -74,7 +83,7 @@ void GcodeSuite::M425() {
74 83
     SERIAL_ECHOLNPGM("active:");
75 84
     SERIAL_ECHOLNPAIR("  Correction Amount/Fade-out:     F", backlash.get_correction(), " (F1.0 = full, F0.0 = none)");
76 85
     SERIAL_ECHOPGM("  Backlash Distance (mm):        ");
77
-    LOOP_XYZ(a) if (CAN_CALIBRATE(a)) {
86
+    LOOP_XYZ(a) if (axis_can_calibrate(a)) {
78 87
       SERIAL_CHAR(' ', XYZ_CHAR(a));
79 88
       SERIAL_ECHO(backlash.distance_mm[a]);
80 89
       SERIAL_EOL();
@@ -87,7 +96,7 @@ void GcodeSuite::M425() {
87 96
     #if ENABLED(MEASURE_BACKLASH_WHEN_PROBING)
88 97
       SERIAL_ECHOPGM("  Average measured backlash (mm):");
89 98
       if (backlash.has_any_measurement()) {
90
-        LOOP_XYZ(a) if (CAN_CALIBRATE(a) && backlash.has_measurement(AxisEnum(a))) {
99
+        LOOP_XYZ(a) if (axis_can_calibrate(a) && backlash.has_measurement(AxisEnum(a))) {
91 100
           SERIAL_CHAR(' ', XYZ_CHAR(a));
92 101
           SERIAL_ECHO(backlash.get_measurement(AxisEnum(a)));
93 102
         }

+ 1
- 1
Marlin/src/inc/Conditionals_post.h Zobrazit soubor

@@ -147,7 +147,7 @@
147 147
     #define Z_AXIS_INDEX 2
148 148
     #define CAN_CALIBRATE(A,B) (A##_AXIS_INDEX == B##_INDEX)
149 149
   #else
150
-    #define CAN_CALIBRATE(...) 1
150
+    #define CAN_CALIBRATE(A,B) 1
151 151
   #endif
152 152
 #endif
153 153
 #define AXIS_CAN_CALIBRATE(A) CAN_CALIBRATE(A,NORMAL_AXIS)

Loading…
Zrušit
Uložit