From b31c7a837ff5baff89043f3c06b1b2191ed9f79d Mon Sep 17 00:00:00 2001 From: kliment Date: Fri, 15 Jul 2011 20:40:43 +0200 Subject: Remove float conversions from step loop --- Sprinter/Sprinter.pde | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'Sprinter/Sprinter.pde') diff --git a/Sprinter/Sprinter.pde b/Sprinter/Sprinter.pde index 8bb68d7..4d7aa53 100644 --- a/Sprinter/Sprinter.pde +++ b/Sprinter/Sprinter.pde @@ -1170,8 +1170,10 @@ inline void linear_move(unsigned long axis_steps_remaining[]) // make linear mov #ifdef DEBUG_MOVE_TIME unsigned long startmove = micros(); #endif - - //move until no more steps remain + long long_steps_per_sqr_second=(long) steps_per_sqr_second; + long long_min_speed_steps_per_second=(long) min_speed_steps_per_second; + long long_max_speed_steps_per_second=(long) max_speed_steps_per_second; + //move until no more steps remain THERE SHOULD BE NO FLOAT CALCS INSIDE THIS LOOP while(axis_steps_remaining[0] + axis_steps_remaining[1] + axis_steps_remaining[2] + axis_steps_remaining[3] > 0) { #ifdef DISABLE_CHECK_DURING_ACC if(!accelerating && !decelerating) { @@ -1197,8 +1199,7 @@ inline void linear_move(unsigned long axis_steps_remaining[]) // make linear mov if (acceleration_enabled && steps_done == 0) { interval = max_interval; } else if (acceleration_enabled && steps_done <= plateau_steps) { - long current_speed = (long) ((((long) steps_per_sqr_second) / 10000) - * ((micros() - start_move_micros) / 100) + (long) min_speed_steps_per_second); + long current_speed = (long_steps_per_sqr_second / 10000)* ((micros() - start_move_micros) / 100) + long_min_speed_steps_per_second; interval = 100000000 / current_speed; if (interval < full_interval) { accelerating = false; @@ -1215,8 +1216,7 @@ inline void linear_move(unsigned long axis_steps_remaining[]) // make linear mov accelerating = true; decelerating = true; } - long current_speed = (long) ((long) max_speed_steps_per_second - ((((long) steps_per_sqr_second) / 10000) - * ((micros() - start_move_micros) / 100))); + long current_speed = long_max_speed_steps_per_second - (((long_steps_per_sqr_second / 10000) * ((micros() - start_move_micros) / 100))); interval = 100000000 / current_speed; if (interval > max_interval) interval = max_interval; -- cgit v1.2.1 From 57f4c09d1783569609c4116d260978f5e47eb049 Mon Sep 17 00:00:00 2001 From: kliment Date: Fri, 15 Jul 2011 21:06:45 +0200 Subject: Revert "Remove float conversions from step loop" This reverts commit b31c7a837ff5baff89043f3c06b1b2191ed9f79d. --- Sprinter/Sprinter.pde | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'Sprinter/Sprinter.pde') diff --git a/Sprinter/Sprinter.pde b/Sprinter/Sprinter.pde index 4d7aa53..8bb68d7 100644 --- a/Sprinter/Sprinter.pde +++ b/Sprinter/Sprinter.pde @@ -1170,10 +1170,8 @@ inline void linear_move(unsigned long axis_steps_remaining[]) // make linear mov #ifdef DEBUG_MOVE_TIME unsigned long startmove = micros(); #endif - long long_steps_per_sqr_second=(long) steps_per_sqr_second; - long long_min_speed_steps_per_second=(long) min_speed_steps_per_second; - long long_max_speed_steps_per_second=(long) max_speed_steps_per_second; - //move until no more steps remain THERE SHOULD BE NO FLOAT CALCS INSIDE THIS LOOP + + //move until no more steps remain while(axis_steps_remaining[0] + axis_steps_remaining[1] + axis_steps_remaining[2] + axis_steps_remaining[3] > 0) { #ifdef DISABLE_CHECK_DURING_ACC if(!accelerating && !decelerating) { @@ -1199,7 +1197,8 @@ inline void linear_move(unsigned long axis_steps_remaining[]) // make linear mov if (acceleration_enabled && steps_done == 0) { interval = max_interval; } else if (acceleration_enabled && steps_done <= plateau_steps) { - long current_speed = (long_steps_per_sqr_second / 10000)* ((micros() - start_move_micros) / 100) + long_min_speed_steps_per_second; + long current_speed = (long) ((((long) steps_per_sqr_second) / 10000) + * ((micros() - start_move_micros) / 100) + (long) min_speed_steps_per_second); interval = 100000000 / current_speed; if (interval < full_interval) { accelerating = false; @@ -1216,7 +1215,8 @@ inline void linear_move(unsigned long axis_steps_remaining[]) // make linear mov accelerating = true; decelerating = true; } - long current_speed = long_max_speed_steps_per_second - (((long_steps_per_sqr_second / 10000) * ((micros() - start_move_micros) / 100))); + long current_speed = (long) ((long) max_speed_steps_per_second - ((((long) steps_per_sqr_second) / 10000) + * ((micros() - start_move_micros) / 100))); interval = 100000000 / current_speed; if (interval > max_interval) interval = max_interval; -- cgit v1.2.1 From ef0ad69571bf9e8ebe134280b1d584919790f878 Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Sat, 16 Jul 2011 11:57:42 +0200 Subject: Bugfix: smoothed temperature was initialized without respecting HEATER_USES_* --- Sprinter/Sprinter.pde | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'Sprinter/Sprinter.pde') diff --git a/Sprinter/Sprinter.pde b/Sprinter/Sprinter.pde index b31a629..79c66e6 100644 --- a/Sprinter/Sprinter.pde +++ b/Sprinter/Sprinter.pde @@ -133,7 +133,7 @@ float tt = 0, bt = 0; int temp_iState_max = 100 * PID_INTEGRAL_DRIVE_MAX / PID_IGAIN; #endif #ifdef SMOOTHING - uint32_t nma = SMOOTHFACTOR * analogRead(TEMP_0_PIN); + uint32_t nma = 0; #endif #ifdef WATCHPERIOD int watch_raw = -1000; @@ -1268,6 +1268,7 @@ inline void manage_heater() current_raw = read_max6675(); #endif #ifdef SMOOTHING + if (!nma) nma = SMOOTHFACTOR * current_raw; nma = (nma + current_raw) - (nma / SMOOTHFACTOR); current_raw = nma / SMOOTHFACTOR; #endif -- cgit v1.2.1 From 1b5dab70badff39191be9860f4515677d7670582 Mon Sep 17 00:00:00 2001 From: Alessandro Ranellucci Date: Sat, 16 Jul 2011 14:30:06 +0200 Subject: Bugfix: homing to max endstops didn't work because current_position was always reset to 0. --- Sprinter/Sprinter.pde | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'Sprinter/Sprinter.pde') diff --git a/Sprinter/Sprinter.pde b/Sprinter/Sprinter.pde index b31a629..d07feb5 100644 --- a/Sprinter/Sprinter.pde +++ b/Sprinter/Sprinter.pde @@ -471,8 +471,7 @@ inline void process_commands() case 28: //G28 Home all Axis one at a time saved_feedrate = feedrate; for(int i=0; i < NUM_AXIS; i++) { - destination[i] = 0; - current_position[i] = 0; + destination[i] = current_position[i]; } feedrate = 0; @@ -492,8 +491,8 @@ inline void process_commands() destination[0] = 10 * X_HOME_DIR; prepare_move(); - current_position[0] = 0; - destination[0] = 0; + current_position[0] = (X_HOME_DIR == -1) ? 0 : X_MAX_LENGTH; + destination[0] = current_position[0]; feedrate = 0; } } @@ -512,8 +511,8 @@ inline void process_commands() destination[1] = 10 * Y_HOME_DIR; prepare_move(); - current_position[1] = 0; - destination[1] = 0; + current_position[1] = (Y_HOME_DIR == -1) ? 0 : Y_MAX_LENGTH; + destination[1] = current_position[1]; feedrate = 0; } } @@ -532,8 +531,8 @@ inline void process_commands() destination[2] = 10 * Z_HOME_DIR; prepare_move(); - current_position[2] = 0; - destination[2] = 0; + current_position[2] = (Z_HOME_DIR == -1) ? 0 : Z_MAX_LENGTH; + destination[2] = current_position[2]; feedrate = 0; } -- cgit v1.2.1 From 3c44f0b3e3263e8c335b2f0c67743c60a4f4a9da Mon Sep 17 00:00:00 2001 From: kliment Date: Sat, 16 Jul 2011 21:58:17 +0200 Subject: Ignore bedtemp if no bed temp pin defined --- Sprinter/Sprinter.pde | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'Sprinter/Sprinter.pde') diff --git a/Sprinter/Sprinter.pde b/Sprinter/Sprinter.pde index 7e2a4fa..4be4788 100644 --- a/Sprinter/Sprinter.pde +++ b/Sprinter/Sprinter.pde @@ -663,7 +663,9 @@ inline void process_commands() #endif break; case 140: // M140 set bed temp - if (code_seen('S')) target_bed_raw = temp2analogBed(code_value()); + #if TEMP_1_PIN > -1 || defined BED_USES_AD595 + if (code_seen('S')) target_bed_raw = temp2analogBed(code_value()); + #endif break; case 105: // M105 #if (TEMP_0_PIN > -1) || defined (HEATER_USES_MAX6675)|| defined HEATER_USES_AD595 -- cgit v1.2.1 From b136a652c4a244038d0db40894e3558805d7c73a Mon Sep 17 00:00:00 2001 From: kliment Date: Sun, 17 Jul 2011 14:02:35 +0200 Subject: Add extra config for homing feedrate - fixes #28 --- Sprinter/Sprinter.pde | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'Sprinter/Sprinter.pde') diff --git a/Sprinter/Sprinter.pde b/Sprinter/Sprinter.pde index 4be4788..429dcb7 100644 --- a/Sprinter/Sprinter.pde +++ b/Sprinter/Sprinter.pde @@ -481,7 +481,7 @@ inline void process_commands() if ((X_MIN_PIN > -1 && X_HOME_DIR==-1) || (X_MAX_PIN > -1 && X_HOME_DIR==1)){ current_position[0] = 0; destination[0] = 1.5 * X_MAX_LENGTH * X_HOME_DIR; - feedrate = max_start_speed_units_per_second[0] * 60; + feedrate = homing_feedrate[0]; prepare_move(); current_position[0] = 0; @@ -501,7 +501,7 @@ inline void process_commands() if ((Y_MIN_PIN > -1 && Y_HOME_DIR==-1) || (Y_MAX_PIN > -1 && Y_HOME_DIR==1)){ current_position[1] = 0; destination[1] = 1.5 * Y_MAX_LENGTH * Y_HOME_DIR; - feedrate = max_start_speed_units_per_second[1] * 60; + feedrate = homing_feedrate[1]; prepare_move(); current_position[1] = 0; @@ -521,7 +521,7 @@ inline void process_commands() if ((Z_MIN_PIN > -1 && Z_HOME_DIR==-1) || (Z_MAX_PIN > -1 && Z_HOME_DIR==1)){ current_position[2] = 0; destination[2] = 1.5 * Z_MAX_LENGTH * Z_HOME_DIR; - feedrate = max_feedrate[2]/2; + feedrate = homing_feedrate[2]; prepare_move(); current_position[2] = 0; -- cgit v1.2.1