Adapt LA changes to ConfigurationStore

This commit is contained in:
Yuri D'Elia 2019-03-18 20:58:01 +01:00
parent 45563bfdd3
commit 124540a06f

View File

@ -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.");