Browse Source

Merge pull request #4900 from thinkyhead/rc_g38_changes

Cleanup of G38.2 / G38.3
Scott Lahteine 8 years ago
parent
commit
bad8899ebc

+ 6
- 0
Marlin/Configuration_adv.h View File

@@ -532,6 +532,12 @@
532 532
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
533 533
 //#define BEZIER_CURVE_SUPPORT
534 534
 
535
+// G38.2 and G38.3 Probe Target
536
+//#define G38_PROBE_TARGET
537
+#if ENABLED(G38_PROBE_TARGET)
538
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
539
+#endif
540
+
535 541
 // Moves (or segments) with fewer steps than this will be joined with the next move
536 542
 #define MIN_STEPS_PER_SEGMENT 6
537 543
 

+ 5
- 0
Marlin/Marlin.h View File

@@ -209,6 +209,11 @@ void manage_inactivity(bool ignore_stepper_queue = false);
209 209
 
210 210
 #endif // !MIXING_EXTRUDER
211 211
 
212
+#if ENABLED(G38_PROBE_TARGET)
213
+  extern bool G38_move,        // flag to tell the interrupt handler that a G38 command is being run
214
+              G38_endstop_hit; // flag from the interrupt handler to indicate if the endstop went active
215
+#endif
216
+
212 217
 /**
213 218
  * The axis order in all axis related arrays is X, Y, Z, E
214 219
  */

+ 118
- 2
Marlin/Marlin_main.cpp View File

@@ -117,6 +117,7 @@
117 117
  * G30 - Single Z probe, probes bed at current XY location.
118 118
  * G31 - Dock sled (Z_PROBE_SLED only)
119 119
  * G32 - Undock sled (Z_PROBE_SLED only)
120
+ * G38 - Probe target - similar to G28 except it uses the Z_MIN endstop for all three axes
120 121
  * G90 - Use Absolute Coordinates
121 122
  * G91 - Use Relative Coordinates
122 123
  * G92 - Set current position to coordinates given
@@ -276,6 +277,11 @@
276 277
   TWIBus i2c;
277 278
 #endif
278 279
 
280
+#if ENABLED(G38_PROBE_TARGET)
281
+  bool G38_move = false,
282
+       G38_endstop_hit = false;
283
+#endif
284
+
279 285
 bool Running = true;
280 286
 
281 287
 uint8_t marlin_debug_flags = DEBUG_NONE;
@@ -1337,7 +1343,7 @@ static void set_home_offset(AxisEnum axis, float v) {
1337 1343
  * SCARA should wait until all XY homing is done before setting the XY
1338 1344
  * current_position to home, because neither X nor Y is at home until
1339 1345
  * both are at home. Z can however be homed individually.
1340
- * 
1346
+ *
1341 1347
  */
1342 1348
 static void set_axis_is_at_home(AxisEnum axis) {
1343 1349
   #if ENABLED(DEBUG_LEVELING_FEATURE)
@@ -2325,6 +2331,7 @@ static void clean_up_after_endstop_or_probe_move() {
2325 2331
 
2326 2332
 #endif // AUTO_BED_LEVELING_BILINEAR
2327 2333
 
2334
+
2328 2335
 /**
2329 2336
  * Home an individual linear axis
2330 2337
  */
@@ -4158,6 +4165,94 @@ inline void gcode_G28() {
4158 4165
 
4159 4166
 #endif // HAS_BED_PROBE
4160 4167
 
4168
+#if ENABLED(G38_PROBE_TARGET)
4169
+
4170
+  static bool G38_run_probe() {
4171
+
4172
+    bool G38_pass_fail = false;
4173
+
4174
+    // Get direction of move and retract
4175
+    float retract_mm[XYZ];
4176
+    LOOP_XYZ(i) {
4177
+      float dist = destination[i] - current_position[i];
4178
+      retract_mm[i] = fabs(dist) < G38_MINIMUM_MOVE ? 0 : home_bump_mm(i) * (dist > 0 ? -1 : 1);
4179
+    }
4180
+
4181
+    stepper.synchronize();  // wait until the machine is idle
4182
+
4183
+    // Move until destination reached or target hit
4184
+    endstops.enable(true);
4185
+    G38_move = true;
4186
+    G38_endstop_hit = false;
4187
+    prepare_move_to_destination();
4188
+    stepper.synchronize();
4189
+    G38_move = false;
4190
+
4191
+    endstops.hit_on_purpose();
4192
+    set_current_from_steppers_for_axis(ALL_AXES);
4193
+    SYNC_PLAN_POSITION_KINEMATIC();
4194
+
4195
+    // Only do remaining moves if target was hit
4196
+    if (G38_endstop_hit) {
4197
+
4198
+      G38_pass_fail = true;
4199
+
4200
+      // Move away by the retract distance
4201
+      set_destination_to_current();
4202
+      LOOP_XYZ(i) destination[i] += retract_mm[i];
4203
+      endstops.enable(false);
4204
+      prepare_move_to_destination();
4205
+      stepper.synchronize();
4206
+
4207
+      feedrate_mm_s /= 4;
4208
+
4209
+      // Bump the target more slowly
4210
+      LOOP_XYZ(i) destination[i] -= retract_mm[i] * 2;
4211
+
4212
+      endstops.enable(true);
4213
+      G38_move = true;
4214
+      prepare_move_to_destination();
4215
+      stepper.synchronize();
4216
+      G38_move = false;
4217
+
4218
+      set_current_from_steppers_for_axis(ALL_AXES);
4219
+      SYNC_PLAN_POSITION_KINEMATIC();
4220
+    }
4221
+
4222
+    endstops.hit_on_purpose();
4223
+    endstops.not_homing();
4224
+    return G38_pass_fail;
4225
+  }
4226
+
4227
+  /**
4228
+   * G38.2 - probe toward workpiece, stop on contact, signal error if failure
4229
+   * G38.3 - probe toward workpiece, stop on contact
4230
+   *
4231
+   * Like G28 except uses Z min endstop for all axes
4232
+   */
4233
+  inline void gcode_G38(bool is_38_2) {
4234
+    // Get X Y Z E F
4235
+    gcode_get_destination();
4236
+
4237
+    setup_for_endstop_or_probe_move();
4238
+
4239
+    // If any axis has enough movement, do the move
4240
+    LOOP_XYZ(i)
4241
+      if (fabs(destination[i] - current_position[i]) >= G38_MINIMUM_MOVE) {
4242
+        if (!code_seen('F')) feedrate_mm_s = homing_feedrate_mm_s[i];
4243
+        // If G38.2 fails throw an error
4244
+        if (!G38_run_probe() && is_38_2) {
4245
+          SERIAL_ERROR_START;
4246
+          SERIAL_ERRORLNPGM("Failed to reach target");
4247
+        }
4248
+        break;
4249
+      }
4250
+
4251
+    clean_up_after_endstop_or_probe_move();
4252
+  }
4253
+
4254
+#endif // G38_PROBE_TARGET
4255
+
4161 4256
 /**
4162 4257
  * G92: Set current position to given X Y Z E
4163 4258
  */
@@ -7279,6 +7374,11 @@ void process_next_command() {
7279 7374
   // Skip spaces to get the numeric part
7280 7375
   while (*cmd_ptr == ' ') cmd_ptr++;
7281 7376
 
7377
+  // Allow for decimal point in command
7378
+  #if ENABLED(G38_PROBE_TARGET)
7379
+    uint8_t subcode = 0;
7380
+  #endif
7381
+
7282 7382
   uint16_t codenum = 0; // define ahead of goto
7283 7383
 
7284 7384
   // Bail early if there's no code
@@ -7291,6 +7391,15 @@ void process_next_command() {
7291 7391
     cmd_ptr++;
7292 7392
   } while (NUMERIC(*cmd_ptr));
7293 7393
 
7394
+  // Allow for decimal point in command
7395
+  #if ENABLED(G38_PROBE_TARGET)
7396
+    if (*cmd_ptr == '.') {
7397
+      cmd_ptr++;
7398
+      while (NUMERIC(*cmd_ptr))
7399
+        subcode = (subcode * 10) + (*cmd_ptr++ - '0');
7400
+    }
7401
+  #endif
7402
+
7294 7403
   // Skip all spaces to get to the first argument, or nul
7295 7404
   while (*cmd_ptr == ' ') cmd_ptr++;
7296 7405
 
@@ -7391,6 +7500,13 @@ void process_next_command() {
7391 7500
         #endif // Z_PROBE_SLED
7392 7501
       #endif // HAS_BED_PROBE
7393 7502
 
7503
+      #if ENABLED(G38_PROBE_TARGET)
7504
+        case 38: // G38.2 & G38.3
7505
+          if (subcode == 2 || subcode == 3)
7506
+            gcode_G38(subcode == 2);
7507
+          break;
7508
+      #endif
7509
+
7394 7510
       case 90: // G90
7395 7511
         relative_mode = false;
7396 7512
         break;
@@ -8899,7 +9015,7 @@ void prepare_move_to_destination() {
8899 9015
    * Morgan SCARA Inverse Kinematics. Results in delta[].
8900 9016
    *
8901 9017
    * See http://forums.reprap.org/read.php?185,283327
8902
-   * 
9018
+   *
8903 9019
    * Maths and first version by QHARLEY.
8904 9020
    * Integrated into Marlin and slightly restructured by Joachim Cerny.
8905 9021
    */

+ 11
- 0
Marlin/SanityCheck.h View File

@@ -852,6 +852,17 @@
852 852
 #endif
853 853
 
854 854
 /**
855
+ * G38 Probe Target
856
+ */
857
+#if ENABLED(G38_PROBE_TARGET)
858
+  #if !HAS_BED_PROBE
859
+    #error "G38_PROBE_TARGET requires a bed probe."
860
+  #elif !IS_CARTESIAN
861
+    #error "G38_PROBE_TARGET requires a Cartesian machine."
862
+  #endif
863
+#endif
864
+
865
+/**
855 866
  * Make sure only one display is enabled
856 867
  *
857 868
  * Note: BQ_LCD_SMART_CONTROLLER => REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER

+ 15
- 1
Marlin/endstops.cpp View File

@@ -243,14 +243,28 @@ void Endstops::update() {
243 243
   // COPY_BIT: copy the value of COPY_BIT to BIT in bits
244 244
   #define COPY_BIT(bits, COPY_BIT, BIT) SET_BIT(bits, BIT, TEST(bits, COPY_BIT))
245 245
 
246
-  #define UPDATE_ENDSTOP(AXIS,MINMAX) do { \
246
+  #define _UPDATE_ENDSTOP(AXIS,MINMAX,CODE) do { \
247 247
       UPDATE_ENDSTOP_BIT(AXIS, MINMAX); \
248 248
       if (TEST_ENDSTOP(_ENDSTOP(AXIS, MINMAX)) && stepper.current_block->steps[_AXIS(AXIS)] > 0) { \
249 249
         _ENDSTOP_HIT(AXIS); \
250 250
         stepper.endstop_triggered(_AXIS(AXIS)); \
251
+        CODE; \
251 252
       } \
252 253
     } while(0)
253 254
 
255
+  #if ENABLED(G38_PROBE_TARGET) && PIN_EXISTS(Z_MIN)  // If G38 command then check Z_MIN for every axis and every direction  
256
+
257
+    #define UPDATE_ENDSTOP(AXIS,MINMAX) do { \
258
+        _UPDATE_ENDSTOP(AXIS,MINMAX,NOOP); \
259
+        if (G38_move) _UPDATE_ENDSTOP(Z, MIN, G38_endstop_hit = true); \
260
+      } while(0)
261
+
262
+  #else	
263
+
264
+    #define UPDATE_ENDSTOP(AXIS,MINMAX) _UPDATE_ENDSTOP(AXIS,MINMAX,NOOP)
265
+
266
+  #endif
267
+
254 268
   #if ENABLED(COREXY) || ENABLED(COREXZ)
255 269
     // Head direction in -X axis for CoreXY and CoreXZ bots.
256 270
     // If DeltaA == -DeltaB, the movement is only in Y or Z axis

+ 6
- 0
Marlin/example_configurations/Cartesio/Configuration_adv.h View File

@@ -532,6 +532,12 @@
532 532
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
533 533
 //#define BEZIER_CURVE_SUPPORT
534 534
 
535
+// G38.2 and G38.3 Probe Target
536
+//#define G38_PROBE_TARGET
537
+#if ENABLED(G38_PROBE_TARGET)
538
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
539
+#endif
540
+
535 541
 // Moves (or segments) with fewer steps than this will be joined with the next move
536 542
 #define MIN_STEPS_PER_SEGMENT 6
537 543
 

+ 6
- 0
Marlin/example_configurations/Felix/Configuration_adv.h View File

@@ -532,6 +532,12 @@
532 532
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
533 533
 //#define BEZIER_CURVE_SUPPORT
534 534
 
535
+// G38.2 and G38.3 Probe Target
536
+//#define G38_PROBE_TARGET
537
+#if ENABLED(G38_PROBE_TARGET)
538
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
539
+#endif
540
+
535 541
 // Moves (or segments) with fewer steps than this will be joined with the next move
536 542
 #define MIN_STEPS_PER_SEGMENT 6
537 543
 

+ 6
- 0
Marlin/example_configurations/Hephestos/Configuration_adv.h View File

@@ -532,6 +532,12 @@
532 532
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
533 533
 //#define BEZIER_CURVE_SUPPORT
534 534
 
535
+// G38.2 and G38.3 Probe Target
536
+//#define G38_PROBE_TARGET
537
+#if ENABLED(G38_PROBE_TARGET)
538
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
539
+#endif
540
+
535 541
 // Moves (or segments) with fewer steps than this will be joined with the next move
536 542
 #define MIN_STEPS_PER_SEGMENT 6
537 543
 

+ 6
- 0
Marlin/example_configurations/Hephestos_2/Configuration_adv.h View File

@@ -532,6 +532,12 @@
532 532
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
533 533
 //#define BEZIER_CURVE_SUPPORT
534 534
 
535
+// G38.2 and G38.3 Probe Target
536
+//#define G38_PROBE_TARGET
537
+#if ENABLED(G38_PROBE_TARGET)
538
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
539
+#endif
540
+
535 541
 // Moves (or segments) with fewer steps than this will be joined with the next move
536 542
 #define MIN_STEPS_PER_SEGMENT 6
537 543
 

+ 6
- 0
Marlin/example_configurations/K8200/Configuration_adv.h View File

@@ -538,6 +538,12 @@
538 538
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
539 539
 //#define BEZIER_CURVE_SUPPORT
540 540
 
541
+// G38.2 and G38.3 Probe Target
542
+//#define G38_PROBE_TARGET
543
+#if ENABLED(G38_PROBE_TARGET)
544
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
545
+#endif
546
+
541 547
 // Moves (or segments) with fewer steps than this will be joined with the next move
542 548
 #define MIN_STEPS_PER_SEGMENT 3
543 549
 

+ 6
- 0
Marlin/example_configurations/K8400/Configuration_adv.h View File

@@ -532,6 +532,12 @@
532 532
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
533 533
 //#define BEZIER_CURVE_SUPPORT
534 534
 
535
+// G38.2 and G38.3 Probe Target
536
+//#define G38_PROBE_TARGET
537
+#if ENABLED(G38_PROBE_TARGET)
538
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
539
+#endif
540
+
535 541
 // Moves (or segments) with fewer steps than this will be joined with the next move
536 542
 #define MIN_STEPS_PER_SEGMENT 6
537 543
 

+ 6
- 0
Marlin/example_configurations/RigidBot/Configuration_adv.h View File

@@ -532,6 +532,12 @@
532 532
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
533 533
 //#define BEZIER_CURVE_SUPPORT
534 534
 
535
+// G38.2 and G38.3 Probe Target
536
+//#define G38_PROBE_TARGET
537
+#if ENABLED(G38_PROBE_TARGET)
538
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
539
+#endif
540
+
535 541
 // Moves (or segments) with fewer steps than this will be joined with the next move
536 542
 #define MIN_STEPS_PER_SEGMENT 6
537 543
 

+ 6
- 0
Marlin/example_configurations/SCARA/Configuration_adv.h View File

@@ -532,6 +532,12 @@
532 532
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
533 533
 //#define BEZIER_CURVE_SUPPORT
534 534
 
535
+// G38.2 and G38.3 Probe Target
536
+//#define G38_PROBE_TARGET
537
+#if ENABLED(G38_PROBE_TARGET)
538
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
539
+#endif
540
+
535 541
 // Moves (or segments) with fewer steps than this will be joined with the next move
536 542
 #define MIN_STEPS_PER_SEGMENT 6
537 543
 

+ 6
- 0
Marlin/example_configurations/TAZ4/Configuration_adv.h View File

@@ -540,6 +540,12 @@
540 540
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
541 541
 //#define BEZIER_CURVE_SUPPORT
542 542
 
543
+// G38.2 and G38.3 Probe Target
544
+//#define G38_PROBE_TARGET
545
+#if ENABLED(G38_PROBE_TARGET)
546
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
547
+#endif
548
+
543 549
 // Moves (or segments) with fewer steps than this will be joined with the next move
544 550
 #define MIN_STEPS_PER_SEGMENT 6
545 551
 

+ 6
- 0
Marlin/example_configurations/WITBOX/Configuration_adv.h View File

@@ -532,6 +532,12 @@
532 532
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
533 533
 //#define BEZIER_CURVE_SUPPORT
534 534
 
535
+// G38.2 and G38.3 Probe Target
536
+//#define G38_PROBE_TARGET
537
+#if ENABLED(G38_PROBE_TARGET)
538
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
539
+#endif
540
+
535 541
 // Moves (or segments) with fewer steps than this will be joined with the next move
536 542
 #define MIN_STEPS_PER_SEGMENT 6
537 543
 

+ 6
- 0
Marlin/example_configurations/delta/biv2.5/Configuration_adv.h View File

@@ -534,6 +534,12 @@
534 534
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
535 535
 //#define BEZIER_CURVE_SUPPORT
536 536
 
537
+// G38.2 and G38.3 Probe Target
538
+//#define G38_PROBE_TARGET
539
+#if ENABLED(G38_PROBE_TARGET)
540
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
541
+#endif
542
+
537 543
 // Moves (or segments) with fewer steps than this will be joined with the next move
538 544
 #define MIN_STEPS_PER_SEGMENT 6
539 545
 

+ 6
- 0
Marlin/example_configurations/delta/generic/Configuration_adv.h View File

@@ -534,6 +534,12 @@
534 534
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
535 535
 //#define BEZIER_CURVE_SUPPORT
536 536
 
537
+// G38.2 and G38.3 Probe Target
538
+//#define G38_PROBE_TARGET
539
+#if ENABLED(G38_PROBE_TARGET)
540
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
541
+#endif
542
+
537 543
 // Moves (or segments) with fewer steps than this will be joined with the next move
538 544
 #define MIN_STEPS_PER_SEGMENT 6
539 545
 

+ 6
- 0
Marlin/example_configurations/delta/kossel_mini/Configuration_adv.h View File

@@ -534,6 +534,12 @@
534 534
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
535 535
 //#define BEZIER_CURVE_SUPPORT
536 536
 
537
+// G38.2 and G38.3 Probe Target
538
+//#define G38_PROBE_TARGET
539
+#if ENABLED(G38_PROBE_TARGET)
540
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
541
+#endif
542
+
537 543
 // Moves (or segments) with fewer steps than this will be joined with the next move
538 544
 #define MIN_STEPS_PER_SEGMENT 6
539 545
 

+ 6
- 0
Marlin/example_configurations/delta/kossel_pro/Configuration_adv.h View File

@@ -539,6 +539,12 @@
539 539
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
540 540
 //#define BEZIER_CURVE_SUPPORT
541 541
 
542
+// G38.2 and G38.3 Probe Target
543
+//#define G38_PROBE_TARGET
544
+#if ENABLED(G38_PROBE_TARGET)
545
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
546
+#endif
547
+
542 548
 // Moves (or segments) with fewer steps than this will be joined with the next move
543 549
 #define MIN_STEPS_PER_SEGMENT 6
544 550
 

+ 6
- 0
Marlin/example_configurations/delta/kossel_xl/Configuration_adv.h View File

@@ -534,6 +534,12 @@
534 534
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
535 535
 //#define BEZIER_CURVE_SUPPORT
536 536
 
537
+// G38.2 and G38.3 Probe Target
538
+//#define G38_PROBE_TARGET
539
+#if ENABLED(G38_PROBE_TARGET)
540
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
541
+#endif
542
+
537 543
 // Moves (or segments) with fewer steps than this will be joined with the next move
538 544
 #define MIN_STEPS_PER_SEGMENT 6
539 545
 

+ 6
- 0
Marlin/example_configurations/makibox/Configuration_adv.h View File

@@ -532,6 +532,12 @@
532 532
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
533 533
 //#define BEZIER_CURVE_SUPPORT
534 534
 
535
+// G38.2 and G38.3 Probe Target
536
+//#define G38_PROBE_TARGET
537
+#if ENABLED(G38_PROBE_TARGET)
538
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
539
+#endif
540
+
535 541
 // Moves (or segments) with fewer steps than this will be joined with the next move
536 542
 #define MIN_STEPS_PER_SEGMENT 6
537 543
 

+ 6
- 0
Marlin/example_configurations/tvrrug/Round2/Configuration_adv.h View File

@@ -532,6 +532,12 @@
532 532
 // Support for G5 with XYZE destination and IJPQ offsets. Requires ~2666 bytes.
533 533
 //#define BEZIER_CURVE_SUPPORT
534 534
 
535
+// G38.2 and G38.3 Probe Target
536
+//#define G38_PROBE_TARGET
537
+#if ENABLED(G38_PROBE_TARGET)
538
+  #define G38_MINIMUM_MOVE 0.0275 // minimum distance in mm that will produce a move (determined using the print statement in check_move)
539
+#endif
540
+
535 541
 // Moves (or segments) with fewer steps than this will be joined with the next move
536 542
 #define MIN_STEPS_PER_SEGMENT 6
537 543
 

Loading…
Cancel
Save