|
@@ -210,7 +210,7 @@ void menu_backlash();
|
210
|
210
|
|
211
|
211
|
// Helpers for editing PID Ki & Kd values
|
212
|
212
|
// grab the PID value out of the temp variable; scale it; then update the PID driver
|
213
|
|
- void copy_and_scalePID_i(int16_t e) {
|
|
213
|
+ void copy_and_scalePID_i(const uint8_t e) {
|
214
|
214
|
switch (e) {
|
215
|
215
|
#if ENABLED(PIDTEMPBED)
|
216
|
216
|
case H_BED: thermalManager.temp_bed.pid.Ki = scalePID_i(raw_Ki); break;
|
|
@@ -226,7 +226,7 @@ void menu_backlash();
|
226
|
226
|
break;
|
227
|
227
|
}
|
228
|
228
|
}
|
229
|
|
- void copy_and_scalePID_d(int16_t e) {
|
|
229
|
+ void copy_and_scalePID_d(const uint8_t e) {
|
230
|
230
|
switch (e) {
|
231
|
231
|
#if ENABLED(PIDTEMPBED)
|
232
|
232
|
case H_BED: thermalManager.temp_bed.pid.Kd = scalePID_d(raw_Kd); break;
|
|
@@ -242,30 +242,6 @@ void menu_backlash();
|
242
|
242
|
break;
|
243
|
243
|
}
|
244
|
244
|
}
|
245
|
|
-
|
246
|
|
- #define _DEFINE_PIDTEMP_BASE_FUNCS(N) \
|
247
|
|
- void copy_and_scalePID_i_E##N() { copy_and_scalePID_i(N); } \
|
248
|
|
- void copy_and_scalePID_d_E##N() { copy_and_scalePID_d(N); }
|
249
|
|
-
|
250
|
|
-#else
|
251
|
|
-
|
252
|
|
- #define _DEFINE_PIDTEMP_BASE_FUNCS(N) //
|
253
|
|
-
|
254
|
|
-#endif
|
255
|
|
-
|
256
|
|
-#if ENABLED(PID_AUTOTUNE_MENU)
|
257
|
|
- #define DEFINE_PIDTEMP_FUNCS(N) \
|
258
|
|
- _DEFINE_PIDTEMP_BASE_FUNCS(N); \
|
259
|
|
- void lcd_autotune_callback_E##N() { _lcd_autotune(heater_id_t(N)); }
|
260
|
|
-#else
|
261
|
|
- #define DEFINE_PIDTEMP_FUNCS(N) _DEFINE_PIDTEMP_BASE_FUNCS(N);
|
262
|
|
-#endif
|
263
|
|
-
|
264
|
|
-#if HAS_HOTEND
|
265
|
|
- DEFINE_PIDTEMP_FUNCS(0);
|
266
|
|
- #if ENABLED(PID_PARAMS_PER_HOTEND)
|
267
|
|
- REPEAT_S(1, HOTENDS, DEFINE_PIDTEMP_FUNCS)
|
268
|
|
- #endif
|
269
|
245
|
#endif
|
270
|
246
|
|
271
|
247
|
#if BOTH(AUTOTEMP, HAS_TEMP_HOTEND) || EITHER(PID_AUTOTUNE_MENU, PID_EDIT_MENU)
|
|
@@ -299,14 +275,7 @@ void menu_backlash();
|
299
|
275
|
// PID-P E5, PID-I E5, PID-D E5, PID-C E5, PID Autotune E5
|
300
|
276
|
//
|
301
|
277
|
|
302
|
|
- #if ENABLED(PID_EDIT_MENU)
|
303
|
|
- #define _PID_EDIT_ITEMS_TMPL(N,T) \
|
304
|
|
- raw_Ki = unscalePID_i(T.pid.Ki); \
|
305
|
|
- raw_Kd = unscalePID_d(T.pid.Kd); \
|
306
|
|
- EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_P_E, &T.pid.Kp, 1, 9990); \
|
307
|
|
- EDIT_ITEM_FAST_N(float52sign, N, MSG_PID_I_E, &raw_Ki, 0.01f, 9990, []{ copy_and_scalePID_i(N); }); \
|
308
|
|
- EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_D_E, &raw_Kd, 1, 9990, []{ copy_and_scalePID_d(N); })
|
309
|
|
-
|
|
278
|
+ #if BOTH(PIDTEMP, PID_EDIT_MENU)
|
310
|
279
|
#define __PID_HOTEND_MENU_ITEMS(N) \
|
311
|
280
|
raw_Ki = unscalePID_i(PID_PARAM(Ki, N)); \
|
312
|
281
|
raw_Kd = unscalePID_d(PID_PARAM(Kd, N)); \
|
|
@@ -336,17 +305,28 @@ void menu_backlash();
|
336
|
305
|
|
337
|
306
|
#endif
|
338
|
307
|
|
339
|
|
- #if ENABLED(PID_AUTOTUNE_MENU)
|
340
|
|
- #define HOTEND_PID_EDIT_MENU_ITEMS(N) \
|
341
|
|
- _HOTEND_PID_EDIT_MENU_ITEMS(N); \
|
342
|
|
- EDIT_ITEM_FAST_N(int3, N, MSG_PID_AUTOTUNE_E, &autotune_temp[N], 150, thermalManager.hotend_max_target(N), []{ _lcd_autotune(heater_id_t(MenuItemBase::itemIndex)); });
|
343
|
|
- #else
|
344
|
|
- #define HOTEND_PID_EDIT_MENU_ITEMS(N) _HOTEND_PID_EDIT_MENU_ITEMS(N);
|
|
308
|
+ #if ENABLED(PID_EDIT_MENU) && EITHER(PIDTEMPBED, PIDTEMPCHAMBER)
|
|
309
|
+ #define _PID_EDIT_ITEMS_TMPL(N,T) \
|
|
310
|
+ raw_Ki = unscalePID_i(T.pid.Ki); \
|
|
311
|
+ raw_Kd = unscalePID_d(T.pid.Kd); \
|
|
312
|
+ EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_P_E, &T.pid.Kp, 1, 9990); \
|
|
313
|
+ EDIT_ITEM_FAST_N(float52sign, N, MSG_PID_I_E, &raw_Ki, 0.01f, 9990, []{ copy_and_scalePID_i(N); }); \
|
|
314
|
+ EDIT_ITEM_FAST_N(float41sign, N, MSG_PID_D_E, &raw_Kd, 1, 9990, []{ copy_and_scalePID_d(N); })
|
345
|
315
|
#endif
|
346
|
316
|
|
347
|
|
- HOTEND_PID_EDIT_MENU_ITEMS(0);
|
348
|
|
- #if ENABLED(PID_PARAMS_PER_HOTEND)
|
349
|
|
- REPEAT_S(1, HOTENDS, HOTEND_PID_EDIT_MENU_ITEMS)
|
|
317
|
+ #if ENABLED(PIDTEMP)
|
|
318
|
+ #if ENABLED(PID_AUTOTUNE_MENU)
|
|
319
|
+ #define HOTEND_PID_EDIT_MENU_ITEMS(N) \
|
|
320
|
+ _HOTEND_PID_EDIT_MENU_ITEMS(N); \
|
|
321
|
+ EDIT_ITEM_FAST_N(int3, N, MSG_PID_AUTOTUNE_E, &autotune_temp[N], 150, thermalManager.hotend_max_target(N), []{ _lcd_autotune(heater_id_t(MenuItemBase::itemIndex)); });
|
|
322
|
+ #else
|
|
323
|
+ #define HOTEND_PID_EDIT_MENU_ITEMS(N) _HOTEND_PID_EDIT_MENU_ITEMS(N);
|
|
324
|
+ #endif
|
|
325
|
+
|
|
326
|
+ HOTEND_PID_EDIT_MENU_ITEMS(0);
|
|
327
|
+ #if ENABLED(PID_PARAMS_PER_HOTEND)
|
|
328
|
+ REPEAT_S(1, HOTENDS, HOTEND_PID_EDIT_MENU_ITEMS)
|
|
329
|
+ #endif
|
350
|
330
|
#endif
|
351
|
331
|
|
352
|
332
|
#if ENABLED(PIDTEMPBED)
|