Skip to content

Commit ee80b3e

Browse files
committed
Add TMC stepper current #189
1 parent 684a7a0 commit ee80b3e

File tree

4 files changed

+71
-0
lines changed

4 files changed

+71
-0
lines changed

Marlin/src/lcd/extui/lib/dgus_creality/creality_touch/AxisSettingsHandler.cpp

+63
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,11 @@
1717
#include "../../../../../module/planner.h"
1818
#include "../../../../../gcode/gcode.h"
1919

20+
#if HAS_TRINAMIC_CONFIG
21+
#include "../../../../../feature/tmc_util.h"
22+
#include "../../../../../module/stepper/indirection.h"
23+
#endif
24+
2025
AxisEnum AxisSettingsHandler::current_axis;
2126
uint16_t AxisSettingsHandler::axis_settings_title_icon = ICON_AXIS_SETTINGS_TITLE_X;
2227

@@ -25,6 +30,8 @@ uint32_t AxisSettingsHandler::max_acceleration_mm_per_s2;
2530
float AxisSettingsHandler::jerk;
2631
feedRate_t AxisSettingsHandler::max_feedrate;
2732

33+
uint16_t AxisSettingsHandler::tmc_current;
34+
2835
void AxisSettingsHandler::HandleNavigation(DGUS_VP_Variable &var, void *val_ptr) {
2936
switch (uInt16Value(val_ptr)) {
3037
case AXIS_SETTINGS_NAV_BUTTON_VAL_X:
@@ -55,6 +62,34 @@ void AxisSettingsHandler::HandleNavigation(DGUS_VP_Variable &var, void *val_ptr)
5562
max_acceleration_mm_per_s2 = planner.settings.max_acceleration_mm_per_s2[current_axis];
5663
IF_ENABLED(CLASSIC_JERK, jerk = planner.max_jerk[current_axis]);
5764
max_feedrate = planner.settings.max_feedrate_mm_s[current_axis];
65+
66+
#if HAS_TRINAMIC_CONFIG
67+
switch (current_axis){
68+
#if AXIS_IS_TMC(X)
69+
case X_AXIS:
70+
tmc_current = stepperX.getMilliamps();
71+
break;
72+
#endif
73+
74+
#if AXIS_IS_TMC(Y)
75+
case Y_AXIS:
76+
tmc_current = stepperY.getMilliamps();
77+
break;
78+
#endif
79+
80+
#if AXIS_IS_TMC(Z)
81+
case Z_AXIS:
82+
tmc_current = stepperZ.getMilliamps();
83+
break;
84+
#endif
85+
86+
#if AXIS_IS_TMC(E0)
87+
case E_AXIS:
88+
tmc_current = stepperE0.getMilliamps();
89+
break;
90+
#endif
91+
}
92+
#endif
5893
}
5994

6095
void AxisSettingsHandler::HandleBackNavigation(DGUS_VP_Variable &var, void *val_ptr) {
@@ -64,6 +99,34 @@ void AxisSettingsHandler::HandleBackNavigation(DGUS_VP_Variable &var, void *val_
6499
IF_ENABLED(CLASSIC_JERK, planner.max_jerk[current_axis] = jerk);
65100
planner.settings.max_feedrate_mm_s[current_axis] = max_feedrate;
66101

102+
#if HAS_TRINAMIC_CONFIG
103+
switch (current_axis){
104+
#if AXIS_IS_TMC(X)
105+
case X_AXIS:
106+
stepperX.rms_current(tmc_current);
107+
break;
108+
#endif
109+
110+
#if AXIS_IS_TMC(Y)
111+
case Y_AXIS:
112+
stepperY.rms_current(tmc_current);
113+
break;
114+
#endif
115+
116+
#if AXIS_IS_TMC(Z)
117+
case Z_AXIS:
118+
stepperZ.rms_current(tmc_current);
119+
break;
120+
#endif
121+
122+
#if AXIS_IS_TMC(E0)
123+
case E_AXIS:
124+
stepperE0.rms_current(tmc_current);
125+
break;
126+
#endif
127+
}
128+
#endif
129+
67130
// Save and pop
68131
ScreenHandler.PopToOldScreen();
69132

Marlin/src/lcd/extui/lib/dgus_creality/creality_touch/AxisSettingsHandler.h

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ class AxisSettingsHandler {
1313
static float jerk;
1414
static feedRate_t max_feedrate;
1515

16+
static uint16_t tmc_current;
17+
1618
public:
1719
static void HandleNavigation(DGUS_VP_Variable &var, void *val_ptr);
1820
static void HandleBackNavigation(DGUS_VP_Variable &var, void *val_ptr);

Marlin/src/lcd/extui/lib/dgus_creality/creality_touch/DGUSDisplayDef.cpp

+4
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,8 @@ const uint16_t VPList_AxisSettingsAxis[] PROGMEM = {
300300
VP_AXIS_SETTINGS_AXIS_JERK,
301301
VP_AXIS_SETTINGS_AXIS_FEEDRATE,
302302

303+
VP_AXIS_SETTINGS_AXIS_TMCCURRENT,
304+
303305
0x0000
304306
};
305307

@@ -433,6 +435,8 @@ const struct DGUS_VP_Variable ListOfVP[] PROGMEM = {
433435
VPHELPER(VP_AXIS_SETTINGS_AXIS_JERK, &AxisSettingsHandler::jerk, ScreenHandler.DGUSLCD_SetFloatAsIntFromDisplay<1>, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>),
434436
VPHELPER(VP_AXIS_SETTINGS_AXIS_FEEDRATE, &AxisSettingsHandler::max_feedrate, ScreenHandler.DGUSLCD_SetFloatAsIntFromDisplay<1>, ScreenHandler.DGUSLCD_SendFloatAsIntValueToDisplay<1>),
435437

438+
VPHELPER(VP_AXIS_SETTINGS_AXIS_TMCCURRENT, &AxisSettingsHandler::tmc_current, ScreenHandler.DGUSLCD_SetValueDirectly<uint16_t>, ScreenHandler.DGUSLCD_SendWordValueToDisplay),
439+
436440
VPHELPER(VP_AXIS_SETTINGS_NAV_BACKBUTTON, nullptr, AxisSettingsHandler::HandleBackNavigation, nullptr),
437441

438442
// Preheat settings

Marlin/src/lcd/extui/lib/dgus_creality/creality_touch/DGUSDisplayDef.h

+2
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,8 @@ constexpr uint16_t VP_AXIS_SETTINGS_AXIS_MAX_ACCEL = 0x22E1; // 4-byte (!)
313313
constexpr uint16_t VP_AXIS_SETTINGS_AXIS_JERK = 0x22E5; // 2-byte
314314
constexpr uint16_t VP_AXIS_SETTINGS_AXIS_FEEDRATE = 0x22E7; // 2-byte
315315

316+
constexpr uint16_t VP_AXIS_SETTINGS_AXIS_TMCCURRENT = 0x22E9; // 2-byte
317+
316318

317319
// Mesh leveling
318320
constexpr uint16_t VP_MESH_SCREEN_MESSAGE_ICON = 0x22cb;

0 commit comments

Comments
 (0)