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

Merge pull request #4126 from thinkyhead/rc_lin_timing_patch

Patch LIN_ADVANCE timing issue
Scott Lahteine 9 лет назад
Родитель
Сommit
bdcd628896
1 измененных файлов: 13 добавлений и 11 удалений
  1. 13
    11
      Marlin/stepper.cpp

+ 13
- 11
Marlin/stepper.cpp Просмотреть файл

@@ -451,7 +451,7 @@ void Stepper::isr() {
451 451
       #endif // ADVANCE or LIN_ADVANCE
452 452
 
453 453
       #if ENABLED(ADVANCE) || ENABLED(LIN_ADVANCE)
454
-        eISR_Rate = (timer >> 2) / abs(e_steps[current_block->active_extruder]);
454
+        eISR_Rate = (timer >> 2) * step_loops / abs(e_steps[current_block->active_extruder]);
455 455
       #endif
456 456
     }
457 457
     else if (step_events_completed > (unsigned long)current_block->decelerate_after) {
@@ -487,7 +487,7 @@ void Stepper::isr() {
487 487
       #endif // ADVANCE or LIN_ADVANCE
488 488
 
489 489
       #if ENABLED(ADVANCE) || ENABLED(LIN_ADVANCE)
490
-        eISR_Rate = (timer >> 2) / abs(e_steps[current_block->active_extruder]);
490
+        eISR_Rate = (timer >> 2) * step_loops / abs(e_steps[current_block->active_extruder]);
491 491
       #endif
492 492
     }
493 493
     else {
@@ -497,7 +497,7 @@ void Stepper::isr() {
497 497
         if (current_block->use_advance_lead)
498 498
           current_estep_rate[current_block->active_extruder] = final_estep_rate;
499 499
 
500
-        eISR_Rate = (OCR1A_nominal >> 2) / abs(e_steps[current_block->active_extruder]);
500
+        eISR_Rate = (OCR1A_nominal >> 2) * step_loops_nominal / abs(e_steps[current_block->active_extruder]);
501 501
 
502 502
       #endif
503 503
 
@@ -542,16 +542,18 @@ void Stepper::isr() {
542 542
       }
543 543
 
544 544
     // Step all E steppers that have steps
545
-    STEP_E_ONCE(0);
546
-    #if EXTRUDERS > 1
547
-      STEP_E_ONCE(1);
548
-      #if EXTRUDERS > 2
549
-        STEP_E_ONCE(2);
550
-        #if EXTRUDERS > 3
551
-          STEP_E_ONCE(3);
545
+    for (uint8_t i = 0; i < step_loops; i++) {
546
+      STEP_E_ONCE(0);
547
+      #if EXTRUDERS > 1
548
+        STEP_E_ONCE(1);
549
+        #if EXTRUDERS > 2
550
+          STEP_E_ONCE(2);
551
+          #if EXTRUDERS > 3
552
+            STEP_E_ONCE(3);
553
+          #endif
552 554
         #endif
553 555
       #endif
554
-    #endif
556
+    }
555 557
 
556 558
   }
557 559
 

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