From d0c14c30eb3c0082af3a692011ff4f8e32f965cb Mon Sep 17 00:00:00 2001 From: Jim Morris Date: Tue, 15 Oct 2013 01:21:47 -0700 Subject: [PATCH] Fix bug in Extruder where speed was not being initialiezed so extruder was not finishing at the same time as XYZ, causing stutters and pauses. --- src/modules/tools/extruder/Extruder.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/modules/tools/extruder/Extruder.cpp b/src/modules/tools/extruder/Extruder.cpp index 564b0a1b..e5858517 100644 --- a/src/modules/tools/extruder/Extruder.cpp +++ b/src/modules/tools/extruder/Extruder.cpp @@ -242,7 +242,7 @@ void Extruder::on_block_begin(void* argument){ this->current_position += this->travel_distance ; int steps_to_step = abs(int(floor(this->steps_per_millimeter * (this->travel_distance +this->unstepped_distance) ))); - + if ( this->travel_distance > 0 ){ this->unstepped_distance += this->travel_distance -(steps_to_step/this->steps_per_millimeter); //catch any overflow } else { @@ -281,6 +281,7 @@ void Extruder::on_block_begin(void* argument){ this->current_block = block; this->stepper_motor->move( ( this->travel_distance > 0 ), steps_to_step ); + this->on_speed_change(0); // initialise speed in case we get called first }else{ this->current_block = NULL; } @@ -335,7 +336,7 @@ void Extruder::on_speed_change( void* argument ){ * or even : ( stepper steps per minute / 60 ) * ( extruder steps / current block's steps ) */ - this->stepper_motor->set_speed( max( ( this->kernel->stepper->trapezoid_adjusted_rate /60L) * ( (double)this->stepper_motor->steps_to_move / (double)this->current_block->steps_event_count ), this->kernel->stepper->minimum_steps_per_minute/60 ) ); + this->stepper_motor->set_speed( max( ( this->kernel->stepper->trapezoid_adjusted_rate /60.0) * ( (double)this->stepper_motor->steps_to_move / (double)this->current_block->steps_event_count ), this->kernel->stepper->minimum_steps_per_minute/60.0 ) ); } -- 2.20.1