Просмотр исходного кода

Idle during long arcs

Idle during long arcs
to prevent from watchdog resets during high segmented fast arcs.
AnHardt 9 лет назад
Родитель
Сommit
8a4376d51f
1 измененных файлов: 9 добавлений и 1 удалений
  1. 9
    1
      Marlin/Marlin_main.cpp

+ 9
- 1
Marlin/Marlin_main.cpp Просмотреть файл

6488
         break;
6488
         break;
6489
 
6489
 
6490
       // G2, G3
6490
       // G2, G3
6491
-      #if ENABLED(ARC_SUPPORT) & DISABLED(SCARA)
6491
+      #if ENABLED(ARC_SUPPORT) && DISABLED(SCARA)
6492
         case 2: // G2  - CW ARC
6492
         case 2: // G2  - CW ARC
6493
         case 3: // G3  - CCW ARC
6493
         case 3: // G3  - CCW ARC
6494
           gcode_G2_G3(codenum == 2);
6494
           gcode_G2_G3(codenum == 2);
7514
 
7514
 
7515
     float feed_rate = feedrate * feedrate_multiplier / 60 / 100.0;
7515
     float feed_rate = feedrate * feedrate_multiplier / 60 / 100.0;
7516
 
7516
 
7517
+    millis_t previous_ms = millis();
7518
+
7517
     for (i = 1; i < segments; i++) { // Iterate (segments-1) times
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
       if (++count < N_ARC_CORRECTION) {
7527
       if (++count < N_ARC_CORRECTION) {
7520
         // Apply vector rotation matrix to previous r_X / 1
7528
         // Apply vector rotation matrix to previous r_X / 1
7521
         r_new_Y = r_X * sin_T + r_Y * cos_T;
7529
         r_new_Y = r_X * sin_T + r_Y * cos_T;

Загрузка…
Отмена
Сохранить