Planner singleton class
This commit is contained in:
@@ -43,18 +43,18 @@
|
||||
*
|
||||
* 100 Version (char x4)
|
||||
*
|
||||
* 104 M92 XYZE axis_steps_per_unit (float x4)
|
||||
* 120 M203 XYZE max_feedrate (float x4)
|
||||
* 136 M201 XYZE max_acceleration_units_per_sq_second (uint32_t x4)
|
||||
* 152 M204 P acceleration (float)
|
||||
* 156 M204 R retract_acceleration (float)
|
||||
* 160 M204 T travel_acceleration (float)
|
||||
* 164 M205 S minimumfeedrate (float)
|
||||
* 168 M205 T mintravelfeedrate (float)
|
||||
* 172 M205 B minsegmenttime (ulong)
|
||||
* 176 M205 X max_xy_jerk (float)
|
||||
* 180 M205 Z max_z_jerk (float)
|
||||
* 184 M205 E max_e_jerk (float)
|
||||
* 104 M92 XYZE planner.axis_steps_per_unit (float x4)
|
||||
* 120 M203 XYZE planner.max_feedrate (float x4)
|
||||
* 136 M201 XYZE planner.max_acceleration_units_per_sq_second (uint32_t x4)
|
||||
* 152 M204 P planner.acceleration (float)
|
||||
* 156 M204 R planner.retract_acceleration (float)
|
||||
* 160 M204 T planner.travel_acceleration (float)
|
||||
* 164 M205 S planner.min_feedrate (float)
|
||||
* 168 M205 T planner.min_travel_feedrate (float)
|
||||
* 172 M205 B planner.min_segment_time (ulong)
|
||||
* 176 M205 X planner.max_xy_jerk (float)
|
||||
* 180 M205 Z planner.max_z_jerk (float)
|
||||
* 184 M205 E planner.max_e_jerk (float)
|
||||
* 188 M206 XYZ home_offset (float x3)
|
||||
*
|
||||
* Mesh bed leveling:
|
||||
@@ -173,18 +173,18 @@ void Config_StoreSettings() {
|
||||
char ver[4] = "000";
|
||||
int i = EEPROM_OFFSET;
|
||||
EEPROM_WRITE_VAR(i, ver); // invalidate data first
|
||||
EEPROM_WRITE_VAR(i, axis_steps_per_unit);
|
||||
EEPROM_WRITE_VAR(i, max_feedrate);
|
||||
EEPROM_WRITE_VAR(i, max_acceleration_units_per_sq_second);
|
||||
EEPROM_WRITE_VAR(i, acceleration);
|
||||
EEPROM_WRITE_VAR(i, retract_acceleration);
|
||||
EEPROM_WRITE_VAR(i, travel_acceleration);
|
||||
EEPROM_WRITE_VAR(i, minimumfeedrate);
|
||||
EEPROM_WRITE_VAR(i, mintravelfeedrate);
|
||||
EEPROM_WRITE_VAR(i, minsegmenttime);
|
||||
EEPROM_WRITE_VAR(i, max_xy_jerk);
|
||||
EEPROM_WRITE_VAR(i, max_z_jerk);
|
||||
EEPROM_WRITE_VAR(i, max_e_jerk);
|
||||
EEPROM_WRITE_VAR(i, planner.axis_steps_per_unit);
|
||||
EEPROM_WRITE_VAR(i, planner.max_feedrate);
|
||||
EEPROM_WRITE_VAR(i, planner.max_acceleration_units_per_sq_second);
|
||||
EEPROM_WRITE_VAR(i, planner.acceleration);
|
||||
EEPROM_WRITE_VAR(i, planner.retract_acceleration);
|
||||
EEPROM_WRITE_VAR(i, planner.travel_acceleration);
|
||||
EEPROM_WRITE_VAR(i, planner.min_feedrate);
|
||||
EEPROM_WRITE_VAR(i, planner.min_travel_feedrate);
|
||||
EEPROM_WRITE_VAR(i, planner.min_segment_time);
|
||||
EEPROM_WRITE_VAR(i, planner.max_xy_jerk);
|
||||
EEPROM_WRITE_VAR(i, planner.max_z_jerk);
|
||||
EEPROM_WRITE_VAR(i, planner.max_e_jerk);
|
||||
EEPROM_WRITE_VAR(i, home_offset);
|
||||
|
||||
uint8_t mesh_num_x = 3;
|
||||
@@ -351,22 +351,22 @@ void Config_RetrieveSettings() {
|
||||
float dummy = 0;
|
||||
|
||||
// version number match
|
||||
EEPROM_READ_VAR(i, axis_steps_per_unit);
|
||||
EEPROM_READ_VAR(i, max_feedrate);
|
||||
EEPROM_READ_VAR(i, max_acceleration_units_per_sq_second);
|
||||
EEPROM_READ_VAR(i, planner.axis_steps_per_unit);
|
||||
EEPROM_READ_VAR(i, planner.max_feedrate);
|
||||
EEPROM_READ_VAR(i, planner.max_acceleration_units_per_sq_second);
|
||||
|
||||
// steps per sq second need to be updated to agree with the units per sq second (as they are what is used in the planner)
|
||||
reset_acceleration_rates();
|
||||
planner.reset_acceleration_rates();
|
||||
|
||||
EEPROM_READ_VAR(i, acceleration);
|
||||
EEPROM_READ_VAR(i, retract_acceleration);
|
||||
EEPROM_READ_VAR(i, travel_acceleration);
|
||||
EEPROM_READ_VAR(i, minimumfeedrate);
|
||||
EEPROM_READ_VAR(i, mintravelfeedrate);
|
||||
EEPROM_READ_VAR(i, minsegmenttime);
|
||||
EEPROM_READ_VAR(i, max_xy_jerk);
|
||||
EEPROM_READ_VAR(i, max_z_jerk);
|
||||
EEPROM_READ_VAR(i, max_e_jerk);
|
||||
EEPROM_READ_VAR(i, planner.acceleration);
|
||||
EEPROM_READ_VAR(i, planner.retract_acceleration);
|
||||
EEPROM_READ_VAR(i, planner.travel_acceleration);
|
||||
EEPROM_READ_VAR(i, planner.min_feedrate);
|
||||
EEPROM_READ_VAR(i, planner.min_travel_feedrate);
|
||||
EEPROM_READ_VAR(i, planner.min_segment_time);
|
||||
EEPROM_READ_VAR(i, planner.max_xy_jerk);
|
||||
EEPROM_READ_VAR(i, planner.max_z_jerk);
|
||||
EEPROM_READ_VAR(i, planner.max_e_jerk);
|
||||
EEPROM_READ_VAR(i, home_offset);
|
||||
|
||||
uint8_t dummy_uint8 = 0, mesh_num_x = 0, mesh_num_y = 0;
|
||||
@@ -528,9 +528,9 @@ void Config_ResetDefault() {
|
||||
float tmp2[] = DEFAULT_MAX_FEEDRATE;
|
||||
long tmp3[] = DEFAULT_MAX_ACCELERATION;
|
||||
for (uint8_t i = 0; i < NUM_AXIS; i++) {
|
||||
axis_steps_per_unit[i] = tmp1[i];
|
||||
max_feedrate[i] = tmp2[i];
|
||||
max_acceleration_units_per_sq_second[i] = tmp3[i];
|
||||
planner.axis_steps_per_unit[i] = tmp1[i];
|
||||
planner.max_feedrate[i] = tmp2[i];
|
||||
planner.max_acceleration_units_per_sq_second[i] = tmp3[i];
|
||||
#if ENABLED(SCARA)
|
||||
if (i < COUNT(axis_scaling))
|
||||
axis_scaling[i] = 1;
|
||||
@@ -538,17 +538,17 @@ void Config_ResetDefault() {
|
||||
}
|
||||
|
||||
// steps per sq second need to be updated to agree with the units per sq second
|
||||
reset_acceleration_rates();
|
||||
planner.reset_acceleration_rates();
|
||||
|
||||
acceleration = DEFAULT_ACCELERATION;
|
||||
retract_acceleration = DEFAULT_RETRACT_ACCELERATION;
|
||||
travel_acceleration = DEFAULT_TRAVEL_ACCELERATION;
|
||||
minimumfeedrate = DEFAULT_MINIMUMFEEDRATE;
|
||||
minsegmenttime = DEFAULT_MINSEGMENTTIME;
|
||||
mintravelfeedrate = DEFAULT_MINTRAVELFEEDRATE;
|
||||
max_xy_jerk = DEFAULT_XYJERK;
|
||||
max_z_jerk = DEFAULT_ZJERK;
|
||||
max_e_jerk = DEFAULT_EJERK;
|
||||
planner.acceleration = DEFAULT_ACCELERATION;
|
||||
planner.retract_acceleration = DEFAULT_RETRACT_ACCELERATION;
|
||||
planner.travel_acceleration = DEFAULT_TRAVEL_ACCELERATION;
|
||||
planner.min_feedrate = DEFAULT_MINIMUMFEEDRATE;
|
||||
planner.min_segment_time = DEFAULT_MINSEGMENTTIME;
|
||||
planner.min_travel_feedrate = DEFAULT_MINTRAVELFEEDRATE;
|
||||
planner.max_xy_jerk = DEFAULT_XYJERK;
|
||||
planner.max_z_jerk = DEFAULT_ZJERK;
|
||||
planner.max_e_jerk = DEFAULT_EJERK;
|
||||
home_offset[X_AXIS] = home_offset[Y_AXIS] = home_offset[Z_AXIS] = 0;
|
||||
|
||||
#if ENABLED(MESH_BED_LEVELING)
|
||||
@@ -653,10 +653,10 @@ void Config_PrintSettings(bool forReplay) {
|
||||
SERIAL_ECHOLNPGM("Steps per unit:");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M92 X", axis_steps_per_unit[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y", axis_steps_per_unit[Y_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z", axis_steps_per_unit[Z_AXIS]);
|
||||
SERIAL_ECHOPAIR(" E", axis_steps_per_unit[E_AXIS]);
|
||||
SERIAL_ECHOPAIR(" M92 X", planner.axis_steps_per_unit[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y", planner.axis_steps_per_unit[Y_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z", planner.axis_steps_per_unit[Z_AXIS]);
|
||||
SERIAL_ECHOPAIR(" E", planner.axis_steps_per_unit[E_AXIS]);
|
||||
SERIAL_EOL;
|
||||
|
||||
CONFIG_ECHO_START;
|
||||
@@ -677,10 +677,10 @@ void Config_PrintSettings(bool forReplay) {
|
||||
SERIAL_ECHOLNPGM("Maximum feedrates (mm/s):");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M203 X", max_feedrate[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y", max_feedrate[Y_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z", max_feedrate[Z_AXIS]);
|
||||
SERIAL_ECHOPAIR(" E", max_feedrate[E_AXIS]);
|
||||
SERIAL_ECHOPAIR(" M203 X", planner.max_feedrate[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y", planner.max_feedrate[Y_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z", planner.max_feedrate[Z_AXIS]);
|
||||
SERIAL_ECHOPAIR(" E", planner.max_feedrate[E_AXIS]);
|
||||
SERIAL_EOL;
|
||||
|
||||
CONFIG_ECHO_START;
|
||||
@@ -688,19 +688,19 @@ void Config_PrintSettings(bool forReplay) {
|
||||
SERIAL_ECHOLNPGM("Maximum Acceleration (mm/s2):");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M201 X", max_acceleration_units_per_sq_second[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y", max_acceleration_units_per_sq_second[Y_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z", max_acceleration_units_per_sq_second[Z_AXIS]);
|
||||
SERIAL_ECHOPAIR(" E", max_acceleration_units_per_sq_second[E_AXIS]);
|
||||
SERIAL_ECHOPAIR(" M201 X", planner.max_acceleration_units_per_sq_second[X_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Y", planner.max_acceleration_units_per_sq_second[Y_AXIS]);
|
||||
SERIAL_ECHOPAIR(" Z", planner.max_acceleration_units_per_sq_second[Z_AXIS]);
|
||||
SERIAL_ECHOPAIR(" E", planner.max_acceleration_units_per_sq_second[E_AXIS]);
|
||||
SERIAL_EOL;
|
||||
CONFIG_ECHO_START;
|
||||
if (!forReplay) {
|
||||
SERIAL_ECHOLNPGM("Accelerations: P=printing, R=retract and T=travel");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M204 P", acceleration);
|
||||
SERIAL_ECHOPAIR(" R", retract_acceleration);
|
||||
SERIAL_ECHOPAIR(" T", travel_acceleration);
|
||||
SERIAL_ECHOPAIR(" M204 P", planner.acceleration);
|
||||
SERIAL_ECHOPAIR(" R", planner.retract_acceleration);
|
||||
SERIAL_ECHOPAIR(" T", planner.travel_acceleration);
|
||||
SERIAL_EOL;
|
||||
|
||||
CONFIG_ECHO_START;
|
||||
@@ -708,12 +708,12 @@ void Config_PrintSettings(bool forReplay) {
|
||||
SERIAL_ECHOLNPGM("Advanced variables: S=Min feedrate (mm/s), T=Min travel feedrate (mm/s), B=minimum segment time (ms), X=maximum XY jerk (mm/s), Z=maximum Z jerk (mm/s), E=maximum E jerk (mm/s)");
|
||||
CONFIG_ECHO_START;
|
||||
}
|
||||
SERIAL_ECHOPAIR(" M205 S", minimumfeedrate);
|
||||
SERIAL_ECHOPAIR(" T", mintravelfeedrate);
|
||||
SERIAL_ECHOPAIR(" B", minsegmenttime);
|
||||
SERIAL_ECHOPAIR(" X", max_xy_jerk);
|
||||
SERIAL_ECHOPAIR(" Z", max_z_jerk);
|
||||
SERIAL_ECHOPAIR(" E", max_e_jerk);
|
||||
SERIAL_ECHOPAIR(" M205 S", planner.min_feedrate);
|
||||
SERIAL_ECHOPAIR(" T", planner.min_travel_feedrate);
|
||||
SERIAL_ECHOPAIR(" B", planner.min_segment_time);
|
||||
SERIAL_ECHOPAIR(" X", planner.max_xy_jerk);
|
||||
SERIAL_ECHOPAIR(" Z", planner.max_z_jerk);
|
||||
SERIAL_ECHOPAIR(" E", planner.max_e_jerk);
|
||||
SERIAL_EOL;
|
||||
|
||||
CONFIG_ECHO_START;
|
||||
|
Reference in New Issue
Block a user