2012-11-07 23:16:43 +01:00
|
|
|
#include "Marlin.h"
|
|
|
|
#include "planner.h"
|
|
|
|
#include "temperature.h"
|
|
|
|
#include "ultralcd.h"
|
|
|
|
#include "ConfigurationStore.h"
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
|
|
|
|
void _EEPROM_writeData(int &pos, uint8_t* value, uint8_t size)
|
|
|
|
{
|
|
|
|
do
|
|
|
|
{
|
|
|
|
eeprom_write_byte((unsigned char*)pos, *value);
|
|
|
|
pos++;
|
|
|
|
value++;
|
2012-11-07 23:16:43 +01:00
|
|
|
}while(--size);
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
}
|
2012-11-07 23:16:43 +01:00
|
|
|
#define EEPROM_WRITE_VAR(pos, value) _EEPROM_writeData(pos, (uint8_t*)&value, sizeof(value))
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
void _EEPROM_readData(int &pos, uint8_t* value, uint8_t size)
|
|
|
|
{
|
|
|
|
do
|
|
|
|
{
|
|
|
|
*value = eeprom_read_byte((unsigned char*)pos);
|
|
|
|
pos++;
|
|
|
|
value++;
|
2012-11-07 23:16:43 +01:00
|
|
|
}while(--size);
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
}
|
2012-11-07 23:16:43 +01:00
|
|
|
#define EEPROM_READ_VAR(pos, value) _EEPROM_readData(pos, (uint8_t*)&value, sizeof(value))
|
|
|
|
//======================================================================================
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#define EEPROM_OFFSET 100
|
|
|
|
|
|
|
|
|
|
|
|
// IMPORTANT: Whenever there are changes made to the variables stored in EEPROM
|
|
|
|
// in the functions below, also increment the version number. This makes sure that
|
|
|
|
// the default values are used whenever there is a change to the data, to prevent
|
|
|
|
// wrong data being written to the variables.
|
|
|
|
// ALSO: always make sure the variables in the Store and retrieve sections are in the same order.
|
2014-06-23 17:09:57 +02:00
|
|
|
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#define EEPROM_VERSION "V14"
|
2012-11-07 23:16:43 +01:00
|
|
|
|
|
|
|
#ifdef EEPROM_SETTINGS
|
|
|
|
void Config_StoreSettings()
|
|
|
|
{
|
|
|
|
char ver[4]= "000";
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
int i=EEPROM_OFFSET;
|
2012-11-07 23:16:43 +01:00
|
|
|
EEPROM_WRITE_VAR(i,ver); // invalidate data first
|
2014-06-23 17:09:57 +02:00
|
|
|
EEPROM_WRITE_VAR(i,axis_steps_per_unit);
|
2012-11-07 23:16:43 +01:00
|
|
|
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,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);
|
2014-10-05 22:20:53 +02:00
|
|
|
EEPROM_WRITE_VAR(i,add_homing);
|
2013-08-28 01:15:20 +02:00
|
|
|
#ifdef DELTA
|
|
|
|
EEPROM_WRITE_VAR(i,endstop_adj);
|
2014-02-18 05:50:59 +01:00
|
|
|
EEPROM_WRITE_VAR(i,delta_radius);
|
|
|
|
EEPROM_WRITE_VAR(i,delta_diagonal_rod);
|
|
|
|
EEPROM_WRITE_VAR(i,delta_segments_per_second);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//DELTA
|
2012-11-10 14:37:01 +01:00
|
|
|
#ifndef ULTIPANEL
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
int plaPreheatHotendTemp = PLA_PREHEAT_HOTEND_TEMP, plaPreheatHPBTemp = PLA_PREHEAT_HPB_TEMP, plaPreheatFanSpeed = PLA_PREHEAT_FAN_SPEED;
|
|
|
|
int absPreheatHotendTemp = ABS_PREHEAT_HOTEND_TEMP, absPreheatHPBTemp = ABS_PREHEAT_HPB_TEMP, absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//ULTIPANEL
|
2012-11-07 23:16:43 +01:00
|
|
|
EEPROM_WRITE_VAR(i,plaPreheatHotendTemp);
|
|
|
|
EEPROM_WRITE_VAR(i,plaPreheatHPBTemp);
|
|
|
|
EEPROM_WRITE_VAR(i,plaPreheatFanSpeed);
|
|
|
|
EEPROM_WRITE_VAR(i,absPreheatHotendTemp);
|
|
|
|
EEPROM_WRITE_VAR(i,absPreheatHPBTemp);
|
|
|
|
EEPROM_WRITE_VAR(i,absPreheatFanSpeed);
|
2014-01-16 21:13:46 +01:00
|
|
|
EEPROM_WRITE_VAR(i,zprobe_zoffset);
|
2012-11-07 23:16:43 +01:00
|
|
|
#ifdef PIDTEMP
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
float dummy = 0.0f;
|
|
|
|
for (int e = 0; e < 3; e++)
|
|
|
|
{
|
|
|
|
if (e < EXTRUDERS)
|
|
|
|
{
|
2015-01-11 03:50:17 +01:00
|
|
|
EEPROM_WRITE_VAR(i,PID_PARAM(Kp,e));
|
|
|
|
EEPROM_WRITE_VAR(i,PID_PARAM(Ki,e));
|
|
|
|
EEPROM_WRITE_VAR(i,PID_PARAM(Kd,e));
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#ifdef PID_ADD_EXTRUSION_RATE
|
2015-01-11 03:50:17 +01:00
|
|
|
EEPROM_WRITE_VAR(i,PID_PARAM(Kc,e));
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#else//PID_ADD_EXTRUSION_RATE
|
|
|
|
dummy = 1.0f; // 1.0 = default kc
|
|
|
|
EEPROM_WRITE_VAR(dummmy);
|
|
|
|
#endif//PID_ADD_EXTRUSION_RATE
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
dummy = 3000.0f;
|
|
|
|
EEPROM_WRITE_VAR(i, dummy);
|
|
|
|
dummy = 0.0f;
|
|
|
|
EEPROM_WRITE_VAR(i,dummy);
|
|
|
|
EEPROM_WRITE_VAR(i,dummy);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#else//PIDTEMP
|
2013-04-12 18:04:32 +02:00
|
|
|
float dummy = 3000.0f;
|
|
|
|
EEPROM_WRITE_VAR(i,dummy);
|
|
|
|
dummy = 0.0f;
|
|
|
|
EEPROM_WRITE_VAR(i,dummy);
|
|
|
|
EEPROM_WRITE_VAR(i,dummy);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//PIDTEMP
|
2013-07-14 10:28:26 +02:00
|
|
|
#ifndef DOGLCD
|
|
|
|
int lcd_contrast = 32;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//DOGLCD
|
2013-07-14 10:28:26 +02:00
|
|
|
EEPROM_WRITE_VAR(i,lcd_contrast);
|
2014-06-23 17:09:57 +02:00
|
|
|
#ifdef SCARA
|
|
|
|
EEPROM_WRITE_VAR(i,axis_scaling); // Add scaling for SCARA
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//SCARA
|
2014-12-29 02:43:14 +01:00
|
|
|
#ifdef FWRETRACT
|
|
|
|
EEPROM_WRITE_VAR(i,autoretract_enabled);
|
|
|
|
EEPROM_WRITE_VAR(i,retract_length);
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
EEPROM_WRITE_VAR(i,retract_length_swap);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EXTRUDERS > 1
|
2014-12-29 02:43:14 +01:00
|
|
|
EEPROM_WRITE_VAR(i,retract_feedrate);
|
|
|
|
EEPROM_WRITE_VAR(i,retract_zlift);
|
|
|
|
EEPROM_WRITE_VAR(i,retract_recover_length);
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
EEPROM_WRITE_VAR(i,retract_recover_length_swap);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EXTRUDERS > 1
|
2014-12-29 02:43:14 +01:00
|
|
|
EEPROM_WRITE_VAR(i,retract_recover_feedrate);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//FWRETRACT
|
2014-12-29 02:43:14 +01:00
|
|
|
|
|
|
|
// Save filament sizes
|
|
|
|
EEPROM_WRITE_VAR(i, volumetric_enabled);
|
|
|
|
EEPROM_WRITE_VAR(i, filament_size[0]);
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
EEPROM_WRITE_VAR(i, filament_size[1]);
|
|
|
|
#if EXTRUDERS > 2
|
|
|
|
EEPROM_WRITE_VAR(i, filament_size[2]);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EXTRUDERS > 2
|
|
|
|
#endif//EXTRUDERS > 1
|
2014-12-29 02:43:14 +01:00
|
|
|
|
2012-11-07 23:16:43 +01:00
|
|
|
char ver2[4]=EEPROM_VERSION;
|
|
|
|
i=EEPROM_OFFSET;
|
|
|
|
EEPROM_WRITE_VAR(i,ver2); // validate data
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Settings Stored");
|
|
|
|
}
|
|
|
|
#endif //EEPROM_SETTINGS
|
|
|
|
|
|
|
|
|
2013-09-14 13:50:09 +02:00
|
|
|
#ifndef DISABLE_M503
|
2012-11-07 23:16:43 +01:00
|
|
|
void Config_PrintSettings()
|
|
|
|
{ // Always have this function, even with EEPROM_SETTINGS disabled, the current values will be shown
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Steps per unit:");
|
|
|
|
SERIAL_ECHO_START;
|
2014-12-18 17:13:08 +01:00
|
|
|
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]);
|
2012-11-07 23:16:43 +01:00
|
|
|
SERIAL_ECHOLN("");
|
|
|
|
|
|
|
|
SERIAL_ECHO_START;
|
2014-06-23 17:09:57 +02:00
|
|
|
#ifdef SCARA
|
|
|
|
SERIAL_ECHOLNPGM("Scaling factors:");
|
|
|
|
SERIAL_ECHO_START;
|
2014-12-18 17:13:08 +01:00
|
|
|
SERIAL_ECHOPAIR(" M365 X",axis_scaling[X_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR(" Y",axis_scaling[Y_AXIS]);
|
|
|
|
SERIAL_ECHOPAIR(" Z",axis_scaling[Z_AXIS]);
|
2014-06-23 17:09:57 +02:00
|
|
|
SERIAL_ECHOLN("");
|
|
|
|
|
|
|
|
SERIAL_ECHO_START;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//SCARA
|
2012-11-07 23:16:43 +01:00
|
|
|
SERIAL_ECHOLNPGM("Maximum feedrates (mm/s):");
|
|
|
|
SERIAL_ECHO_START;
|
2014-12-18 17:13:08 +01:00
|
|
|
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]);
|
2012-11-07 23:16:43 +01:00
|
|
|
SERIAL_ECHOLN("");
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
|
2012-11-07 23:16:43 +01:00
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Maximum Acceleration (mm/s2):");
|
|
|
|
SERIAL_ECHO_START;
|
2014-12-18 17:13:08 +01:00
|
|
|
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]);
|
2012-11-07 23:16:43 +01:00
|
|
|
SERIAL_ECHOLN("");
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Acceleration: S=acceleration, T=retract acceleration");
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M204 S",acceleration );
|
|
|
|
SERIAL_ECHOPAIR(" T" ,retract_acceleration);
|
|
|
|
SERIAL_ECHOLN("");
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
|
2012-11-07 23:16:43 +01:00
|
|
|
SERIAL_ECHO_START;
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
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)");
|
2012-11-07 23:16:43 +01:00
|
|
|
SERIAL_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_ECHOLN("");
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
|
2012-11-07 23:16:43 +01:00
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Home offset (mm):");
|
|
|
|
SERIAL_ECHO_START;
|
2014-12-18 17:13:08 +01:00
|
|
|
SERIAL_ECHOPAIR(" M206 X",add_homing[X_AXIS] );
|
|
|
|
SERIAL_ECHOPAIR(" Y" ,add_homing[Y_AXIS] );
|
|
|
|
SERIAL_ECHOPAIR(" Z" ,add_homing[Z_AXIS] );
|
2012-11-07 23:16:43 +01:00
|
|
|
SERIAL_ECHOLN("");
|
2013-08-28 01:15:20 +02:00
|
|
|
#ifdef DELTA
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Endstop adjustement (mm):");
|
|
|
|
SERIAL_ECHO_START;
|
2014-12-18 17:13:08 +01:00
|
|
|
SERIAL_ECHOPAIR(" M666 X",endstop_adj[X_AXIS] );
|
|
|
|
SERIAL_ECHOPAIR(" Y" ,endstop_adj[Y_AXIS] );
|
|
|
|
SERIAL_ECHOPAIR(" Z" ,endstop_adj[Z_AXIS] );
|
2014-02-18 05:50:59 +01:00
|
|
|
SERIAL_ECHOLN("");
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Delta settings: L=delta_diagonal_rod, R=delta_radius, S=delta_segments_per_second");
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M665 L",delta_diagonal_rod );
|
|
|
|
SERIAL_ECHOPAIR(" R" ,delta_radius );
|
|
|
|
SERIAL_ECHOPAIR(" S" ,delta_segments_per_second );
|
|
|
|
SERIAL_ECHOLN("");
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//DELTA
|
2012-11-07 23:16:43 +01:00
|
|
|
#ifdef PIDTEMP
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("PID settings:");
|
2015-01-10 06:44:28 +01:00
|
|
|
SERIAL_ECHO_START;
|
2015-01-11 03:50:17 +01:00
|
|
|
SERIAL_ECHOPAIR(" M301 P", PID_PARAM(Kp,0)); // for compatibility with hosts, only echos values for E0
|
|
|
|
SERIAL_ECHOPAIR(" I", unscalePID_i(PID_PARAM(Ki, 0)));
|
|
|
|
SERIAL_ECHOPAIR(" D", unscalePID_d(PID_PARAM(Kd, 0)));
|
2015-01-10 06:44:28 +01:00
|
|
|
SERIAL_ECHOLN("");
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//PIDTEMP
|
2014-03-16 17:00:02 +01:00
|
|
|
#ifdef FWRETRACT
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Retract: S=Length (mm) F:Speed (mm/m) Z: ZLift (mm)");
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M207 S",retract_length);
|
2014-04-04 17:37:46 +02:00
|
|
|
SERIAL_ECHOPAIR(" F" ,retract_feedrate*60);
|
2014-03-16 17:00:02 +01:00
|
|
|
SERIAL_ECHOPAIR(" Z" ,retract_zlift);
|
|
|
|
SERIAL_ECHOLN("");
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Recover: S=Extra length (mm) F:Speed (mm/m)");
|
|
|
|
SERIAL_ECHO_START;
|
2014-12-29 02:43:14 +01:00
|
|
|
SERIAL_ECHOPAIR(" M208 S",retract_recover_length);
|
|
|
|
SERIAL_ECHOPAIR(" F", retract_recover_feedrate*60);
|
|
|
|
SERIAL_ECHOLN("");
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Auto-Retract: S=0 to disable, 1 to interpret extrude-only moves as retracts or recoveries");
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M209 S", (unsigned long)(autoretract_enabled ? 1 : 0));
|
|
|
|
SERIAL_ECHOLN("");
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Multi-extruder settings:");
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" Swap retract length (mm): ", retract_length_swap);
|
|
|
|
SERIAL_ECHOLN("");
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" Swap rec. addl. length (mm): ", retract_recover_length_swap);
|
|
|
|
SERIAL_ECHOLN("");
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EXTRUDERS > 1
|
2014-12-29 02:43:14 +01:00
|
|
|
SERIAL_ECHO_START;
|
|
|
|
if (volumetric_enabled) {
|
|
|
|
SERIAL_ECHOLNPGM("Filament settings:");
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M200 D", filament_size[0]);
|
|
|
|
SERIAL_ECHOLN("");
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M200 T1 D", filament_size[1]);
|
|
|
|
SERIAL_ECHOLN("");
|
|
|
|
#if EXTRUDERS > 2
|
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOPAIR(" M200 T2 D", filament_size[2]);
|
|
|
|
SERIAL_ECHOLN("");
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EXTRUDERS > 2
|
|
|
|
#endif//EXTRUDERS > 1
|
2014-12-29 02:43:14 +01:00
|
|
|
} else {
|
|
|
|
SERIAL_ECHOLNPGM("Filament settings: Disabled");
|
|
|
|
}
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//FWRETRACT
|
2014-12-29 02:47:59 +01:00
|
|
|
}
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//DISABLE_M503
|
2012-11-07 23:16:43 +01:00
|
|
|
|
|
|
|
|
|
|
|
#ifdef EEPROM_SETTINGS
|
|
|
|
void Config_RetrieveSettings()
|
|
|
|
{
|
|
|
|
int i=EEPROM_OFFSET;
|
|
|
|
char stored_ver[4];
|
|
|
|
char ver[4]=EEPROM_VERSION;
|
|
|
|
EEPROM_READ_VAR(i,stored_ver); //read stored version
|
|
|
|
// SERIAL_ECHOLN("Version: [" << ver << "] Stored version: [" << stored_ver << "]");
|
|
|
|
if (strncmp(ver,stored_ver,3) == 0)
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
{
|
2012-11-07 23:16:43 +01:00
|
|
|
// version number match
|
2014-06-23 17:09:57 +02:00
|
|
|
EEPROM_READ_VAR(i,axis_steps_per_unit);
|
2012-11-07 23:16:43 +01:00
|
|
|
EEPROM_READ_VAR(i,max_feedrate);
|
|
|
|
EEPROM_READ_VAR(i,max_acceleration_units_per_sq_second);
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
|
|
|
|
// 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();
|
|
|
|
|
2012-11-07 23:16:43 +01:00
|
|
|
EEPROM_READ_VAR(i,acceleration);
|
|
|
|
EEPROM_READ_VAR(i,retract_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);
|
2014-10-05 22:20:53 +02:00
|
|
|
EEPROM_READ_VAR(i,add_homing);
|
2013-08-28 01:15:20 +02:00
|
|
|
#ifdef DELTA
|
2014-02-18 05:50:59 +01:00
|
|
|
EEPROM_READ_VAR(i,endstop_adj);
|
|
|
|
EEPROM_READ_VAR(i,delta_radius);
|
|
|
|
EEPROM_READ_VAR(i,delta_diagonal_rod);
|
|
|
|
EEPROM_READ_VAR(i,delta_segments_per_second);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//DELTA
|
2012-11-10 14:37:01 +01:00
|
|
|
#ifndef ULTIPANEL
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
int plaPreheatHotendTemp, plaPreheatHPBTemp, plaPreheatFanSpeed;
|
|
|
|
int absPreheatHotendTemp, absPreheatHPBTemp, absPreheatFanSpeed;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//ULTIPANEL
|
2012-11-07 23:16:43 +01:00
|
|
|
EEPROM_READ_VAR(i,plaPreheatHotendTemp);
|
|
|
|
EEPROM_READ_VAR(i,plaPreheatHPBTemp);
|
|
|
|
EEPROM_READ_VAR(i,plaPreheatFanSpeed);
|
|
|
|
EEPROM_READ_VAR(i,absPreheatHotendTemp);
|
|
|
|
EEPROM_READ_VAR(i,absPreheatHPBTemp);
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
EEPROM_READ_VAR(i,absPreheatFanSpeed);
|
2014-01-16 21:13:46 +01:00
|
|
|
EEPROM_READ_VAR(i,zprobe_zoffset);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#ifdef PIDTEMP
|
|
|
|
float dummy = 0.0f;
|
|
|
|
for (int e = 0; e < 3; e++) // 3 = max extruders supported by marlin
|
|
|
|
{
|
|
|
|
if (e < EXTRUDERS)
|
|
|
|
{
|
|
|
|
// do not need to scale PID values as the values in EEPROM are already scaled
|
2015-01-11 03:50:17 +01:00
|
|
|
EEPROM_READ_VAR(i,PID_PARAM(Kp,e));
|
|
|
|
EEPROM_READ_VAR(i,PID_PARAM(Ki,e));
|
|
|
|
EEPROM_READ_VAR(i,PID_PARAM(Kd,e));
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#ifdef PID_ADD_EXTRUSION_RATE
|
2015-01-11 03:50:17 +01:00
|
|
|
EEPROM_READ_VAR(i,PID_PARAM(Kc,e));
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#else//PID_ADD_EXTRUSION_RATE
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
#endif//PID_ADD_EXTRUSION_RATE
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
#else//PIDTEMP
|
|
|
|
// 4 x 3 = 12 slots for PID parameters
|
|
|
|
float dummy = 0.0f;
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
EEPROM_READ_VAR(i,dummy);
|
|
|
|
#endif//PIDTEMP
|
2013-07-14 10:28:26 +02:00
|
|
|
#ifndef DOGLCD
|
|
|
|
int lcd_contrast;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//DOGLCD
|
2013-07-14 10:28:26 +02:00
|
|
|
EEPROM_READ_VAR(i,lcd_contrast);
|
2014-06-23 17:09:57 +02:00
|
|
|
#ifdef SCARA
|
|
|
|
EEPROM_READ_VAR(i,axis_scaling);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//SCARA
|
2012-11-07 23:16:43 +01:00
|
|
|
|
2014-12-29 02:43:14 +01:00
|
|
|
#ifdef FWRETRACT
|
|
|
|
EEPROM_READ_VAR(i,autoretract_enabled);
|
|
|
|
EEPROM_READ_VAR(i,retract_length);
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
EEPROM_READ_VAR(i,retract_length_swap);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EXTRUDERS > 1
|
2014-12-29 02:43:14 +01:00
|
|
|
EEPROM_READ_VAR(i,retract_feedrate);
|
|
|
|
EEPROM_READ_VAR(i,retract_zlift);
|
|
|
|
EEPROM_READ_VAR(i,retract_recover_length);
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
EEPROM_READ_VAR(i,retract_recover_length_swap);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EXTRUDERS > 1
|
2014-12-29 02:43:14 +01:00
|
|
|
EEPROM_READ_VAR(i,retract_recover_feedrate);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//FWRETRACT
|
2014-12-29 02:43:14 +01:00
|
|
|
|
|
|
|
EEPROM_READ_VAR(i, volumetric_enabled);
|
|
|
|
EEPROM_READ_VAR(i, filament_size[0]);
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
EEPROM_READ_VAR(i, filament_size[1]);
|
|
|
|
#if EXTRUDERS > 2
|
|
|
|
EEPROM_READ_VAR(i, filament_size[2]);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EXTRUDERS > 2
|
|
|
|
#endif//EXTRUDERS > 1
|
2014-12-29 02:43:14 +01:00
|
|
|
calculate_volumetric_multipliers();
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
// Call updatePID (similar to when we have processed M301)
|
|
|
|
updatePID();
|
2012-11-07 23:16:43 +01:00
|
|
|
SERIAL_ECHO_START;
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
SERIAL_ECHOLNPGM("Stored settings retrieved");
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
Config_ResetDefault();
|
2012-11-07 23:16:43 +01:00
|
|
|
}
|
2013-09-14 13:50:09 +02:00
|
|
|
#ifdef EEPROM_CHITCHAT
|
|
|
|
Config_PrintSettings();
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EEPROM_CHITCHAT
|
2012-11-07 23:16:43 +01:00
|
|
|
}
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EEPROM_SETTINGS
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
|
|
|
|
void Config_ResetDefault()
|
2012-11-07 23:16:43 +01:00
|
|
|
{
|
|
|
|
float tmp1[]=DEFAULT_AXIS_STEPS_PER_UNIT;
|
|
|
|
float tmp2[]=DEFAULT_MAX_FEEDRATE;
|
|
|
|
long tmp3[]=DEFAULT_MAX_ACCELERATION;
|
|
|
|
for (short i=0;i<4;i++)
|
|
|
|
{
|
|
|
|
axis_steps_per_unit[i]=tmp1[i];
|
|
|
|
max_feedrate[i]=tmp2[i];
|
|
|
|
max_acceleration_units_per_sq_second[i]=tmp3[i];
|
2014-06-23 17:09:57 +02:00
|
|
|
#ifdef SCARA
|
|
|
|
axis_scaling[i]=1;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//SCARA
|
2012-11-07 23:16:43 +01:00
|
|
|
}
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
|
|
|
|
// steps per sq second need to be updated to agree with the units per sq second
|
|
|
|
reset_acceleration_rates();
|
|
|
|
|
2012-11-07 23:16:43 +01:00
|
|
|
acceleration=DEFAULT_ACCELERATION;
|
|
|
|
retract_acceleration=DEFAULT_RETRACT_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;
|
2014-12-18 17:13:08 +01:00
|
|
|
add_homing[X_AXIS] = add_homing[Y_AXIS] = add_homing[Z_AXIS] = 0;
|
2013-08-28 01:15:20 +02:00
|
|
|
#ifdef DELTA
|
2014-12-18 17:13:08 +01:00
|
|
|
endstop_adj[X_AXIS] = endstop_adj[Y_AXIS] = endstop_adj[Z_AXIS] = 0;
|
2014-02-18 05:50:59 +01:00
|
|
|
delta_radius= DELTA_RADIUS;
|
|
|
|
delta_diagonal_rod= DELTA_DIAGONAL_ROD;
|
|
|
|
delta_segments_per_second= DELTA_SEGMENTS_PER_SECOND;
|
|
|
|
recalc_delta_settings(delta_radius, delta_diagonal_rod);
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//DELTA
|
2012-11-07 23:16:43 +01:00
|
|
|
#ifdef ULTIPANEL
|
|
|
|
plaPreheatHotendTemp = PLA_PREHEAT_HOTEND_TEMP;
|
|
|
|
plaPreheatHPBTemp = PLA_PREHEAT_HPB_TEMP;
|
|
|
|
plaPreheatFanSpeed = PLA_PREHEAT_FAN_SPEED;
|
|
|
|
absPreheatHotendTemp = ABS_PREHEAT_HOTEND_TEMP;
|
|
|
|
absPreheatHPBTemp = ABS_PREHEAT_HPB_TEMP;
|
|
|
|
absPreheatFanSpeed = ABS_PREHEAT_FAN_SPEED;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//ULTIPANEL
|
2014-12-21 13:06:05 +01:00
|
|
|
#ifdef ENABLE_AUTO_BED_LEVELING
|
2014-01-16 21:13:46 +01:00
|
|
|
zprobe_zoffset = -Z_PROBE_OFFSET_FROM_EXTRUDER;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//ENABLE_AUTO_BED_LEVELING
|
2013-07-14 10:28:26 +02:00
|
|
|
#ifdef DOGLCD
|
|
|
|
lcd_contrast = DEFAULT_LCD_CONTRAST;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//DOGLCD
|
2012-11-07 23:16:43 +01:00
|
|
|
#ifdef PIDTEMP
|
2015-01-11 03:50:17 +01:00
|
|
|
#ifdef PID_PARAMS_PER_EXTRUDER
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
for (int e = 0; e < EXTRUDERS; e++)
|
2015-01-11 03:50:17 +01:00
|
|
|
#else // PID_PARAMS_PER_EXTRUDER
|
|
|
|
int e = 0; // only need to write once
|
|
|
|
#endif // PID_PARAMS_PER_EXTRUDER
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
{
|
2015-01-11 03:50:17 +01:00
|
|
|
PID_PARAM(Kp,e) = DEFAULT_Kp;
|
|
|
|
PID_PARAM(Ki,e) = scalePID_i(DEFAULT_Ki);
|
|
|
|
PID_PARAM(Kd,e) = scalePID_d(DEFAULT_Kd);
|
|
|
|
#ifdef PID_ADD_EXTRUSION_RATE
|
|
|
|
PID_PARAM(Kc,e) = DEFAULT_Kc;
|
|
|
|
#endif//PID_ADD_EXTRUSION_RATE
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
}
|
|
|
|
// call updatePID (similar to when we have processed M301)
|
|
|
|
updatePID();
|
2012-11-07 23:16:43 +01:00
|
|
|
#endif//PIDTEMP
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
|
2014-12-29 02:43:14 +01:00
|
|
|
#ifdef FWRETRACT
|
|
|
|
autoretract_enabled = false;
|
|
|
|
retract_length = RETRACT_LENGTH;
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
retract_length_swap = RETRACT_LENGTH_SWAP;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EXTRUDERS > 1
|
2014-12-29 02:43:14 +01:00
|
|
|
retract_feedrate = RETRACT_FEEDRATE;
|
|
|
|
retract_zlift = RETRACT_ZLIFT;
|
|
|
|
retract_recover_length = RETRACT_RECOVER_LENGTH;
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
retract_recover_length_swap = RETRACT_RECOVER_LENGTH_SWAP;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EXTRUDERS > 1
|
2014-12-29 02:43:14 +01:00
|
|
|
retract_recover_feedrate = RETRACT_RECOVER_FEEDRATE;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//FWRETRACT
|
2014-12-29 02:43:14 +01:00
|
|
|
|
|
|
|
volumetric_enabled = false;
|
|
|
|
filament_size[0] = DEFAULT_NOMINAL_FILAMENT_DIA;
|
|
|
|
#if EXTRUDERS > 1
|
|
|
|
filament_size[1] = DEFAULT_NOMINAL_FILAMENT_DIA;
|
|
|
|
#if EXTRUDERS > 2
|
|
|
|
filament_size[2] = DEFAULT_NOMINAL_FILAMENT_DIA;
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
#endif//EXTRUDERS > 2
|
|
|
|
#endif//EXTRUDERS > 1
|
2014-12-29 02:43:14 +01:00
|
|
|
calculate_volumetric_multipliers();
|
|
|
|
|
Allow Edit menu to call fn after edit; Fix PID Ki and Kd display in menus; Actually use changed PID and Max Accel values
Add new 'callback' edit-menu types that call a function after the edit is done. Use this to display and edit Ki and Kd correctly (removing the scaling first and reapplying it after). Also use it to reset maximum stepwise acceleration rates, after updating mm/s^2 rates via menus. (Previously, changes did nothing to affect planner unless saved back to EEPROM, and the machine reset).
Add calls to updatePID() so that PID loop uses updated values whether set by gcode (it already did this), or by restoring defaults, or loading from EEPROM (it didn't do those last two). Similarly, update the maximum step/s^2 accel rates when the mm/s^2 values are changed - whether by menu edits, restore defaults, or EEPROM read.
Refactor the acceleration rate update logic, and the PID scaling logic, into new functions that can be called from wherever, including the callbacks.
Add menu items to allow the z jerk and e jerk to be viewed/edited in the Control->Motion menu, as per xy jerk.
Conflicts:
Marlin/language.h
2013-03-19 15:05:11 +01:00
|
|
|
SERIAL_ECHO_START;
|
|
|
|
SERIAL_ECHOLNPGM("Hardcoded Default Settings Loaded");
|
|
|
|
|
Independent PID parameters for each extruder
* Variables Kp, Ki, Kd, Kc now arrays of size EXTRUDERS
* M301 gains (optional, default=0) E parameter to define which
extruder's settings to modify. Tested, works with Repetier Host's EEPROM
config window, albeit only reads/updates settings for E0.
* All Kp, Ki, Kd, Kc parameters saved in EEPROM (version now v14), up to
3 extruders supported (same as Marlin in general)
2015-01-10 04:46:08 +01:00
|
|
|
}
|