Cleanup around updatePID

This commit is contained in:
Scott Lahteine 2017-11-10 00:48:00 -06:00
parent 75a58ee4b8
commit 1ed86adf9c
3 changed files with 19 additions and 16 deletions

View file

@ -32,8 +32,6 @@ void GcodeSuite::M304() {
if (parser.seen('I')) thermalManager.bedKi = scalePID_i(parser.value_float()); if (parser.seen('I')) thermalManager.bedKi = scalePID_i(parser.value_float());
if (parser.seen('D')) thermalManager.bedKd = scalePID_d(parser.value_float()); if (parser.seen('D')) thermalManager.bedKd = scalePID_d(parser.value_float());
thermalManager.updatePID();
SERIAL_ECHO_START(); SERIAL_ECHO_START();
SERIAL_ECHOPAIR(" p:", thermalManager.bedKp); SERIAL_ECHOPAIR(" p:", thermalManager.bedKp);
SERIAL_ECHOPAIR(" i:", unscalePID_i(thermalManager.bedKi)); SERIAL_ECHOPAIR(" i:", unscalePID_i(thermalManager.bedKi));

View file

@ -217,6 +217,12 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS],
#if HAS_PID_HEATING #if HAS_PID_HEATING
/**
* PID Autotuning (M303)
*
* Alternately heat and cool the nozzle, observing its behavior to
* determine the best PID values to achieve a stable temperature.
*/
void Temperature::PID_autotune(const float temp, const int8_t hotend, const int8_t ncycles, const bool set_result/*=false*/) { void Temperature::PID_autotune(const float temp, const int8_t hotend, const int8_t ncycles, const bool set_result/*=false*/) {
float input = 0.0; float input = 0.0;
int cycles = 0; int cycles = 0;
@ -466,7 +472,7 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS],
bedKp = workKp; \ bedKp = workKp; \
bedKi = scalePID_i(workKi); \ bedKi = scalePID_i(workKi); \
bedKd = scalePID_d(workKd); \ bedKd = scalePID_d(workKd); \
updatePID(); }while(0) }while(0)
#define _SET_EXTRUDER_PID() do { \ #define _SET_EXTRUDER_PID() do { \
PID_PARAM(Kp, hotend) = workKp; \ PID_PARAM(Kp, hotend) = workKp; \
@ -502,14 +508,6 @@ uint8_t Temperature::soft_pwm_amount[HOTENDS],
Temperature::Temperature() { } Temperature::Temperature() { }
void Temperature::updatePID() {
#if ENABLED(PIDTEMP)
#if ENABLED(PID_EXTRUSION_SCALING)
last_e_position = 0;
#endif
#endif
}
int Temperature::getHeaterPower(int heater) { int Temperature::getHeaterPower(int heater) {
return heater < 0 ? soft_pwm_amount_bed : soft_pwm_amount[heater]; return heater < 0 ? soft_pwm_amount_bed : soft_pwm_amount[heater];
} }

View file

@ -430,12 +430,19 @@ class Temperature {
*/ */
#if HAS_PID_HEATING #if HAS_PID_HEATING
static void PID_autotune(const float temp, const int8_t hotend, const int8_t ncycles, const bool set_result=false); static void PID_autotune(const float temp, const int8_t hotend, const int8_t ncycles, const bool set_result=false);
#endif
/** #if ENABLED(PIDTEMP)
* Update the temp manager when PID values change /**
*/ * Update the temp manager when PID values change
static void updatePID(); */
FORCE_INLINE static void updatePID() {
#if ENABLED(PID_EXTRUSION_SCALING)
last_e_position = 0;
#endif
}
#endif
#endif
#if ENABLED(BABYSTEPPING) #if ENABLED(BABYSTEPPING)