|
|
@ -37,7 +37,7 @@ |
|
|
|
*/ |
|
|
|
|
|
|
|
// Change EEPROM version if the structure changes
|
|
|
|
#define EEPROM_VERSION "V70" |
|
|
|
#define EEPROM_VERSION "V71" |
|
|
|
#define EEPROM_OFFSET 100 |
|
|
|
|
|
|
|
// Check the integrity of data offsets.
|
|
|
@ -788,7 +788,10 @@ void MarlinSettings::postprocess() { |
|
|
|
_FIELD_TEST(hotendPID); |
|
|
|
HOTEND_LOOP() { |
|
|
|
PIDC_t pidc = { |
|
|
|
PID_PARAM(Kp, e), PID_PARAM(Ki, e), PID_PARAM(Kd, e), PID_PARAM(Kc, e) |
|
|
|
PID_PARAM(Kp, e), |
|
|
|
unscalePID_i(PID_PARAM(Ki, e)), |
|
|
|
unscalePID_d(PID_PARAM(Kd, e)), |
|
|
|
PID_PARAM(Kc, e) |
|
|
|
}; |
|
|
|
EEPROM_WRITE(pidc); |
|
|
|
} |
|
|
@ -808,12 +811,17 @@ void MarlinSettings::postprocess() { |
|
|
|
{ |
|
|
|
_FIELD_TEST(bedPID); |
|
|
|
|
|
|
|
const PID_t bed_pid = { |
|
|
|
#if DISABLED(PIDTEMPBED) |
|
|
|
const PID_t bed_pid = { DUMMY_PID_VALUE, DUMMY_PID_VALUE, DUMMY_PID_VALUE }; |
|
|
|
EEPROM_WRITE(bed_pid); |
|
|
|
DUMMY_PID_VALUE, DUMMY_PID_VALUE, DUMMY_PID_VALUE |
|
|
|
#else |
|
|
|
EEPROM_WRITE(thermalManager.temp_bed.pid); |
|
|
|
// Store the unscaled PID values
|
|
|
|
thermalManager.temp_bed.pid.Kp, |
|
|
|
unscalePID_i(thermalManager.temp_bed.pid.Ki), |
|
|
|
unscalePID_d(thermalManager.temp_bed.pid.Kd) |
|
|
|
#endif |
|
|
|
}; |
|
|
|
EEPROM_WRITE(bed_pid); |
|
|
|
} |
|
|
|
|
|
|
|
//
|
|
|
@ -1585,10 +1593,10 @@ void MarlinSettings::postprocess() { |
|
|
|
EEPROM_READ(pidc); |
|
|
|
#if ENABLED(PIDTEMP) |
|
|
|
if (!validating && pidc.Kp != DUMMY_PID_VALUE) { |
|
|
|
// No need to scale PID values since EEPROM values are scaled
|
|
|
|
// Scale PID values since EEPROM values are unscaled
|
|
|
|
PID_PARAM(Kp, e) = pidc.Kp; |
|
|
|
PID_PARAM(Ki, e) = pidc.Ki; |
|
|
|
PID_PARAM(Kd, e) = pidc.Kd; |
|
|
|
PID_PARAM(Ki, e) = scalePID_i(pidc.Ki); |
|
|
|
PID_PARAM(Kd, e) = scalePID_d(pidc.Kd); |
|
|
|
#if ENABLED(PID_EXTRUSION_SCALING) |
|
|
|
PID_PARAM(Kc, e) = pidc.Kc; |
|
|
|
#endif |
|
|
@ -1617,8 +1625,12 @@ void MarlinSettings::postprocess() { |
|
|
|
PID_t pid; |
|
|
|
EEPROM_READ(pid); |
|
|
|
#if ENABLED(PIDTEMPBED) |
|
|
|
if (!validating && pid.Kp != DUMMY_PID_VALUE) |
|
|
|
memcpy(&thermalManager.temp_bed.pid, &pid, sizeof(pid)); |
|
|
|
if (!validating && pid.Kp != DUMMY_PID_VALUE) { |
|
|
|
// Scale PID values since EEPROM values are unscaled
|
|
|
|
thermalManager.temp_bed.pid.Kp = pid.Kp; |
|
|
|
thermalManager.temp_bed.pid.Ki = scalePID_i(pid.Ki); |
|
|
|
thermalManager.temp_bed.pid.Kd = scalePID_d(pid.Kd); |
|
|
|
} |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|