Skip to content

Commit b5836b2

Browse files
committed
🔧 Optional MPC_AUTOTUNE to save 5.5 - 5.8KB
1 parent 6f5b7a8 commit b5836b2

12 files changed

+105
-75
lines changed

Marlin/Configuration.h

+1
Original file line numberDiff line numberDiff line change
@@ -691,6 +691,7 @@
691691
* @section mpctemp
692692
*/
693693
#if ENABLED(MPCTEMP)
694+
//#define MPC_AUTOTUNE // Include a method to do MPC auto-tuning (~5664-5882 bytes of flash)
694695
//#define MPC_EDIT_MENU // Add MPC editing to the "Advanced Settings" menu. (~1300 bytes of flash)
695696
//#define MPC_AUTOTUNE_MENU // Add MPC auto-tuning to the "Advanced Settings" menu. (~350 bytes of flash)
696697

Marlin/src/core/language.h

+3-4
Original file line numberDiff line numberDiff line change
@@ -230,10 +230,9 @@
230230
#define STR_PID_DEBUG_INPUT ": Input "
231231
#define STR_PID_DEBUG_OUTPUT " Output "
232232
#define STR_INVALID_EXTRUDER_NUM " - Invalid extruder number !"
233-
#define STR_MPC_AUTOTUNE "MPC Autotune"
234-
#define STR_MPC_AUTOTUNE_START " start for " STR_E
235-
#define STR_MPC_AUTOTUNE_INTERRUPTED " interrupted!"
236-
#define STR_MPC_AUTOTUNE_FINISHED " finished! Put the constants below into Configuration.h"
233+
#define STR_MPC_AUTOTUNE_START "MPC Autotune start for " STR_E
234+
#define STR_MPC_AUTOTUNE_INTERRUPTED "MPC Autotune interrupted!"
235+
#define STR_MPC_AUTOTUNE_FINISHED "MPC Autotune finished! Put the constants below into Configuration.h"
237236
#define STR_MPC_COOLING_TO_AMBIENT "Cooling to ambient"
238237
#define STR_MPC_HEATING_PAST_200 "Heating to over 200C"
239238
#define STR_MPC_MEASURING_AMBIENT "Measuring ambient heatloss at "

Marlin/src/gcode/temp/M306.cpp

+11-8
Original file line numberDiff line numberDiff line change
@@ -33,15 +33,16 @@
3333
*
3434
* E<extruder> Extruder index. (Default: Active Extruder)
3535
*
36-
* T Autotune the specified or active extruder.
37-
*
3836
* Set MPC values manually for the specified or active extruder:
3937
* A<watts/kelvin> Ambient heat transfer coefficient (no fan).
4038
* C<joules/kelvin> Block heat capacity.
4139
* F<watts/kelvin> Ambient heat transfer coefficient (fan on full).
4240
* H<joules/kelvin/mm> Filament heat capacity per mm.
4341
* P<watts> Heater power.
4442
* R<kelvin/second/kelvin> Sensor responsiveness (= transfer coefficient / heat capcity).
43+
*
44+
* With MPC_AUTOTUNE:
45+
* T Autotune the specified or active extruder.
4546
*/
4647

4748
void GcodeSuite::M306() {
@@ -51,12 +52,14 @@ void GcodeSuite::M306() {
5152
return;
5253
}
5354

54-
if (parser.seen_test('T')) {
55-
LCD_MESSAGE(MSG_MPC_AUTOTUNE);
56-
thermalManager.MPC_autotune(e);
57-
ui.reset_status();
58-
return;
59-
}
55+
#if ENABLED(MPC_AUTOTUNE)
56+
if (parser.seen_test('T')) {
57+
LCD_MESSAGE(MSG_MPC_AUTOTUNE);
58+
thermalManager.MPC_autotune(e);
59+
ui.reset_status();
60+
return;
61+
}
62+
#endif
6063

6164
if (parser.seen("ACFPRH")) {
6265
MPC_t &mpc = thermalManager.temp_hotend[e].mpc;

Marlin/src/inc/Conditionals_LCD.h

+4
Original file line numberDiff line numberDiff line change
@@ -1471,6 +1471,10 @@
14711471
#define HAS_PID_DEBUG 1
14721472
#endif
14731473

1474+
#if DISABLED(MPC_AUTOTUNE)
1475+
#undef MPC_AUTOTUNE_MENU
1476+
#endif
1477+
14741478
/**
14751479
* TFT Displays
14761480
*

Marlin/src/inc/Conditionals_post.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2499,7 +2499,7 @@
24992499
#if EITHER(PIDTEMP, PIDTEMPBED)
25002500
#define DWIN_PID_TUNE 1
25012501
#endif
2502-
#if EITHER(DWIN_PID_TUNE, MPCTEMP) && DISABLED(DISABLE_TUNING_GRAPH)
2502+
#if EITHER(DWIN_PID_TUNE, MPC_AUTOTUNE) && DISABLED(DISABLE_TUNING_GRAPH)
25032503
#define SHOW_TUNING_GRAPH 1
25042504
#endif
25052505
#endif

Marlin/src/inc/SanityCheck.h

+4
Original file line numberDiff line numberDiff line change
@@ -1560,6 +1560,10 @@ static_assert(X_MAX_LENGTH >= X_BED_SIZE, "Movement bounds (X_MIN_POS, X_MAX_POS
15601560
*/
15611561
#if BOTH(PIDTEMP, MPCTEMP)
15621562
#error "Only enable PIDTEMP or MPCTEMP, but not both."
1563+
#undef MPCTEMP
1564+
#undef MPC_AUTOTUNE
1565+
#undef MPC_EDIT_MENU
1566+
#undef MPC_AUTOTUNE_MENU
15631567
#endif
15641568

15651569
#if ENABLED(MPC_INCLUDE_FAN)

Marlin/src/lcd/e3v2/proui/dwin.cpp

+69-48
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,7 @@ MenuClass *MaxAccelMenu = nullptr;
266266
MenuClass *MaxJerkMenu = nullptr;
267267
#endif
268268
MenuClass *StepsMenu = nullptr;
269-
#if ENABLED(MPCTEMP)
269+
#if EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU)
270270
MenuClass *HotendMPCMenu = nullptr;
271271
#endif
272272
#if ENABLED(PIDTEMP)
@@ -1480,46 +1480,59 @@ void DWIN_LevelingDone() {
14801480
DWINUI::ClearMainArea();
14811481
Draw_Popup_Bkgd();
14821482

1483-
#if ENABLED(MPCTEMP)
1484-
1485-
switch (HMI_value.pidresult) {
1483+
switch (HMI_value.pidresult) {
1484+
default: return;
1485+
#if ENABLED(MPC_AUTOTUNE)
14861486
case MPCTEMP_START:
1487-
_maxtemp = thermalManager.hotend_maxtemp[0];
1488-
_target = 200;
14891487
DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 100, GET_TEXT_F(MSG_MPC_AUTOTUNE));
14901488
DWINUI::Draw_String(HMI_data.PopupTxt_Color, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("MPC target: Celsius"));
1491-
DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for Nozzle is running."));
14921489
break;
1493-
case PIDTEMPBED_START:
1494-
_maxtemp = BED_MAXTEMP;
1495-
_target = HMI_data.BedPidT;
1490+
#endif
1491+
#if EITHER(PIDTEMP, PIDTEMPBED)
1492+
TERN_(PIDTEMP, case PIDTEMP_START:)
1493+
TERN_(PIDTEMPBED, case PIDTEMPBED_START:)
14961494
DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 100, GET_TEXT_F(MSG_PID_AUTOTUNE));
14971495
DWINUI::Draw_String(HMI_data.PopupTxt_Color, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("PID target: Celsius"));
1498-
DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for BED is running."));
14991496
break;
1500-
default: return;
1501-
}
1502-
1503-
#else // PID
1497+
#endif
1498+
}
15041499

1505-
DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 100, GET_TEXT_F(MSG_PID_AUTOTUNE));
1506-
DWINUI::Draw_String(HMI_data.PopupTxt_Color, gfrm.x, gfrm.y - DWINUI::fontHeight() - 4, F("PID target: Celsius"));
1500+
switch (HMI_value.pidresult) {
1501+
default: break;
1502+
#if EITHER(PIDTEMP, MPC_AUTOTUNE)
1503+
TERN_(PIDTEMP, case PIDTEMP_START:)
1504+
TERN_(MPC_AUTOTUNE, case MPCTEMP_START:)
1505+
DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for Nozzle is running."));
1506+
break;
1507+
#endif
1508+
#if ENABLED(PIDTEMPBED)
1509+
case PIDTEMPBED_START:
1510+
DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for BED is running."));
1511+
break;
1512+
#endif
1513+
}
15071514

1508-
switch (HMI_value.pidresult) {
1515+
switch (HMI_value.pidresult) {
1516+
default: break;
1517+
#if ENABLED(MPC_AUTOTUNE)
1518+
case MPCTEMP_START:
1519+
_maxtemp = thermalManager.hotend_maxtemp[0];
1520+
_target = 200;
1521+
break;
1522+
#endif
1523+
#if ENABLED(PIDTEMP)
15091524
case PIDTEMP_START:
15101525
_maxtemp = thermalManager.hotend_maxtemp[0];
15111526
_target = HMI_data.HotendPidT;
1512-
DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for Nozzle is running."));
15131527
break;
1528+
#endif
1529+
#if ENABLED(PIDTEMPBED)
15141530
case PIDTEMPBED_START:
15151531
_maxtemp = BED_MAXTEMP;
15161532
_target = HMI_data.BedPidT;
1517-
DWINUI::Draw_CenteredString(HMI_data.PopupTxt_Color, 120, F("for BED is running."));
15181533
break;
1519-
default: return;
1520-
}
1521-
1522-
#endif // PID
1534+
#endif
1535+
}
15231536

15241537
plot.Draw(gfrm, _maxtemp, _target);
15251538
DWINUI::Draw_Int(HMI_data.PopupTxt_Color, 3, gfrm.x + 90, gfrm.y - DWINUI::fontHeight() - 4, _target);
@@ -1587,7 +1600,7 @@ void DWIN_LevelingDone() {
15871600

15881601
#endif // DWIN_PID_TUNE
15891602

1590-
#if ENABLED(MPCTEMP)
1603+
#if ENABLED(MPC_AUTOTUNE)
15911604

15921605
void DWIN_MPCTuning(tempcontrol_t result) {
15931606
HMI_value.pidresult = result;
@@ -1607,7 +1620,7 @@ void DWIN_LevelingDone() {
16071620
break;
16081621
case MPC_INTERRUPTED:
16091622
checkkey = last_checkkey;
1610-
DWIN_Popup_Confirm(ICON_TempTooHigh, GET_TEXT_F(MSG_ERROR), F(STR_MPC_AUTOTUNE STR_MPC_AUTOTUNE_INTERRUPTED));
1623+
DWIN_Popup_Confirm(ICON_TempTooHigh, GET_TEXT_F(MSG_ERROR), F(STR_MPC_AUTOTUNE_INTERRUPTED));
16111624
ui.reset_alert_level();
16121625
break;
16131626
case MPC_DONE:
@@ -1622,7 +1635,7 @@ void DWIN_LevelingDone() {
16221635
}
16231636
}
16241637

1625-
#endif // MPCTEMP
1638+
#endif // MPC_AUTOTUNE
16261639

16271640
// Started a Print Job
16281641
void DWIN_Print_Started() {
@@ -3090,8 +3103,8 @@ void Draw_AdvancedSettings_Menu() {
30903103
#if ENABLED(PIDTEMP)
30913104
MENU_ITEM_F(ICON_PIDNozzle, STR_HOTEND_PID " Settings", onDrawSubMenu, Draw_HotendPID_Menu);
30923105
#endif
3093-
#if ENABLED(MPCTEMP)
3094-
MENU_ITEM_F(ICON_MPCNozzle, STR_MPC_AUTOTUNE " Settings", onDrawSubMenu, Draw_HotendMPC_Menu);
3106+
#if EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU)
3107+
MENU_ITEM_F(ICON_MPCNozzle, "MPC Settings", onDrawSubMenu, Draw_HotendMPC_Menu);
30953108
#endif
30963109
#if ENABLED(PIDTEMPBED)
30973110
MENU_ITEM_F(ICON_PIDBed, STR_BED_PID " Settings", onDrawSubMenu, Draw_BedPID_Menu);
@@ -3524,37 +3537,45 @@ void Draw_Steps_Menu() {
35243537

35253538
#endif
35263539

3527-
#if ENABLED(MPCTEMP)
3540+
#if EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU)
35283541

3529-
void HotendMPC() { thermalManager.MPC_autotune(active_extruder); }
3530-
void SetHeaterPower() { SetPFloatOnClick(1, 200, 1); }
3531-
void SetBlkHeatCapacity() { SetPFloatOnClick(0, 40, 2); }
3532-
void SetSensorRespons() { SetPFloatOnClick(0, 1, 4); }
3533-
void SetAmbientXfer() { SetPFloatOnClick(0, 1, 4); }
3534-
#if ENABLED(MPC_INCLUDE_FAN)
3535-
void onDrawFanAdj(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 4, thermalManager.temp_hotend[0].fanCoefficient()); }
3536-
void ApplyFanAdj() { thermalManager.temp_hotend[0].applyFanAdjustment(MenuData.Value / POW(10, 4)); }
3537-
void SetFanAdj() { SetFloatOnClick(0, 1, 4, thermalManager.temp_hotend[0].fanCoefficient(), ApplyFanAdj); }
3542+
#if ENABLED(MPC_AUTOTUNE_MENU)
3543+
void HotendMPC() { thermalManager.MPC_autotune(active_extruder); }
3544+
#endif
3545+
#if ENABLED(MPC_EDIT_MENU)
3546+
void SetHeaterPower() { SetPFloatOnClick(1, 200, 1); }
3547+
void SetBlkHeatCapacity() { SetPFloatOnClick(0, 40, 2); }
3548+
void SetSensorResponse() { SetPFloatOnClick(0, 1, 4); }
3549+
void SetAmbientXfer() { SetPFloatOnClick(0, 1, 4); }
3550+
#if ENABLED(MPC_INCLUDE_FAN)
3551+
void onDrawFanAdj(MenuItemClass* menuitem, int8_t line) { onDrawFloatMenu(menuitem, line, 4, thermalManager.temp_hotend[0].fanCoefficient()); }
3552+
void ApplyFanAdj() { thermalManager.temp_hotend[0].applyFanAdjustment(MenuData.Value / POW(10, 4)); }
3553+
void SetFanAdj() { SetFloatOnClick(0, 1, 4, thermalManager.temp_hotend[0].fanCoefficient(), ApplyFanAdj); }
3554+
#endif
35383555
#endif
35393556

35403557
void Draw_HotendMPC_Menu() {
35413558
checkkey = Menu;
3542-
if (SET_MENU_F(HotendMPCMenu, STR_MPC_AUTOTUNE " Settings", 7)) {
3559+
if (SET_MENU_F(HotendMPCMenu, "MPC Settings", 7)) {
35433560
MPC_t &mpc = thermalManager.temp_hotend[0].mpc;
35443561
BACK_ITEM(Draw_AdvancedSettings_Menu);
3545-
MENU_ITEM(ICON_MPCNozzle, MSG_MPC_AUTOTUNE, onDrawMenuItem, HotendMPC);
3546-
EDIT_ITEM(ICON_MPCHeater, MSG_MPC_POWER, onDrawPFloatMenu, SetHeaterPower, &mpc.heater_power);
3547-
EDIT_ITEM(ICON_MPCHeatCap, MSG_MPC_BLOCK_HEAT_CAPACITY, onDrawPFloat2Menu, SetBlkHeatCapacity, &mpc.block_heat_capacity);
3548-
EDIT_ITEM(ICON_MPCValue, MSG_SENSOR_RESPONSIVENESS, onDrawPFloat4Menu, SetSensorRespons, &mpc.sensor_responsiveness);
3549-
EDIT_ITEM(ICON_MPCValue, MSG_MPC_AMBIENT_XFER_COEFF, onDrawPFloat4Menu, SetAmbientXfer, &mpc.ambient_xfer_coeff_fan0);
3550-
#if ENABLED(MPC_INCLUDE_FAN)
3551-
EDIT_ITEM(ICON_MPCFan, MSG_MPC_AMBIENT_XFER_COEFF_FAN, onDrawFanAdj, SetFanAdj, &mpc.fan255_adjustment);
3562+
#if ENABLED(MPC_AUTOTUNE_MENU)
3563+
MENU_ITEM(ICON_MPCNozzle, MSG_MPC_AUTOTUNE, onDrawMenuItem, HotendMPC);
3564+
#endif
3565+
#if ENABLED(MPC_EDIT_MENU)
3566+
EDIT_ITEM(ICON_MPCHeater, MSG_MPC_POWER, onDrawPFloatMenu, SetHeaterPower, &mpc.heater_power);
3567+
EDIT_ITEM(ICON_MPCHeatCap, MSG_MPC_BLOCK_HEAT_CAPACITY, onDrawPFloat2Menu, SetBlkHeatCapacity, &mpc.block_heat_capacity);
3568+
EDIT_ITEM(ICON_MPCValue, MSG_SENSOR_RESPONSIVENESS, onDrawPFloat4Menu, SetSensorResponse, &mpc.sensor_responsiveness);
3569+
EDIT_ITEM(ICON_MPCValue, MSG_MPC_AMBIENT_XFER_COEFF, onDrawPFloat4Menu, SetAmbientXfer, &mpc.ambient_xfer_coeff_fan0);
3570+
#if ENABLED(MPC_INCLUDE_FAN)
3571+
EDIT_ITEM(ICON_MPCFan, MSG_MPC_AMBIENT_XFER_COEFF_FAN, onDrawFanAdj, SetFanAdj, &mpc.fan255_adjustment);
3572+
#endif
35523573
#endif
35533574
}
35543575
UpdateMenu(HotendMPCMenu);
35553576
}
35563577

3557-
#endif // MPCTEMP
3578+
#endif // MPC_EDIT_MENU || MPC_AUTOTUNE_MENU
35583579

35593580
#if ENABLED(PIDTEMPBED)
35603581

Marlin/src/lcd/e3v2/proui/dwin.h

+6-4
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ enum processID : uint8_t {
7474
NothingToDo
7575
};
7676

77-
#if EITHER(DWIN_PID_TUNE, MPCTEMP)
77+
#if EITHER(DWIN_PID_TUNE, MPC_AUTOTUNE)
7878

7979
enum tempcontrol_t : uint8_t {
8080
#if DWIN_PID_TUNE
@@ -85,7 +85,7 @@ enum processID : uint8_t {
8585
PID_TEMP_TOO_HIGH,
8686
PID_TUNING_TIMEOUT,
8787
#endif
88-
#if ENABLED(MPCTEMP)
88+
#if ENABLED(MPC_AUTOTUNE)
8989
MPC_DONE,
9090
MPCTEMP_START,
9191
MPC_TEMP_ERROR,
@@ -384,7 +384,9 @@ void Draw_Steps_Menu();
384384
#endif
385385

386386
// MPC
387-
#if ENABLED(MPCTEMP)
388-
void DWIN_MPCTuning(tempcontrol_t result);
387+
#if EITHER(MPC_EDIT_MENU, MPC_AUTOTUNE_MENU)
389388
void Draw_HotendMPC_Menu();
390389
#endif
390+
#if ENABLED(MPC_AUTOTUNE)
391+
void DWIN_MPCTuning(tempcontrol_t result);
392+
#endif

Marlin/src/module/temperature.cpp

+3-7
Original file line numberDiff line numberDiff line change
@@ -580,7 +580,6 @@ PGMSTR(str_t_heating_failed, STR_T_HEATING_FAILED);
580580

581581
volatile bool Temperature::raw_temps_ready = false;
582582

583-
584583
#if ENABLED(MPCTEMP)
585584
int32_t Temperature::mpc_e_position; // = 0
586585
#endif
@@ -925,7 +924,7 @@ volatile bool Temperature::raw_temps_ready = false;
925924

926925
#endif // HAS_PID_HEATING
927926

928-
#if ENABLED(MPCTEMP)
927+
#if ENABLED(MPC_AUTOTUNE)
929928

930929
#if EITHER(MPC_FAN_0_ALL_HOTENDS, MPC_FAN_0_ACTIVE_HOTEND)
931930
#define SINGLEFAN 1
@@ -951,7 +950,6 @@ volatile bool Temperature::raw_temps_ready = false;
951950
TERN(DWIN_CREALITY_LCD, DWIN_Update(), ui.update());
952951

953952
if (!wait_for_heatup) {
954-
SERIAL_ECHOPGM(STR_MPC_AUTOTUNE);
955953
SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_INTERRUPTED);
956954
TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_INTERRUPTED));
957955
return true;
@@ -981,7 +979,6 @@ volatile bool Temperature::raw_temps_ready = false;
981979
}
982980
} on_exit(e);
983981

984-
SERIAL_ECHOPGM(STR_MPC_AUTOTUNE);
985982
SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_START, e);
986983
MPCHeaterInfo &hotend = temp_hotend[e];
987984
MPC_t &mpc = hotend.mpc;
@@ -1150,7 +1147,6 @@ volatile bool Temperature::raw_temps_ready = false;
11501147
mpc.block_heat_capacity = mpc.ambient_xfer_coeff_fan0 / block_responsiveness;
11511148
mpc.sensor_responsiveness = block_responsiveness / (1.0f - (ambient_temp - asymp_temp) * exp(-block_responsiveness * t1_time) / (t1 - asymp_temp));
11521149

1153-
SERIAL_ECHOPGM(STR_MPC_AUTOTUNE);
11541150
SERIAL_ECHOLNPGM(STR_MPC_AUTOTUNE_FINISHED);
11551151
TERN_(DWIN_LCD_PROUI, DWIN_MPCTuning(MPC_DONE));
11561152

@@ -1171,7 +1167,7 @@ volatile bool Temperature::raw_temps_ready = false;
11711167
TERN_(HAS_FAN, SERIAL_ECHOLNPAIR_F("MPC_AMBIENT_XFER_COEFF_FAN255 ", ambient_xfer_coeff_fan255, 4));
11721168
}
11731169

1174-
#endif // MPCTEMP
1170+
#endif // MPC_AUTOTUNE
11751171

11761172
int16_t Temperature::getHeaterPower(const heater_id_t heater_id) {
11771173
switch (heater_id) {
@@ -1509,7 +1505,7 @@ void Temperature::mintemp_error(const heater_id_t heater_id) {
15091505
const int32_t e_position = stepper.position(E_AXIS);
15101506
const float e_speed = (e_position - mpc_e_position) * planner.mm_per_step[E_AXIS] / MPC_dT;
15111507

1512-
// The position can appear to make big jumps when, e.g. homing
1508+
// The position can appear to make big jumps when, e.g., homing
15131509
if (fabs(e_speed) > planner.settings.max_feedrate_mm_s[E_AXIS])
15141510
mpc_e_position = e_position;
15151511
else if (e_speed > 0.0f) { // Ignore retract/recover moves

Marlin/src/module/temperature.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -1194,7 +1194,7 @@ class Temperature {
11941194

11951195
#endif
11961196

1197-
#if ENABLED(MPCTEMP)
1197+
#if ENABLED(MPC_AUTOTUNE)
11981198
void MPC_autotune(const uint8_t e);
11991199
#endif
12001200

buildroot/tests/BIGTREE_GTR_V1_0

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ opt_set MOTHERBOARD BOARD_BTT_GTR_V1_0 SERIAL_PORT -1 \
4040
MPC_AMBIENT_XFER_COEFF '{ 0.068f, 0.068f, 0.068f }' \
4141
MPC_AMBIENT_XFER_COEFF_FAN255 '{ 0.097f, 0.097f, 0.097f }' \
4242
FILAMENT_HEAT_CAPACITY_PERMM '{ 5.6e-3f, 3.6e-3f, 5.6e-3f }'
43-
opt_enable SWITCHING_TOOLHEAD TOOL_SENSOR MPCTEMP MPC_EDIT_MENU MPC_AUTOTUNE_MENU
43+
opt_enable SWITCHING_TOOLHEAD TOOL_SENSOR MPCTEMP MPC_EDIT_MENU MPC_AUTOTUNE MPC_AUTOTUNE_MENU
4444
opt_disable PIDTEMP
4545
exec_test $1 $2 "BigTreeTech GTR | MPC | Switching Toolhead | Tool Sensors" "$3"
4646

0 commit comments

Comments
 (0)