Attempt at geometry fix. Catches up to missed steps whenever it finds them.
This commit is contained in:
parent
8562260f00
commit
254f42b118
1 changed files with 16 additions and 10 deletions
|
|
@ -91,6 +91,7 @@ SdFile root;
|
|||
SdFile file;
|
||||
uint32_t filesize=0;
|
||||
uint32_t sdpos=0;
|
||||
unsigned long timediff=0;
|
||||
bool sdmode=false;
|
||||
bool sdactive=false;
|
||||
int16_t n;
|
||||
|
|
@ -363,7 +364,7 @@ inline void process_commands()
|
|||
y_steps_to_take = abs(destination_y - current_y)*y_steps_per_unit;
|
||||
z_steps_to_take = abs(destination_z - current_z)*z_steps_per_unit;
|
||||
e_steps_to_take = abs(destination_e - current_e)*e_steps_per_unit;
|
||||
|
||||
|
||||
#define X_TIME_FOR_MOVE ((float)x_steps_to_take / (x_steps_per_unit*feedrate/60000000))
|
||||
#define Y_TIME_FOR_MOVE ((float)y_steps_to_take / (y_steps_per_unit*feedrate/60000000))
|
||||
#define Z_TIME_FOR_MOVE ((float)z_steps_to_take / (z_steps_per_unit*feedrate/60000000))
|
||||
|
|
@ -653,10 +654,10 @@ void linear_move(unsigned long x_steps_remaining, unsigned long y_steps_remainin
|
|||
else digitalWrite(E_DIR_PIN,INVERT_E_DIR);
|
||||
|
||||
//Only enable axis that are moving. If the axis doesn't need to move then it can stay disabled depending on configuration.
|
||||
if(x_steps_remaining) enable_x();
|
||||
if(y_steps_remaining) enable_y();
|
||||
if(z_steps_remaining) enable_z();
|
||||
if(e_steps_remaining) enable_e();
|
||||
if(x_steps_remaining) { enable_x(); do_x_step(); x_steps_remaining--;}
|
||||
if(y_steps_remaining) { enable_y(); do_y_step(); y_steps_remaining--;}
|
||||
if(z_steps_remaining) { enable_z(); do_z_step(); z_steps_remaining--;}
|
||||
if(e_steps_remaining) { enable_e(); do_e_step(); e_steps_remaining--;}
|
||||
|
||||
if(X_MIN_PIN > -1) if(!direction_x) if(digitalRead(X_MIN_PIN) != ENDSTOPS_INVERTING) x_steps_remaining=0;
|
||||
if(Y_MIN_PIN > -1) if(!direction_y) if(digitalRead(Y_MIN_PIN) != ENDSTOPS_INVERTING) y_steps_remaining=0;
|
||||
|
|
@ -668,22 +669,27 @@ void linear_move(unsigned long x_steps_remaining, unsigned long y_steps_remainin
|
|||
while(x_steps_remaining + y_steps_remaining + z_steps_remaining + e_steps_remaining > 0) // move until no more steps remain
|
||||
{
|
||||
if(x_steps_remaining) {
|
||||
if ((micros()-previous_micros_x) >= x_interval) { do_x_step(); x_steps_remaining--; }
|
||||
if(X_MIN_PIN > -1) if(!direction_x) if(digitalRead(X_MIN_PIN) != ENDSTOPS_INVERTING) x_steps_remaining=0;
|
||||
timediff=micros()-previous_micros_x;
|
||||
while(timediff >= x_interval && x_steps_remaining) { do_x_step(); x_steps_remaining--; timediff-=x_interval;}
|
||||
}
|
||||
|
||||
if(y_steps_remaining) {
|
||||
if ((micros()-previous_micros_y) >= y_interval) { do_y_step(); y_steps_remaining--; }
|
||||
if(Y_MIN_PIN > -1) if(!direction_y) if(digitalRead(Y_MIN_PIN) != ENDSTOPS_INVERTING) y_steps_remaining=0;
|
||||
timediff=micros()-previous_micros_y;
|
||||
while(timediff >= y_interval && y_steps_remaining) { do_y_step(); y_steps_remaining--; timediff-=y_interval;}
|
||||
}
|
||||
|
||||
if(z_steps_remaining) {
|
||||
if ((micros()-previous_micros_z) >= z_interval) { do_z_step(); z_steps_remaining--; }
|
||||
if(Z_MIN_PIN > -1) if(!direction_z) if(digitalRead(Z_MIN_PIN) != ENDSTOPS_INVERTING) z_steps_remaining=0;
|
||||
timediff=micros()-previous_micros_z;
|
||||
while(timediff >= z_interval && z_steps_remaining) { do_z_step(); z_steps_remaining--; timediff-=z_interval;}
|
||||
}
|
||||
|
||||
if(e_steps_remaining) if ((micros()-previous_micros_e) >= e_interval) { do_e_step(); e_steps_remaining--; }
|
||||
|
||||
if(e_steps_remaining){
|
||||
timediff=micros()-previous_micros_e;
|
||||
while(timediff >= e_interval && e_steps_remaining) { do_e_step(); e_steps_remaining--; timediff-=e_interval;}
|
||||
}
|
||||
if( (millis() - previous_millis_heater) >= 500 ) {
|
||||
manage_heater();
|
||||
previous_millis_heater = millis();
|
||||
|
|
|
|||
Loading…
Reference in a new issue