Browse Source

Fix extruder stops extruding with LA (#11758)

Sebastianv650 6 years ago
parent
commit
7e8c073fba
1 changed files with 11 additions and 17 deletions
  1. 11
    17
      Marlin/src/module/stepper.cpp

+ 11
- 17
Marlin/src/module/stepper.cpp View File

@@ -1485,16 +1485,10 @@ uint32_t Stepper::stepper_block_phase_isr() {
1485 1485
 
1486 1486
         #if ENABLED(LIN_ADVANCE)
1487 1487
           if (LA_use_advance_lead) {
1488
-            // Wake up eISR on first acceleration loop and fire ISR if final adv_rate is reached
1489
-            if (step_events_completed == steps_per_isr || (LA_steps && LA_isr_rate != current_block->advance_speed)) {
1490
-              nextAdvanceISR = 0;
1491
-              LA_isr_rate = current_block->advance_speed;
1492
-            }
1493
-          }
1494
-          else {
1495
-            LA_isr_rate = LA_ADV_NEVER;
1496
-            if (LA_steps) nextAdvanceISR = 0;
1488
+            // Fire ISR if final adv_rate is reached
1489
+            if (LA_steps && LA_isr_rate != current_block->advance_speed) nextAdvanceISR = 0;
1497 1490
           }
1491
+          else if (LA_steps) nextAdvanceISR = 0;
1498 1492
         #endif // LIN_ADVANCE
1499 1493
       }
1500 1494
       // Are we in Deceleration phase ?
@@ -1536,17 +1530,13 @@ uint32_t Stepper::stepper_block_phase_isr() {
1536 1530
 
1537 1531
         #if ENABLED(LIN_ADVANCE)
1538 1532
           if (LA_use_advance_lead) {
1539
-            if (step_events_completed <= decelerate_after + steps_per_isr ||
1540
-               (LA_steps && LA_isr_rate != current_block->advance_speed)
1541
-            ) {
1542
-              nextAdvanceISR = 0; // Wake up eISR on first deceleration loop
1533
+            // Wake up eISR on first deceleration loop and fire ISR if final adv_rate is reached
1534
+            if (step_events_completed <= decelerate_after + steps_per_isr || (LA_steps && LA_isr_rate != current_block->advance_speed)) {
1535
+              nextAdvanceISR = 0;
1543 1536
               LA_isr_rate = current_block->advance_speed;
1544 1537
             }
1545 1538
           }
1546
-          else {
1547
-            LA_isr_rate = LA_ADV_NEVER;
1548
-            if (LA_steps) nextAdvanceISR = 0;
1549
-          }
1539
+          else if (LA_steps) nextAdvanceISR = 0;
1550 1540
         #endif // LIN_ADVANCE
1551 1541
       }
1552 1542
       // We must be in cruise phase otherwise
@@ -1726,7 +1716,11 @@ uint32_t Stepper::stepper_block_phase_isr() {
1726 1716
         if ((LA_use_advance_lead = current_block->use_advance_lead)) {
1727 1717
           LA_final_adv_steps = current_block->final_adv_steps;
1728 1718
           LA_max_adv_steps = current_block->max_adv_steps;
1719
+          //Start the ISR
1720
+          nextAdvanceISR = 0;
1721
+          LA_isr_rate = current_block->advance_speed;
1729 1722
         }
1723
+        else LA_isr_rate = LA_ADV_NEVER;
1730 1724
       #endif
1731 1725
 
1732 1726
       if (current_block->direction_bits != last_direction_bits

Loading…
Cancel
Save