Skip to content

Commit 82ea06e

Browse files
committed
♻️ Patches for Zero Extruders (with TMC)
1 parent 74be64a commit 82ea06e

File tree

10 files changed

+324
-273
lines changed

10 files changed

+324
-273
lines changed

Marlin/src/core/types.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ struct XYZval {
360360
FI void set(const XYval<T> pxy, const T pz) { x = pxy.x; y = pxy.y; z = pz; }
361361
FI void set(const T (&arr)[XY]) { x = arr[0]; y = arr[1]; }
362362
FI void set(const T (&arr)[LINEAR_AXES]) { LINEAR_AXIS_CODE(x = arr[0], y = arr[1], z = arr[2]); }
363-
#if LINEAR_AXES >= XYZ
363+
#if HAS_Z_AXIS
364364
FI void set(LINEAR_AXIS_LIST(const T px, const T py, const T pz))
365365
{ LINEAR_AXIS_CODE(x = px, y = py, z = pz); }
366366
#endif
@@ -475,7 +475,7 @@ struct XYZEval {
475475
FI void set(const T px, const T py) { x = px; y = py; }
476476
FI void set(const XYval<T> pxy) { x = pxy.x; y = pxy.y; }
477477
FI void set(const XYZval<T> pxyz) { set(LINEAR_AXIS_LIST(pxyz.x, pxyz.y, pxyz.z)); }
478-
#if LINEAR_AXES >= XYZ
478+
#if HAS_Z_AXIS
479479
FI void set(LINEAR_AXIS_LIST(const T px, const T py, const T pz)) {
480480
LINEAR_AXIS_CODE(x = px, y = py, z = pz);
481481
}

Marlin/src/feature/tmc_util.cpp

Lines changed: 48 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -770,16 +770,18 @@
770770
#endif
771771
}
772772

773-
if (print_y) {
774-
#if AXIS_IS_TMC(Y)
775-
tmc_status(stepperY, i);
776-
#endif
777-
#if AXIS_IS_TMC(Y2)
778-
tmc_status(stepperY2, i);
779-
#endif
780-
}
773+
#if LINEAR_AXES >= XY
774+
if (print_y) {
775+
#if AXIS_IS_TMC(Y)
776+
tmc_status(stepperY, i);
777+
#endif
778+
#if AXIS_IS_TMC(Y2)
779+
tmc_status(stepperY2, i);
780+
#endif
781+
}
782+
#endif
781783

782-
if (print_z) {
784+
if (TERN0(HAS_Z_AXIS, print_z)) {
783785
#if AXIS_IS_TMC(Z)
784786
tmc_status(stepperZ, i);
785787
#endif
@@ -794,7 +796,7 @@
794796
#endif
795797
}
796798

797-
if (print_e) {
799+
if (TERN0(HAS_EXTRUDERS, print_e)) {
798800
#if AXIS_IS_TMC(E0)
799801
tmc_status(stepperE0, i);
800802
#endif
@@ -837,16 +839,18 @@
837839
#endif
838840
}
839841

840-
if (print_y) {
841-
#if AXIS_IS_TMC(Y)
842-
tmc_parse_drv_status(stepperY, i);
843-
#endif
844-
#if AXIS_IS_TMC(Y2)
845-
tmc_parse_drv_status(stepperY2, i);
846-
#endif
847-
}
842+
#if LINEAR_AXES >= XY
843+
if (print_y) {
844+
#if AXIS_IS_TMC(Y)
845+
tmc_parse_drv_status(stepperY, i);
846+
#endif
847+
#if AXIS_IS_TMC(Y2)
848+
tmc_parse_drv_status(stepperY2, i);
849+
#endif
850+
}
851+
#endif
848852

849-
if (print_z) {
853+
if (TERN0(HAS_Z_AXIS, print_z)) {
850854
#if AXIS_IS_TMC(Z)
851855
tmc_parse_drv_status(stepperZ, i);
852856
#endif
@@ -861,7 +865,7 @@
861865
#endif
862866
}
863867

864-
if (print_e) {
868+
if (TERN0(HAS_EXTRUDERS, print_e)) {
865869
#if AXIS_IS_TMC(E0)
866870
tmc_parse_drv_status(stepperE0, i);
867871
#endif
@@ -1037,16 +1041,18 @@
10371041
#endif
10381042
}
10391043

1040-
if (print_y) {
1041-
#if AXIS_IS_TMC(Y)
1042-
tmc_get_registers(stepperY, i);
1043-
#endif
1044-
#if AXIS_IS_TMC(Y2)
1045-
tmc_get_registers(stepperY2, i);
1046-
#endif
1047-
}
1044+
#if LINEAR_AXES >= XY
1045+
if (print_y) {
1046+
#if AXIS_IS_TMC(Y)
1047+
tmc_get_registers(stepperY, i);
1048+
#endif
1049+
#if AXIS_IS_TMC(Y2)
1050+
tmc_get_registers(stepperY2, i);
1051+
#endif
1052+
}
1053+
#endif
10481054

1049-
if (print_z) {
1055+
if (TERN0(HAS_Z_AXIS, print_z)) {
10501056
#if AXIS_IS_TMC(Z)
10511057
tmc_get_registers(stepperZ, i);
10521058
#endif
@@ -1061,7 +1067,7 @@
10611067
#endif
10621068
}
10631069

1064-
if (print_e) {
1070+
if (TERN0(HAS_EXTRUDERS, print_e)) {
10651071
#if AXIS_IS_TMC(E0)
10661072
tmc_get_registers(stepperE0, i);
10671073
#endif
@@ -1242,16 +1248,18 @@ void test_tmc_connection(
12421248
#endif
12431249
}
12441250

1245-
if (test_y) {
1246-
#if AXIS_IS_TMC(Y)
1247-
axis_connection += test_connection(stepperY);
1248-
#endif
1249-
#if AXIS_IS_TMC(Y2)
1250-
axis_connection += test_connection(stepperY2);
1251-
#endif
1252-
}
1251+
#if LINEAR_AXES >= XY
1252+
if (test_y) {
1253+
#if AXIS_IS_TMC(Y)
1254+
axis_connection += test_connection(stepperY);
1255+
#endif
1256+
#if AXIS_IS_TMC(Y2)
1257+
axis_connection += test_connection(stepperY2);
1258+
#endif
1259+
}
1260+
#endif
12531261

1254-
if (test_z) {
1262+
if (TERN0(HAS_Z_AXIS, test_z)) {
12551263
#if AXIS_IS_TMC(Z)
12561264
axis_connection += test_connection(stepperZ);
12571265
#endif
@@ -1266,7 +1274,7 @@ void test_tmc_connection(
12661274
#endif
12671275
}
12681276

1269-
if (test_e) {
1277+
if (TERN0(HAS_EXTRUDERS, test_e)) {
12701278
#if AXIS_IS_TMC(E0)
12711279
axis_connection += test_connection(stepperE0);
12721280
#endif

Marlin/src/gcode/feature/L6470/M906.cpp

Lines changed: 55 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -252,58 +252,67 @@ void GcodeSuite::M906() {
252252
if (index == 1) L6470_SET_KVAL_HOLD(X2);
253253
#endif
254254
break;
255-
case Y_AXIS:
256-
#if AXIS_IS_L64XX(Y)
257-
if (index == 0) L6470_SET_KVAL_HOLD(Y);
258-
#endif
259-
#if AXIS_IS_L64XX(Y2)
260-
if (index == 1) L6470_SET_KVAL_HOLD(Y2);
261-
#endif
262-
break;
263-
case Z_AXIS:
264-
#if AXIS_IS_L64XX(Z)
265-
if (index == 0) L6470_SET_KVAL_HOLD(Z);
266-
#endif
267-
#if AXIS_IS_L64XX(Z2)
268-
if (index == 1) L6470_SET_KVAL_HOLD(Z2);
269-
#endif
270-
#if AXIS_IS_L64XX(Z3)
271-
if (index == 2) L6470_SET_KVAL_HOLD(Z3);
272-
#endif
273-
#if AXIS_DRIVER_TYPE_Z4(L6470)
274-
if (index == 3) L6470_SET_KVAL_HOLD(Z4);
275-
#endif
276-
break;
277-
case E_AXIS: {
278-
const int8_t target_extruder = get_target_extruder_from_command();
279-
if (target_extruder < 0) return;
280-
switch (target_extruder) {
281-
#if AXIS_IS_L64XX(E0)
282-
case 0: L6470_SET_KVAL_HOLD(E0); break;
283-
#endif
284-
#if AXIS_IS_L64XX(E1)
285-
case 1: L6470_SET_KVAL_HOLD(E1); break;
286-
#endif
287-
#if AXIS_IS_L64XX(E2)
288-
case 2: L6470_SET_KVAL_HOLD(E2); break;
255+
256+
#if LINEAR_AXES >= XY
257+
case Y_AXIS:
258+
#if AXIS_IS_L64XX(Y)
259+
if (index == 0) L6470_SET_KVAL_HOLD(Y);
289260
#endif
290-
#if AXIS_IS_L64XX(E3)
291-
case 3: L6470_SET_KVAL_HOLD(E3); break;
261+
#if AXIS_IS_L64XX(Y2)
262+
if (index == 1) L6470_SET_KVAL_HOLD(Y2);
292263
#endif
293-
#if AXIS_IS_L64XX(E4)
294-
case 4: L6470_SET_KVAL_HOLD(E4); break;
264+
break;
265+
#endif
266+
267+
#if HAS_Z_AXIS
268+
case Z_AXIS:
269+
#if AXIS_IS_L64XX(Z)
270+
if (index == 0) L6470_SET_KVAL_HOLD(Z);
295271
#endif
296-
#if AXIS_IS_L64XX(E5)
297-
case 5: L6470_SET_KVAL_HOLD(E5); break;
272+
#if AXIS_IS_L64XX(Z2)
273+
if (index == 1) L6470_SET_KVAL_HOLD(Z2);
298274
#endif
299-
#if AXIS_IS_L64XX(E6)
300-
case 6: L6470_SET_KVAL_HOLD(E6); break;
275+
#if AXIS_IS_L64XX(Z3)
276+
if (index == 2) L6470_SET_KVAL_HOLD(Z3);
301277
#endif
302-
#if AXIS_IS_L64XX(E7)
303-
case 7: L6470_SET_KVAL_HOLD(E7); break;
278+
#if AXIS_DRIVER_TYPE_Z4(L6470)
279+
if (index == 3) L6470_SET_KVAL_HOLD(Z4);
304280
#endif
305-
}
306-
} break;
281+
break;
282+
#endif
283+
284+
#if HAS_EXTRUDERS
285+
case E_AXIS: {
286+
const int8_t target_extruder = get_target_extruder_from_command();
287+
if (target_extruder < 0) return;
288+
switch (target_extruder) {
289+
#if AXIS_IS_L64XX(E0)
290+
case 0: L6470_SET_KVAL_HOLD(E0); break;
291+
#endif
292+
#if AXIS_IS_L64XX(E1)
293+
case 1: L6470_SET_KVAL_HOLD(E1); break;
294+
#endif
295+
#if AXIS_IS_L64XX(E2)
296+
case 2: L6470_SET_KVAL_HOLD(E2); break;
297+
#endif
298+
#if AXIS_IS_L64XX(E3)
299+
case 3: L6470_SET_KVAL_HOLD(E3); break;
300+
#endif
301+
#if AXIS_IS_L64XX(E4)
302+
case 4: L6470_SET_KVAL_HOLD(E4); break;
303+
#endif
304+
#if AXIS_IS_L64XX(E5)
305+
case 5: L6470_SET_KVAL_HOLD(E5); break;
306+
#endif
307+
#if AXIS_IS_L64XX(E6)
308+
case 6: L6470_SET_KVAL_HOLD(E6); break;
309+
#endif
310+
#if AXIS_IS_L64XX(E7)
311+
case 7: L6470_SET_KVAL_HOLD(E7); break;
312+
#endif
313+
}
314+
} break;
315+
#endif
307316
}
308317
}
309318

Marlin/src/gcode/feature/trinamic/M569.cpp

Lines changed: 54 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -60,57 +60,66 @@ static void set_stealth_status(const bool enable, const int8_t target_extruder)
6060
if (index == 1) TMC_SET_STEALTH(X2);
6161
#endif
6262
break;
63-
case Y_AXIS:
64-
#if AXIS_HAS_STEALTHCHOP(Y)
65-
if (index == 0) TMC_SET_STEALTH(Y);
66-
#endif
67-
#if AXIS_HAS_STEALTHCHOP(Y2)
68-
if (index == 1) TMC_SET_STEALTH(Y2);
69-
#endif
70-
break;
71-
case Z_AXIS:
72-
#if AXIS_HAS_STEALTHCHOP(Z)
73-
if (index == 0) TMC_SET_STEALTH(Z);
74-
#endif
75-
#if AXIS_HAS_STEALTHCHOP(Z2)
76-
if (index == 1) TMC_SET_STEALTH(Z2);
77-
#endif
78-
#if AXIS_HAS_STEALTHCHOP(Z3)
79-
if (index == 2) TMC_SET_STEALTH(Z3);
80-
#endif
81-
#if AXIS_HAS_STEALTHCHOP(Z4)
82-
if (index == 3) TMC_SET_STEALTH(Z4);
83-
#endif
84-
break;
85-
case E_AXIS: {
86-
if (target_extruder < 0) return;
87-
switch (target_extruder) {
88-
#if AXIS_HAS_STEALTHCHOP(E0)
89-
case 0: TMC_SET_STEALTH(E0); break;
90-
#endif
91-
#if AXIS_HAS_STEALTHCHOP(E1)
92-
case 1: TMC_SET_STEALTH(E1); break;
93-
#endif
94-
#if AXIS_HAS_STEALTHCHOP(E2)
95-
case 2: TMC_SET_STEALTH(E2); break;
63+
64+
#if LINEAR_AXES >= XY
65+
case Y_AXIS:
66+
#if AXIS_HAS_STEALTHCHOP(Y)
67+
if (index == 0) TMC_SET_STEALTH(Y);
9668
#endif
97-
#if AXIS_HAS_STEALTHCHOP(E3)
98-
case 3: TMC_SET_STEALTH(E3); break;
69+
#if AXIS_HAS_STEALTHCHOP(Y2)
70+
if (index == 1) TMC_SET_STEALTH(Y2);
9971
#endif
100-
#if AXIS_HAS_STEALTHCHOP(E4)
101-
case 4: TMC_SET_STEALTH(E4); break;
72+
break;
73+
#endif
74+
75+
#if HAS_Z_AXIS
76+
case Z_AXIS:
77+
#if AXIS_HAS_STEALTHCHOP(Z)
78+
if (index == 0) TMC_SET_STEALTH(Z);
10279
#endif
103-
#if AXIS_HAS_STEALTHCHOP(E5)
104-
case 5: TMC_SET_STEALTH(E5); break;
80+
#if AXIS_HAS_STEALTHCHOP(Z2)
81+
if (index == 1) TMC_SET_STEALTH(Z2);
10582
#endif
106-
#if AXIS_HAS_STEALTHCHOP(E6)
107-
case 6: TMC_SET_STEALTH(E6); break;
83+
#if AXIS_HAS_STEALTHCHOP(Z3)
84+
if (index == 2) TMC_SET_STEALTH(Z3);
10885
#endif
109-
#if AXIS_HAS_STEALTHCHOP(E7)
110-
case 7: TMC_SET_STEALTH(E7); break;
86+
#if AXIS_HAS_STEALTHCHOP(Z4)
87+
if (index == 3) TMC_SET_STEALTH(Z4);
11188
#endif
112-
}
113-
} break;
89+
break;
90+
#endif
91+
92+
#if HAS_EXTRUDERS
93+
case E_AXIS: {
94+
if (target_extruder < 0) return;
95+
switch (target_extruder) {
96+
#if AXIS_HAS_STEALTHCHOP(E0)
97+
case 0: TMC_SET_STEALTH(E0); break;
98+
#endif
99+
#if AXIS_HAS_STEALTHCHOP(E1)
100+
case 1: TMC_SET_STEALTH(E1); break;
101+
#endif
102+
#if AXIS_HAS_STEALTHCHOP(E2)
103+
case 2: TMC_SET_STEALTH(E2); break;
104+
#endif
105+
#if AXIS_HAS_STEALTHCHOP(E3)
106+
case 3: TMC_SET_STEALTH(E3); break;
107+
#endif
108+
#if AXIS_HAS_STEALTHCHOP(E4)
109+
case 4: TMC_SET_STEALTH(E4); break;
110+
#endif
111+
#if AXIS_HAS_STEALTHCHOP(E5)
112+
case 5: TMC_SET_STEALTH(E5); break;
113+
#endif
114+
#if AXIS_HAS_STEALTHCHOP(E6)
115+
case 6: TMC_SET_STEALTH(E6); break;
116+
#endif
117+
#if AXIS_HAS_STEALTHCHOP(E7)
118+
case 7: TMC_SET_STEALTH(E7); break;
119+
#endif
120+
}
121+
} break;
122+
#endif
114123
}
115124
}
116125
}

0 commit comments

Comments
 (0)