Code size reduced by almost 5KB

This commit is contained in:
DRracer 2019-08-21 09:59:51 +02:00
parent f07635d08a
commit a7c2aec04c
6 changed files with 163 additions and 161 deletions

View file

@ -2025,14 +2025,14 @@ static void do_blocking_move_to(float x, float y, float z) {
feedrate = homing_feedrate[Z_AXIS];
current_position[Z_AXIS] = z;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate/60, active_extruder);
plan_buffer_line_curposXYZE(feedrate/60, active_extruder);
st_synchronize();
feedrate = XY_TRAVEL_SPEED;
current_position[X_AXIS] = x;
current_position[Y_AXIS] = y;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate/60, active_extruder);
plan_buffer_line_curposXYZE(feedrate/60, active_extruder);
st_synchronize();
feedrate = oldFeedRate;
@ -2362,77 +2362,77 @@ void ramming() {
max_feedrate[E_AXIS] = 50;
//current_position[E_AXIS] -= 8;
//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2100 / 60, active_extruder);
//plan_buffer_line_curposXYZE(2100 / 60, active_extruder);
//current_position[E_AXIS] += 8;
//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2100 / 60, active_extruder);
//plan_buffer_line_curposXYZE(2100 / 60, active_extruder);
current_position[E_AXIS] += 5.4;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2800 / 60, active_extruder);
plan_buffer_line_curposXYZE(2800 / 60, active_extruder);
current_position[E_AXIS] += 3.2;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
current_position[E_AXIS] += 3;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3400 / 60, active_extruder);
plan_buffer_line_curposXYZE(3400 / 60, active_extruder);
st_synchronize();
max_feedrate[E_AXIS] = 80;
current_position[E_AXIS] -= 82;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 9500 / 60, active_extruder);
plan_buffer_line_curposXYZE(9500 / 60, active_extruder);
max_feedrate[E_AXIS] = 50;//tmp[E_AXIS];
current_position[E_AXIS] -= 20;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 1200 / 60, active_extruder);
plan_buffer_line_curposXYZE(1200 / 60, active_extruder);
current_position[E_AXIS] += 5;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder);
plan_buffer_line_curposXYZE(400 / 60, active_extruder);
current_position[E_AXIS] += 5;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
plan_buffer_line_curposXYZE(600 / 60, active_extruder);
current_position[E_AXIS] -= 10;
st_synchronize();
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
plan_buffer_line_curposXYZE(600 / 60, active_extruder);
current_position[E_AXIS] += 10;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
plan_buffer_line_curposXYZE(600 / 60, active_extruder);
current_position[E_AXIS] -= 10;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 800 / 60, active_extruder);
plan_buffer_line_curposXYZE(800 / 60, active_extruder);
current_position[E_AXIS] += 10;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 800 / 60, active_extruder);
plan_buffer_line_curposXYZE(800 / 60, active_extruder);
current_position[E_AXIS] -= 10;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 800 / 60, active_extruder);
plan_buffer_line_curposXYZE(800 / 60, active_extruder);
st_synchronize();
}
else {
//ABS
max_feedrate[E_AXIS] = 50;
//current_position[E_AXIS] -= 8;
//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2100 / 60, active_extruder);
//plan_buffer_line_curposXYZE(2100 / 60, active_extruder);
//current_position[E_AXIS] += 8;
//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2100 / 60, active_extruder);
//plan_buffer_line_curposXYZE(2100 / 60, active_extruder);
current_position[E_AXIS] += 3.1;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2000 / 60, active_extruder);
plan_buffer_line_curposXYZE(2000 / 60, active_extruder);
current_position[E_AXIS] += 3.1;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2500 / 60, active_extruder);
plan_buffer_line_curposXYZE(2500 / 60, active_extruder);
current_position[E_AXIS] += 4;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
st_synchronize();
//current_position[X_AXIS] += 23; //delay
//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600/60, active_extruder); //delay
//plan_buffer_line_curposXYZE(600/60, active_extruder); //delay
//current_position[X_AXIS] -= 23; //delay
//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600/60, active_extruder); //delay
//plan_buffer_line_curposXYZE(600/60, active_extruder); //delay
_delay(4700);
max_feedrate[E_AXIS] = 80;
current_position[E_AXIS] -= 92;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 9900 / 60, active_extruder);
plan_buffer_line_curposXYZE(9900 / 60, active_extruder);
max_feedrate[E_AXIS] = 50;//tmp[E_AXIS];
current_position[E_AXIS] -= 5;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 800 / 60, active_extruder);
plan_buffer_line_curposXYZE(800 / 60, active_extruder);
current_position[E_AXIS] += 5;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder);
plan_buffer_line_curposXYZE(400 / 60, active_extruder);
current_position[E_AXIS] -= 5;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
plan_buffer_line_curposXYZE(600 / 60, active_extruder);
st_synchronize();
current_position[E_AXIS] += 5;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
plan_buffer_line_curposXYZE(600 / 60, active_extruder);
current_position[E_AXIS] -= 5;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
plan_buffer_line_curposXYZE(600 / 60, active_extruder);
current_position[E_AXIS] += 5;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
plan_buffer_line_curposXYZE(600 / 60, active_extruder);
current_position[E_AXIS] -= 5;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder);
plan_buffer_line_curposXYZE(600 / 60, active_extruder);
st_synchronize();
}
@ -2491,7 +2491,7 @@ static void gcode_G28(bool home_x_axis, long home_x_value, bool home_y_axis, lon
if (home_all_axes) {
current_position[Z_AXIS] += MESH_HOME_Z_SEARCH;
feedrate = homing_feedrate[Z_AXIS];
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate / 60, active_extruder);
plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
st_synchronize();
}
#ifdef ENABLE_AUTO_BED_LEVELING
@ -2809,7 +2809,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
enable_endstops(false);
current_position[X_AXIS] += 5;
current_position[Y_AXIS] += 5;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
st_synchronize();
// Let the user move the Z axes up to the end stoppers.
@ -2859,7 +2859,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
bool endstops_enabled = enable_endstops(false);
current_position[Z_AXIS] -= 1; //move 1mm down with disabled endstop
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
st_synchronize();
// Move the print head close to the bed.
@ -2870,7 +2870,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
tmc2130_home_enter(Z_AXIS_MASK);
#endif //TMC2130
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
st_synchronize();
#ifdef TMC2130
@ -2910,7 +2910,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
clean_up_after_endstop_move(l_feedmultiply);
// Print head up.
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
st_synchronize();
//#ifndef NEW_XYZCAL
if (result >= 0)
@ -2930,7 +2930,7 @@ bool gcode_M45(bool onlyZ, int8_t verbosity_level)
clean_up_after_endstop_move(l_feedmultiply);
// Print head up.
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
st_synchronize();
// if (result >= 0) babystep_apply();
#endif //HEATBED_V2
@ -3040,21 +3040,18 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
//Retract E
current_position[E_AXIS] += e_shift;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
current_position[E_AXIS], FILAMENTCHANGE_RFEED, active_extruder);
plan_buffer_line_curposXYZE(FILAMENTCHANGE_RFEED, active_extruder);
st_synchronize();
//Lift Z
current_position[Z_AXIS] += z_shift;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
current_position[E_AXIS], FILAMENTCHANGE_ZFEED, active_extruder);
plan_buffer_line_curposXYZE(FILAMENTCHANGE_ZFEED, active_extruder);
st_synchronize();
//Move XY to side
current_position[X_AXIS] = x_position;
current_position[Y_AXIS] = y_position;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
current_position[E_AXIS], FILAMENTCHANGE_XYFEED, active_extruder);
plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED, active_extruder);
st_synchronize();
//Beep, manage nozzle heater and wait for user to start unload filament
@ -3079,8 +3076,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
lcd_set_cursor(0, 2);
lcd_puts_P(_T(MSG_PLEASE_WAIT));
current_position[X_AXIS] -= 100;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
current_position[E_AXIS], FILAMENTCHANGE_XYFEED, active_extruder);
plan_buffer_line_curposXYZE(FILAMENTCHANGE_XYFEED, active_extruder);
st_synchronize();
lcd_show_fullscreen_message_and_wait_P(_i("Please open idler and remove filament manually."));////MSG_CHECK_IDLER c=20 r=4
}
@ -3117,8 +3113,7 @@ static void gcode_M600(bool automatic, float x_position, float y_position, float
if (!automatic)
{
current_position[E_AXIS] += FILAMENTCHANGE_RECFEED;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
current_position[E_AXIS], FILAMENTCHANGE_EXFEED, active_extruder);
plan_buffer_line_curposXYZE(FILAMENTCHANGE_EXFEED, active_extruder);
}
//Move XY back
@ -3185,12 +3180,12 @@ void gcode_M701()
lcd_setstatuspgm(_T(MSG_LOADING_FILAMENT));
current_position[E_AXIS] += 40;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence
plan_buffer_line_curposXYZE(400 / 60, active_extruder); //fast sequence
st_synchronize();
marlin_rise_z();
current_position[E_AXIS] += 30;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400 / 60, active_extruder); //fast sequence
plan_buffer_line_curposXYZE(400 / 60, active_extruder); //fast sequence
load_filament_final_feed(); //slow sequence
st_synchronize();
@ -4389,15 +4384,15 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
if (result)
{
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
current_position[Z_AXIS] = 50;
current_position[Y_AXIS] = 180;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
st_synchronize();
lcd_show_fullscreen_message_and_wait_P(_T(MSG_REMOVE_STEEL_SHEET));
current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1);
current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
st_synchronize();
gcode_G28(false, false, true);
@ -4405,7 +4400,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
if ((current_temperature_pinda > 35) && (farm_mode == false)) {
//waiting for PIDNA probe to cool down in case that we are not in farm mode
current_position[Z_AXIS] = 100;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
if (lcd_wait_for_pinda(35) == false) { //waiting for PINDA probe to cool, if this takes more then time expected, temp. cal. fails
lcd_temp_cal_show_result(false);
break;
@ -4429,12 +4424,12 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
custom_message_state = 1;
lcd_setstatuspgm(_T(MSG_TEMP_CALIBRATION));
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
current_position[X_AXIS] = PINDA_PREHEAT_X;
current_position[Y_AXIS] = PINDA_PREHEAT_Y;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
current_position[Z_AXIS] = PINDA_PREHEAT_Z;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
st_synchronize();
while (current_temperature_pinda < start_temp)
@ -4446,10 +4441,10 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0); //invalidate temp. calibration in case that in will be aborted during the calibration process
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1);
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
st_synchronize();
bool find_z_result = find_bed_induction_sensor_point_z(-1.f);
@ -4477,12 +4472,12 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
setTargetBed(50 + 10 * (temp - 30) / 5);
// setTargetHotend(255, 0);
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
current_position[X_AXIS] = PINDA_PREHEAT_X;
current_position[Y_AXIS] = PINDA_PREHEAT_Y;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
current_position[Z_AXIS] = PINDA_PREHEAT_Z;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
st_synchronize();
while (current_temperature_pinda < temp)
{
@ -4490,10 +4485,10 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
serialecho_temperatures();
}
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
current_position[X_AXIS] = pgm_read_float(bed_ref_points_4);
current_position[Y_AXIS] = pgm_read_float(bed_ref_points_4 + 1);
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
st_synchronize();
find_z_result = find_bed_induction_sensor_point_z(-1.f);
if (find_z_result == false) {
@ -4533,7 +4528,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
current_position[X_AXIS] = PINDA_PREHEAT_X;
current_position[Y_AXIS] = PINDA_PREHEAT_Y;
current_position[Z_AXIS] = PINDA_PREHEAT_Z;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
st_synchronize();
while (abs(degBed() - PINDA_MIN_T) > 1) {
@ -4549,11 +4544,11 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
eeprom_update_byte((uint8_t*)EEPROM_CALIBRATION_STATUS_PINDA, 0); //invalidate temp. calibration in case that in will be aborted during the calibration process
current_position[Z_AXIS] = 5;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
current_position[X_AXIS] = BED_X0;
current_position[Y_AXIS] = BED_Y0;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
st_synchronize();
find_bed_induction_sensor_point_z(-1.f);
@ -4570,7 +4565,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
current_position[X_AXIS] = PINDA_PREHEAT_X;
current_position[Y_AXIS] = PINDA_PREHEAT_Y;
current_position[Z_AXIS] = PINDA_PREHEAT_Z;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
st_synchronize();
while (degBed() < t_c) {
delay_keep_alive(1000);
@ -4581,10 +4576,10 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
serialecho_temperatures();
}
current_position[Z_AXIS] = 5;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
current_position[X_AXIS] = BED_X0;
current_position[Y_AXIS] = BED_Y0;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
st_synchronize();
find_bed_induction_sensor_point_z(-1.f);
z_shift = (int)((current_position[Z_AXIS] - zero_z)*cs.axis_steps_per_unit[Z_AXIS]);
@ -4725,7 +4720,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
// Cycle through all points and probe them
// First move up. During this first movement, the babystepping will be reverted.
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 60, active_extruder);
plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60, active_extruder);
// The move to the first calibration point.
current_position[X_AXIS] = BED_X0;
current_position[Y_AXIS] = BED_Y0;
@ -4740,7 +4735,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]);
#endif //SUPPORT_VERBOSITY
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[X_AXIS] / 30, active_extruder);
plan_buffer_line_curposXYZE(homing_feedrate[X_AXIS] / 30, active_extruder);
// Wait until the move is finished.
st_synchronize();
@ -4792,7 +4787,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
if((ix == 0) && (iy == 0)) current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
else current_position[Z_AXIS] += 2.f / nMeasPoints; //use relative movement from Z coordinate where PINDa triggered on previous point. This makes calibration faster.
float init_z_bckp = current_position[Z_AXIS];
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
st_synchronize();
// Move to XY position of the sensor point.
@ -4813,7 +4808,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
#endif // SUPPORT_VERBOSITY
//printf_P(PSTR("after clamping: [%f;%f]\n"), current_position[X_AXIS], current_position[Y_AXIS]);
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], XY_AXIS_FEEDRATE, active_extruder);
plan_buffer_line_curposXYZE(XY_AXIS_FEEDRATE, active_extruder);
st_synchronize();
// Go down until endstop is hit
@ -4825,7 +4820,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
if (init_z_bckp - current_position[Z_AXIS] < 0.1f) { //broken cable or initial Z coordinate too low. Go to MESH_HOME_Z_SEARCH and repeat last step (z-probe) again to distinguish between these two cases.
//printf_P(PSTR("Another attempt! Current Z position: %f\n"), current_position[Z_AXIS]);
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
st_synchronize();
if (!find_bed_induction_sensor_point_z((has_z && mesh_point > 0) ? z0 - Z_CALIBRATION_THRESHOLD : -10.f, nProbeRetry)) { //if we have data from z calibration max allowed difference is 1mm for each point, if we dont have data max difference is 10mm from initial point
@ -4880,7 +4875,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
MYSERIAL.print(current_position[Z_AXIS], 5);
}
#endif // SUPPORT_VERBOSITY
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
st_synchronize();
if (mesh_point != nMeasPoints * nMeasPoints) {
Sound_MakeSound(e_SOUND_TYPE_StandardAlert);
@ -4897,14 +4892,14 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
// ~ Z-homing (can not be used "G28", because X & Y-homing would have been done before (Z-homing))
bState=enable_z_endstop(false);
current_position[Z_AXIS] -= 1;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
st_synchronize();
enable_z_endstop(true);
#ifdef TMC2130
tmc2130_home_enter(Z_AXIS_MASK);
#endif // TMC2130
current_position[Z_AXIS] = MESH_HOME_Z_SEARCH;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 40, active_extruder);
plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 40, active_extruder);
st_synchronize();
#ifdef TMC2130
tmc2130_home_exit();
@ -5037,7 +5032,7 @@ if(eSoundMode!=e_SOUND_MODE_SILENT)
//unretract (after PINDA preheat retraction)
if (degHotend(active_extruder) > EXTRUDE_MINTEMP && temp_cal_active == true && calibration_status_pinda() == true && target_temperature_bed >= 50) {
current_position[E_AXIS] += default_retraction;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder);
plan_buffer_line_curposXYZE(400, active_extruder);
}
KEEPALIVE_STATE(NOT_BUSY);
// Restore custom message state
@ -9022,7 +9017,7 @@ void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_poi
card.openFile(filename_wldsd, false);
/*destination[Z_AXIS] = mesh_home_z_search;
//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
//plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
for(int8_t i=0; i < NUM_AXIS; i++) {
@ -9056,7 +9051,7 @@ void bed_check(float x_dimension, float y_dimension, int x_points_num, int y_poi
if (iy & 1) ix = (x_points_num - 1) - ix; // Zig zag
float z0 = 0.f;
/*destination[Z_AXIS] = mesh_home_z_search;
//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
//plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
for(int8_t i=0; i < NUM_AXIS; i++) {
@ -9220,7 +9215,7 @@ void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_
card.openFile(filename_wldsd, false);
current_position[Z_AXIS] = mesh_home_z_search;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 60, active_extruder);
plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60, active_extruder);
int XY_AXIS_FEEDRATE = homing_feedrate[X_AXIS] / 20;
int Z_LIFT_FEEDRATE = homing_feedrate[Z_AXIS] / 40;
@ -9245,14 +9240,14 @@ void bed_analysis(float x_dimension, float y_dimension, int x_points_num, int y_
if (iy & 1) ix = (x_points_num - 1) - ix; // Zig zag
float z0 = 0.f;
current_position[Z_AXIS] = mesh_home_z_search;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], Z_LIFT_FEEDRATE, active_extruder);
plan_buffer_line_curposXYZE(Z_LIFT_FEEDRATE, active_extruder);
st_synchronize();
current_position[X_AXIS] = 13.f + ix * (x_dimension / (x_points_num - 1)) - bed_zero_ref_x + shift_x;
current_position[Y_AXIS] = 6.4f + iy * (y_dimension / (y_points_num - 1)) - bed_zero_ref_y + shift_y;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], XY_AXIS_FEEDRATE, active_extruder);
plan_buffer_line_curposXYZE(XY_AXIS_FEEDRATE, active_extruder);
st_synchronize();
if (!find_bed_induction_sensor_point_z(-10.f)) { //if we have data from z calibration max allowed difference is 1mm for each point, if we dont have data max difference is 10mm from initial point
@ -9366,12 +9361,12 @@ void temp_compensation_start() {
if (degHotend(active_extruder) > EXTRUDE_MINTEMP) {
current_position[E_AXIS] -= default_retraction;
}
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder);
plan_buffer_line_curposXYZE(400, active_extruder);
current_position[X_AXIS] = PINDA_PREHEAT_X;
current_position[Y_AXIS] = PINDA_PREHEAT_Y;
current_position[Z_AXIS] = PINDA_PREHEAT_Z;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
st_synchronize();
while (fabs(degBed() - target_temperature_bed) > 1) delay_keep_alive(1000);
@ -9492,17 +9487,17 @@ void long_pause() //long pause print
//retract
current_position[E_AXIS] -= default_retraction;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder);
plan_buffer_line_curposXYZE(400, active_extruder);
//lift z
current_position[Z_AXIS] += Z_PAUSE_LIFT;
if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
plan_buffer_line_curposXYZE(15, active_extruder);
//Move XY to side
current_position[X_AXIS] = X_PAUSE_POS;
current_position[Y_AXIS] = Y_PAUSE_POS;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 50, active_extruder);
plan_buffer_line_curposXYZE(50, active_extruder);
// Turn off the print fan
fanSpeed = 0;
@ -9654,7 +9649,7 @@ void uvlo_()
#if 0
// Move the print head to the side of the print until all the power stored in the power supply capacitors is depleted.
current_position[X_AXIS] = (current_position[X_AXIS] < 0.5f * (X_MIN_POS + X_MAX_POS)) ? X_MIN_POS : X_MAX_POS;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
plan_buffer_line_curposXYZE(500, active_extruder);
st_synchronize();
#endif
wdt_enable(WDTO_500MS);
@ -10290,7 +10285,7 @@ static void print_time_remaining_init()
void load_filament_final_feed()
{
current_position[E_AXIS]+= FILAMENTCHANGE_FINALFEED;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_EFEED_FINAL, active_extruder);
plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FINAL, active_extruder);
}
//! @brief Wait for user to check the state
@ -10420,22 +10415,22 @@ void M600_load_filament_movements()
do
{
current_position[E_AXIS] += 0.002;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
plan_buffer_line_curposXYZE(500, active_extruder);
delay_keep_alive(2);
}
while (!lcd_clicked());
st_synchronize();
current_position[E_AXIS] += bowden_length[mmu_extruder];
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000, active_extruder);
plan_buffer_line_curposXYZE(3000, active_extruder);
current_position[E_AXIS] += FIL_LOAD_LENGTH - 60;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 1400, active_extruder);
plan_buffer_line_curposXYZE(1400, active_extruder);
current_position[E_AXIS] += 40;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 400, active_extruder);
plan_buffer_line_curposXYZE(400, active_extruder);
current_position[E_AXIS] += 10;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 50, active_extruder);
plan_buffer_line_curposXYZE(50, active_extruder);
#else
current_position[E_AXIS]+= FILAMENTCHANGE_FIRSTFEED ;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], FILAMENTCHANGE_EFEED_FIRST, active_extruder);
plan_buffer_line_curposXYZE(FILAMENTCHANGE_EFEED_FIRST, active_extruder);
#endif
load_filament_final_feed();
lcd_loading_filament();

View file

@ -919,7 +919,7 @@ static inline void go_xy(float x, float y, float fr)
static inline void go_to_current(float fr)
{
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], fr, active_extruder);
plan_buffer_line_curposXYZE(fr, active_extruder);
st_synchronize();
}
@ -2769,7 +2769,7 @@ bool sample_z() {
//make space
current_position[Z_AXIS] += 150;
go_to_current(homing_feedrate[Z_AXIS] / 60);
//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate, active_extruder););
//plan_buffer_line_curposXYZE(feedrate, active_extruder););
lcd_show_fullscreen_message_and_wait_P(_T(MSG_PLACE_STEEL_SHEET));

View file

@ -537,7 +537,7 @@ void mmu_command(MmuCmd cmd)
void mmu_load_step(bool synchronize)
{
current_position[E_AXIS] = current_position[E_AXIS] + MMU_LOAD_FEEDRATE * 0.1;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
if (synchronize) st_synchronize();
}
@ -602,7 +602,7 @@ bool mmu_get_response(uint8_t move)
{
printf_P(PSTR("Unload 1\n"));
current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
st_synchronize();
}
}
@ -620,7 +620,7 @@ bool mmu_get_response(uint8_t move)
{
printf_P(PSTR("Unload 2\n"));
current_position[E_AXIS] = current_position[E_AXIS] - MMU_LOAD_FEEDRATE * MMU_LOAD_TIME_MS*0.001;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
st_synchronize();
}
}
@ -698,13 +698,13 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
//lift z
current_position[Z_AXIS] += Z_PAUSE_LIFT;
if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
plan_buffer_line_curposXYZE(15, active_extruder);
st_synchronize();
//Move XY to side
current_position[X_AXIS] = X_PAUSE_POS;
current_position[Y_AXIS] = Y_PAUSE_POS;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 50, active_extruder);
plan_buffer_line_curposXYZE(50, active_extruder);
st_synchronize();
}
if (turn_off_nozzle) {
@ -762,10 +762,10 @@ void manage_response(bool move_axes, bool turn_off_nozzle, uint8_t move)
lcd_display_message_fullscreen_P(_i("MMU OK. Resuming position..."));
current_position[X_AXIS] = x_position_bckp;
current_position[Y_AXIS] = y_position_bckp;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 50, active_extruder);
plan_buffer_line_curposXYZE(50, active_extruder);
st_synchronize();
current_position[Z_AXIS] = z_position_bckp;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
plan_buffer_line_curposXYZE(15, active_extruder);
st_synchronize();
}
else {
@ -804,19 +804,19 @@ void mmu_load_to_nozzle()
current_position[E_AXIS] += 7.2f;
}
float feedrate = 562;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate / 60, active_extruder);
plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
st_synchronize();
current_position[E_AXIS] += 14.4f;
feedrate = 871;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate / 60, active_extruder);
plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
st_synchronize();
current_position[E_AXIS] += 36.0f;
feedrate = 1393;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate / 60, active_extruder);
plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
st_synchronize();
current_position[E_AXIS] += 14.4f;
feedrate = 871;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate / 60, active_extruder);
plan_buffer_line_curposXYZE(feedrate / 60, active_extruder);
st_synchronize();
if (!saved_e_relative_mode) axis_relative_modes[E_AXIS] = false;
}
@ -903,7 +903,7 @@ void extr_mov(float shift, float feed_rate)
{ //move extruder no matter what the current heater temperature is
set_extrude_min_temp(.0);
current_position[E_AXIS] += shift;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feed_rate, active_extruder);
plan_buffer_line_curposXYZE(feed_rate, active_extruder);
set_extrude_min_temp(EXTRUDE_MINTEMP);
}
#endif //SNMM
@ -1069,8 +1069,7 @@ void mmu_filament_ramming()
for(uint8_t i = 0; i < (sizeof(ramming_sequence)/sizeof(E_step));++i)
{
current_position[E_AXIS] += pgm_read_float(&(ramming_sequence[i].extrude));
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
current_position[E_AXIS], pgm_read_float(&(ramming_sequence[i].feed_rate)), active_extruder);
plan_buffer_line_curposXYZE(pgm_read_float(&(ramming_sequence[i].feed_rate)), active_extruder);
st_synchronize();
}
}
@ -1140,39 +1139,39 @@ void extr_unload()
lcd_set_cursor(0, 2); lcd_puts_P(_T(MSG_PLEASE_WAIT));
if (current_position[Z_AXIS] < 15) {
current_position[Z_AXIS] += 15; //lifting in Z direction to make space for extrusion
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 25, active_extruder);
plan_buffer_line_curposXYZE(25, active_extruder);
}
current_position[E_AXIS] += 10; //extrusion
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 10, active_extruder);
plan_buffer_line_curposXYZE(10, active_extruder);
st_current_set(2, E_MOTOR_HIGH_CURRENT);
if (current_temperature[0] < 230) { //PLA & all other filaments
current_position[E_AXIS] += 5.4;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2800 / 60, active_extruder);
plan_buffer_line_curposXYZE(2800 / 60, active_extruder);
current_position[E_AXIS] += 3.2;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
current_position[E_AXIS] += 3;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3400 / 60, active_extruder);
plan_buffer_line_curposXYZE(3400 / 60, active_extruder);
}
else { //ABS
current_position[E_AXIS] += 3.1;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2000 / 60, active_extruder);
plan_buffer_line_curposXYZE(2000 / 60, active_extruder);
current_position[E_AXIS] += 3.1;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 2500 / 60, active_extruder);
plan_buffer_line_curposXYZE(2500 / 60, active_extruder);
current_position[E_AXIS] += 4;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 3000 / 60, active_extruder);
plan_buffer_line_curposXYZE(3000 / 60, active_extruder);
/*current_position[X_AXIS] += 23; //delay
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder); //delay
plan_buffer_line_curposXYZE(600 / 60, active_extruder); //delay
current_position[X_AXIS] -= 23; //delay
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 600 / 60, active_extruder); //delay*/
plan_buffer_line_curposXYZE(600 / 60, active_extruder); //delay*/
delay_keep_alive(4700);
}
max_feedrate[E_AXIS] = 80;
current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 60 + FIL_LOAD_LENGTH) / 2;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
plan_buffer_line_curposXYZE(500, active_extruder);
current_position[E_AXIS] -= (bowden_length[mmu_extruder] + 60 + FIL_LOAD_LENGTH) / 2;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 500, active_extruder);
plan_buffer_line_curposXYZE(500, active_extruder);
st_synchronize();
//st_current_init();
if (SilentMode != SILENT_MODE_OFF) st_current_set(2, tmp_motor[2]); //set back to normal operation currents
@ -1465,11 +1464,9 @@ bFilamentAction=false; // NOT in "mmu_fil_eject_menu(
static bool can_load()
{
current_position[E_AXIS] += 60;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
current_position[E_AXIS] -= 52;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
st_synchronize();
uint_least8_t filament_detected_count = 0;
@ -1479,8 +1476,7 @@ static bool can_load()
for(uint_least8_t i = 0; i < steps; ++i)
{
current_position[E_AXIS] -= e_increment;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS],
current_position[E_AXIS], MMU_LOAD_FEEDRATE, active_extruder);
plan_buffer_line_curposXYZE(MMU_LOAD_FEEDRATE, active_extruder);
st_synchronize();
if(0 == PIN_GET(IR_SENSOR_PIN))
{
@ -1601,13 +1597,13 @@ void mmu_continue_loading(bool blocking)
//lift z
current_position[Z_AXIS] += Z_PAUSE_LIFT;
if (current_position[Z_AXIS] > Z_MAX_POS) current_position[Z_AXIS] = Z_MAX_POS;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 15, active_extruder);
plan_buffer_line_curposXYZE(15, active_extruder);
st_synchronize();
//Move XY to side
current_position[X_AXIS] = X_PAUSE_POS;
current_position[Y_AXIS] = Y_PAUSE_POS;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 50, active_extruder);
plan_buffer_line_curposXYZE(50, active_extruder);
st_synchronize();
mmu_command(MmuCmd::U0);

View file

@ -651,11 +651,15 @@ void planner_abort_hard()
waiting_inside_plan_buffer_line_print_aborted = true;
}
void plan_buffer_line_curposXYZE(float feed_rate, uint8_t extruder) {
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feed_rate, extruder );
}
float junction_deviation = 0.1;
// Add a new linear movement to the buffer. steps_x, _y and _z is the absolute position in
// mm. Microseconds specify how many microseconds the move should take to perform. To aid acceleration
// calculation the caller must also provide the physical length of the line in millimeters.
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t &extruder)
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, uint8_t extruder)
{
// Calculate the buffer head after we push this byte
int next_buffer_head = next_block_index(block_buffer_head);

View file

@ -140,7 +140,14 @@ void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate
// Get the position applying the bed level matrix if enabled
vector_3 plan_get_position();
#else
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, const uint8_t &extruder);
/// Extracting common call of
/// plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], ...
/// saves almost 5KB.
/// The performance penalty is negligible, since these planned lines are usually maintenance moves with the extruder.
void plan_buffer_line_curposXYZE(float feed_rate, uint8_t extruder);
void plan_buffer_line(float x, float y, float z, const float &e, float feed_rate, uint8_t extruder);
//void plan_buffer_line(const float &x, const float &y, const float &z, const float &e, float feed_rate, const uint8_t &extruder);
#endif // ENABLE_AUTO_BED_LEVELING

View file

@ -2904,7 +2904,7 @@ static void _lcd_move(const char *name, int axis, int min, int max)
if (max_software_endstops && current_position[axis] > max) current_position[axis] = max;
lcd_encoder = 0;
world2machine_clamp(current_position[X_AXIS], current_position[Y_AXIS]);
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[axis] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[axis] / 60, active_extruder);
lcd_draw_update = 1;
}
}
@ -2929,7 +2929,7 @@ static void lcd_move_e()
{
current_position[E_AXIS] += float((int)lcd_encoder) * move_menu_scale;
lcd_encoder = 0;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[E_AXIS] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[E_AXIS] / 60, active_extruder);
lcd_draw_update = 1;
}
}
@ -3428,7 +3428,7 @@ bool lcd_calibrate_z_end_stop_manual(bool only_z)
// Only move up, whatever direction the user rotates the encoder.
current_position[Z_AXIS] += fabs(lcd_encoder);
lcd_encoder = 0;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[Z_AXIS] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[Z_AXIS] / 60, active_extruder);
}
}
if (lcd_clicked()) {
@ -4621,7 +4621,7 @@ void lcd_calibrate_pinda() {
lcd_set_cursor(0, 1); lcd_puts_P(_T(MSG_PLEASE_WAIT));
current_position[E_AXIS] += e_shift_calibration;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate, active_extruder);
plan_buffer_line_curposXYZE(feedrate, active_extruder);
st_synchronize();
lcd_display_message_fullscreen_P(msg_e_cal_knob);
@ -4644,7 +4644,7 @@ void lcd_calibrate_pinda() {
if (!planner_queue_full()) {
current_position[E_AXIS] += float(abs((int)lcd_encoder)) * 0.01; //0.05
lcd_encoder = 0;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], feedrate, active_extruder);
plan_buffer_line_curposXYZE(feedrate, active_extruder);
}
}
@ -4764,7 +4764,7 @@ void lcd_language()
static void wait_preheat()
{
current_position[Z_AXIS] = 100; //move in z axis to make space for loading filament
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], homing_feedrate[Z_AXIS] / 60, active_extruder);
plan_buffer_line_curposXYZE(homing_feedrate[Z_AXIS] / 60, active_extruder);
delay_keep_alive(2000);
lcd_display_message_fullscreen_P(_T(MSG_WIZARD_HEATING));
lcd_set_custom_characters();
@ -6218,13 +6218,13 @@ void unload_filament()
// extr_unload2();
current_position[E_AXIS] -= 45;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 5200 / 60, active_extruder);
plan_buffer_line_curposXYZE(5200 / 60, active_extruder);
st_synchronize();
current_position[E_AXIS] -= 15;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 1000 / 60, active_extruder);
plan_buffer_line_curposXYZE(1000 / 60, active_extruder);
st_synchronize();
current_position[E_AXIS] -= 20;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], 1000 / 60, active_extruder);
plan_buffer_line_curposXYZE(1000 / 60, active_extruder);
st_synchronize();
lcd_display_message_fullscreen_P(_T(MSG_PULL_OUT_FILAMENT));
@ -7308,7 +7308,7 @@ bool lcd_selftest()
//homeaxis(X_AXIS);
//homeaxis(Y_AXIS);
current_position[Z_AXIS] = current_position[Z_AXIS] + 10;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
st_synchronize();
_progress = lcd_selftest_screen(TestScreen::AxisZ, _progress, 3, true, 1500);
_result = lcd_selfcheck_axis(2, Z_MAX_POS);
@ -7322,7 +7322,7 @@ bool lcd_selftest()
if (_result)
{
current_position[Z_AXIS] = current_position[Z_AXIS] + 10;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
st_synchronize();
_progress = lcd_selftest_screen(TestScreen::Home, 0, 2, true, 0);
bool bres = tmc2130_home_calibrate(X_AXIS);
@ -7406,7 +7406,7 @@ bool lcd_selftest()
static void reset_crash_det(unsigned char axis) {
current_position[axis] += 10;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
st_synchronize();
if (eeprom_read_byte((uint8_t*)EEPROM_CRASH_DET)) tmc2130_sg_stop_on_crash = true;
}
@ -7430,7 +7430,7 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
if (axis == X_AXIS) { //there is collision between cables and PSU cover in X axis if Z coordinate is too low
current_position[Z_AXIS] += 17;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
tmc2130_home_enter(Z_AXIS_MASK);
st_synchronize();
tmc2130_home_exit();
@ -7439,7 +7439,7 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
// first axis length measurement begin
current_position[axis] -= (axis_length + margin);
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
st_synchronize();
@ -7449,11 +7449,11 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
current_position_init = st_get_position_mm(axis);
current_position[axis] += 2 * margin;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
st_synchronize();
current_position[axis] += axis_length;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
st_synchronize();
@ -7469,11 +7469,11 @@ static bool lcd_selfcheck_axis_sg(unsigned char axis) {
current_position[axis] -= margin;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
st_synchronize();
current_position[axis] -= (axis_length + margin);
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
st_synchronize();
@ -7542,13 +7542,13 @@ static bool lcd_selfcheck_axis(int _axis, int _travel)
if (_axis == X_AXIS) {
current_position[Z_AXIS] += 17;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
}
do {
current_position[_axis] = current_position[_axis] - 1;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
st_synchronize();
#ifdef TMC2130
if ((READ(Z_MIN_PIN) ^ (bool)Z_MIN_ENDSTOP_INVERTING))
@ -7602,7 +7602,7 @@ static bool lcd_selfcheck_axis(int _axis, int _travel)
//current_position[_axis] = current_position[_axis] + 15;
//plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
//plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
if (!_stepresult)
{
@ -7650,17 +7650,17 @@ static bool lcd_selfcheck_pulleys(int axis)
current_position_init = current_position[axis];
current_position[axis] += 2;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
for (i = 0; i < 5; i++) {
refresh_cmd_timeout();
current_position[axis] = current_position[axis] + move;
st_current_set(0, 850); //set motor current higher
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 200, active_extruder);
plan_buffer_line_curposXYZE(200, active_extruder);
st_synchronize();
if (SilentModeMenu != SILENT_MODE_OFF) st_current_set(0, tmp_motor[0]); //set back to normal operation currents
else st_current_set(0, tmp_motor_loud[0]); //set motor current back
current_position[axis] = current_position[axis] - move;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], 50, active_extruder);
plan_buffer_line_curposXYZE(50, active_extruder);
st_synchronize();
if (((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ||
((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1)) {
@ -7677,7 +7677,7 @@ static bool lcd_selfcheck_pulleys(int axis)
endstop_triggered = true;
if (current_position_init - 1 <= current_position[axis] && current_position_init + 1 >= current_position[axis]) {
current_position[axis] += (axis == X_AXIS) ? 13 : 9;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
st_synchronize();
return(true);
}
@ -7688,7 +7688,7 @@ static bool lcd_selfcheck_pulleys(int axis)
}
else {
current_position[axis] -= 1;
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[3], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
st_synchronize();
if (_millis() > timeout_counter) {
lcd_selftest_error(TestError::Pulley, (axis == 0) ? "X" : "Y", "");
@ -7712,7 +7712,7 @@ static bool lcd_selfcheck_endstops()
if ((READ(Y_MIN_PIN) ^ Y_MIN_ENDSTOP_INVERTING) == 1) current_position[1] += 10;
if ((READ(Z_MIN_PIN) ^ Z_MIN_ENDSTOP_INVERTING) == 1) current_position[2] += 10;
}
plan_buffer_line(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS], manual_feedrate[0] / 60, active_extruder);
plan_buffer_line_curposXYZE(manual_feedrate[0] / 60, active_extruder);
_delay(500);
if (((READ(X_MIN_PIN) ^ X_MIN_ENDSTOP_INVERTING) == 1) ||