Adapt LA changes to ConfigurationStore
This commit is contained in:
parent
45563bfdd3
commit
124540a06f
@ -127,7 +127,7 @@ float extrude_min_temp=EXTRUDE_MINTEMP;
|
|||||||
|
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
float extruder_advance_K = LIN_ADVANCE_K;
|
float extruder_advance_K = LIN_ADVANCE_K;
|
||||||
float position_float[NUM_AXIS] = { 0 };
|
float position_float[NUM_AXIS] = { 0, 0, 0, 0 };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Returns the index of the next block in the ring buffer
|
// Returns the index of the next block in the ring buffer
|
||||||
@ -403,7 +403,7 @@ void planner_recalculate(const float &safe_final_speed)
|
|||||||
calculate_trapezoid_for_block(prev, prev->entry_speed, current->entry_speed);
|
calculate_trapezoid_for_block(prev, prev->entry_speed, current->entry_speed);
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
if (current->use_advance_lead) {
|
if (current->use_advance_lead) {
|
||||||
const float comp = current->e_D_ratio * extruder_advance_K * axis_steps_per_unit[E_AXIS];
|
const float comp = current->e_D_ratio * extruder_advance_K * cs.axis_steps_per_unit[E_AXIS];
|
||||||
current->max_adv_steps = current->nominal_speed * comp;
|
current->max_adv_steps = current->nominal_speed * comp;
|
||||||
current->final_adv_steps = next->entry_speed * comp;
|
current->final_adv_steps = next->entry_speed * comp;
|
||||||
}
|
}
|
||||||
@ -423,7 +423,7 @@ void planner_recalculate(const float &safe_final_speed)
|
|||||||
calculate_trapezoid_for_block(current, current->entry_speed, safe_final_speed);
|
calculate_trapezoid_for_block(current, current->entry_speed, safe_final_speed);
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
if (current->use_advance_lead) {
|
if (current->use_advance_lead) {
|
||||||
const float comp = current->e_D_ratio * extruder_advance_K * axis_steps_per_unit[E_AXIS];
|
const float comp = current->e_D_ratio * extruder_advance_K * cs.axis_steps_per_unit[E_AXIS];
|
||||||
current->max_adv_steps = current->nominal_speed * comp;
|
current->max_adv_steps = current->nominal_speed * comp;
|
||||||
current->final_adv_steps = safe_final_speed * comp;
|
current->final_adv_steps = safe_final_speed * comp;
|
||||||
}
|
}
|
||||||
@ -1023,7 +1023,7 @@ Having the real displacement of the head, we can calculate the total movement le
|
|||||||
* extruder_advance_K : There is an advance factor set.
|
* extruder_advance_K : There is an advance factor set.
|
||||||
* delta_mm[E_AXIS] > 0 : Extruder is running forward (e.g., for "Wipe while retracting" (Slic3r) or "Combing" (Cura) moves)
|
* delta_mm[E_AXIS] > 0 : Extruder is running forward (e.g., for "Wipe while retracting" (Slic3r) or "Combing" (Cura) moves)
|
||||||
*/
|
*/
|
||||||
block->use_advance_lead = block->steps_e
|
block->use_advance_lead = block->steps_e.wide
|
||||||
&& extruder_advance_K
|
&& extruder_advance_K
|
||||||
&& delta_mm[E_AXIS] > 0;
|
&& delta_mm[E_AXIS] > 0;
|
||||||
if (block->use_advance_lead) {
|
if (block->use_advance_lead) {
|
||||||
@ -1037,12 +1037,13 @@ Having the real displacement of the head, we can calculate the total movement le
|
|||||||
if (block->e_D_ratio > 3.0)
|
if (block->e_D_ratio > 3.0)
|
||||||
block->use_advance_lead = false;
|
block->use_advance_lead = false;
|
||||||
else {
|
else {
|
||||||
const uint32_t max_accel_steps_per_s2 = max_jerk[E_AXIS] / (extruder_advance_K * block->e_D_ratio) * steps_per_mm;
|
const uint32_t max_accel_steps_per_s2 = cs.max_jerk[E_AXIS] / (extruder_advance_K * block->e_D_ratio) * steps_per_mm;
|
||||||
|
if (block->acceleration_st > max_accel_steps_per_s2) {
|
||||||
|
block->acceleration_st = max_accel_steps_per_s2;
|
||||||
#ifdef LA_DEBUG
|
#ifdef LA_DEBUG
|
||||||
if (block->acceleration_st > max_accel_steps_per_s2)
|
|
||||||
SERIAL_ECHOLNPGM("Acceleration limited.");
|
SERIAL_ECHOLNPGM("Acceleration limited.");
|
||||||
#endif
|
#endif
|
||||||
NOMORE(block->acceleration_st, max_accel_steps_per_s2);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1081,7 +1082,7 @@ Having the real displacement of the head, we can calculate the total movement le
|
|||||||
|
|
||||||
#ifdef LIN_ADVANCE
|
#ifdef LIN_ADVANCE
|
||||||
if (block->use_advance_lead) {
|
if (block->use_advance_lead) {
|
||||||
block->advance_speed = (F_CPU / 8.0) / (extruder_advance_K * block->e_D_ratio * block->acceleration * axis_steps_per_unit[E_AXIS]);
|
block->advance_speed = (F_CPU / 8.0) / (extruder_advance_K * block->e_D_ratio * block->acceleration * cs.axis_steps_per_unit[E_AXIS]);
|
||||||
#ifdef LA_DEBUG
|
#ifdef LA_DEBUG
|
||||||
if (extruder_advance_K * block->e_D_ratio * block->acceleration * 2 < block->nominal_speed * block->e_D_ratio)
|
if (extruder_advance_K * block->e_D_ratio * block->acceleration * 2 < block->nominal_speed * block->e_D_ratio)
|
||||||
SERIAL_ECHOLNPGM("More than 2 steps per eISR loop executed.");
|
SERIAL_ECHOLNPGM("More than 2 steps per eISR loop executed.");
|
||||||
|
Loading…
Reference in New Issue
Block a user