Browse Source

Idle during long arcs

Idle during long arcs
to prevent from watchdog resets during high segmented fast arcs.
AnHardt 9 years ago
parent
commit
8a4376d51f
1 changed files with 9 additions and 1 deletions
  1. 9
    1
      Marlin/Marlin_main.cpp

+ 9
- 1
Marlin/Marlin_main.cpp View File

@@ -6488,7 +6488,7 @@ void process_next_command() {
6488 6488
         break;
6489 6489
 
6490 6490
       // G2, G3
6491
-      #if ENABLED(ARC_SUPPORT) & DISABLED(SCARA)
6491
+      #if ENABLED(ARC_SUPPORT) && DISABLED(SCARA)
6492 6492
         case 2: // G2  - CW ARC
6493 6493
         case 3: // G3  - CCW ARC
6494 6494
           gcode_G2_G3(codenum == 2);
@@ -7514,8 +7514,16 @@ void prepare_move() {
7514 7514
 
7515 7515
     float feed_rate = feedrate * feedrate_multiplier / 60 / 100.0;
7516 7516
 
7517
+    millis_t previous_ms = millis();
7518
+
7517 7519
     for (i = 1; i < segments; i++) { // Iterate (segments-1) times
7518 7520
 
7521
+      millis_t now = millis();
7522
+      if (now - previous_ms > 200UL) {
7523
+        previous_ms = now;
7524
+        idle();
7525
+      }
7526
+
7519 7527
       if (++count < N_ARC_CORRECTION) {
7520 7528
         // Apply vector rotation matrix to previous r_X / 1
7521 7529
         r_new_Y = r_X * sin_T + r_Y * cos_T;

Loading…
Cancel
Save