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
 
1485
 
1486
         #if ENABLED(LIN_ADVANCE)
1486
         #if ENABLED(LIN_ADVANCE)
1487
           if (LA_use_advance_lead) {
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
         #endif // LIN_ADVANCE
1492
         #endif // LIN_ADVANCE
1499
       }
1493
       }
1500
       // Are we in Deceleration phase ?
1494
       // Are we in Deceleration phase ?
1536
 
1530
 
1537
         #if ENABLED(LIN_ADVANCE)
1531
         #if ENABLED(LIN_ADVANCE)
1538
           if (LA_use_advance_lead) {
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
               LA_isr_rate = current_block->advance_speed;
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
         #endif // LIN_ADVANCE
1540
         #endif // LIN_ADVANCE
1551
       }
1541
       }
1552
       // We must be in cruise phase otherwise
1542
       // We must be in cruise phase otherwise
1726
         if ((LA_use_advance_lead = current_block->use_advance_lead)) {
1716
         if ((LA_use_advance_lead = current_block->use_advance_lead)) {
1727
           LA_final_adv_steps = current_block->final_adv_steps;
1717
           LA_final_adv_steps = current_block->final_adv_steps;
1728
           LA_max_adv_steps = current_block->max_adv_steps;
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
       #endif
1724
       #endif
1731
 
1725
 
1732
       if (current_block->direction_bits != last_direction_bits
1726
       if (current_block->direction_bits != last_direction_bits

Loading…
Cancel
Save