|
@ -438,7 +438,9 @@ void check_axes_activity() { |
|
|
} |
|
|
} |
|
|
else { |
|
|
else { |
|
|
#if FAN_PIN > -1 |
|
|
#if FAN_PIN > -1 |
|
|
if (FanSpeed != 0) analogWrite(FAN_PIN,FanSpeed); // If buffer is empty use current fan speed
|
|
|
if (FanSpeed != 0){ |
|
|
|
|
|
analogWrite(FAN_PIN,FanSpeed); // If buffer is empty use current fan speed
|
|
|
|
|
|
} |
|
|
#endif |
|
|
#endif |
|
|
} |
|
|
} |
|
|
if((DISABLE_X) && (x_active == 0)) disable_x(); |
|
|
if((DISABLE_X) && (x_active == 0)) disable_x(); |
|
@ -446,11 +448,14 @@ void check_axes_activity() { |
|
|
if((DISABLE_Z) && (z_active == 0)) disable_z(); |
|
|
if((DISABLE_Z) && (z_active == 0)) disable_z(); |
|
|
if((DISABLE_E) && (e_active == 0)) { disable_e0();disable_e1();disable_e2(); } |
|
|
if((DISABLE_E) && (e_active == 0)) { disable_e0();disable_e1();disable_e2(); } |
|
|
#if FAN_PIN > -1 |
|
|
#if FAN_PIN > -1 |
|
|
if((FanSpeed == 0) && (fan_speed ==0)) analogWrite(FAN_PIN, 0); |
|
|
if((FanSpeed == 0) && (fan_speed ==0)) { |
|
|
#endif |
|
|
analogWrite(FAN_PIN, 0); |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
if (FanSpeed != 0 && tail_fan_speed !=0) { |
|
|
if (FanSpeed != 0 && tail_fan_speed !=0) { |
|
|
analogWrite(FAN_PIN,tail_fan_speed); |
|
|
analogWrite(FAN_PIN,tail_fan_speed); |
|
|
} |
|
|
} |
|
|
|
|
|
#endif |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -714,9 +719,9 @@ void plan_buffer_line(const float &x, const float &y, const float &z, const floa |
|
|
if(abs(current_speed[E_AXIS]) > max_e_jerk/2) |
|
|
if(abs(current_speed[E_AXIS]) > max_e_jerk/2) |
|
|
vmax_junction = min(vmax_junction, max_e_jerk/2); |
|
|
vmax_junction = min(vmax_junction, max_e_jerk/2); |
|
|
|
|
|
|
|
|
if ((moves_queued > 1) && (previous_nominal_speed > 0.0)) { |
|
|
if ((moves_queued > 1) && (previous_nominal_speed > 0.0001)) { |
|
|
float jerk = sqrt(pow((current_speed[X_AXIS]-previous_speed[X_AXIS]), 2)+pow((current_speed[Y_AXIS]-previous_speed[Y_AXIS]), 2)); |
|
|
float jerk = sqrt(pow((current_speed[X_AXIS]-previous_speed[X_AXIS]), 2)+pow((current_speed[Y_AXIS]-previous_speed[Y_AXIS]), 2)); |
|
|
if((previous_speed[X_AXIS] != 0.0) || (previous_speed[Y_AXIS] != 0.0)) { |
|
|
if((abs(previous_speed[X_AXIS]) > 0.0001) || (abs(previous_speed[Y_AXIS]) > 0.0001)) { |
|
|
vmax_junction = block->nominal_speed; |
|
|
vmax_junction = block->nominal_speed; |
|
|
} |
|
|
} |
|
|
if (jerk > max_xy_jerk) { |
|
|
if (jerk > max_xy_jerk) { |
|
@ -751,6 +756,7 @@ void plan_buffer_line(const float &x, const float &y, const float &z, const floa |
|
|
memcpy(previous_speed, current_speed, sizeof(previous_speed)); // previous_speed[] = current_speed[]
|
|
|
memcpy(previous_speed, current_speed, sizeof(previous_speed)); // previous_speed[] = current_speed[]
|
|
|
previous_nominal_speed = block->nominal_speed; |
|
|
previous_nominal_speed = block->nominal_speed; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifdef ADVANCE |
|
|
#ifdef ADVANCE |
|
|
// Calculate advance rate
|
|
|
// Calculate advance rate
|
|
|
if((block->steps_e == 0) || (block->steps_x == 0 && block->steps_y == 0 && block->steps_z == 0)) { |
|
|
if((block->steps_e == 0) || (block->steps_x == 0 && block->steps_y == 0 && block->steps_z == 0)) { |
|
|