Skip to content

Commit a4a360c

Browse files
committed
🔧 Refactor STEP pin state
1 parent 464dead commit a4a360c

File tree

4 files changed

+58
-48
lines changed

4 files changed

+58
-48
lines changed

Marlin/Configuration_adv.h

+11-11
Original file line numberDiff line numberDiff line change
@@ -1104,17 +1104,17 @@
11041104
// Add a Duplicate option for well-separated conjoined nozzles
11051105
//#define MULTI_NOZZLE_DUPLICATION
11061106

1107-
// By default pololu step drivers require an active high signal. However, some high power drivers require an active low signal as step.
1108-
#define INVERT_X_STEP_PIN false
1109-
#define INVERT_Y_STEP_PIN false
1110-
#define INVERT_Z_STEP_PIN false
1111-
#define INVERT_I_STEP_PIN false
1112-
#define INVERT_J_STEP_PIN false
1113-
#define INVERT_K_STEP_PIN false
1114-
#define INVERT_U_STEP_PIN false
1115-
#define INVERT_V_STEP_PIN false
1116-
#define INVERT_W_STEP_PIN false
1117-
#define INVERT_E_STEP_PIN false
1107+
// By default stepper drivers require an active-HIGH signal but some high-power drivers require an active-LOW signal to step.
1108+
#define STEP_STATE_X HIGH
1109+
#define STEP_STATE_Y HIGH
1110+
#define STEP_STATE_Z HIGH
1111+
#define STEP_STATE_I HIGH
1112+
#define STEP_STATE_J HIGH
1113+
#define STEP_STATE_K HIGH
1114+
#define STEP_STATE_U HIGH
1115+
#define STEP_STATE_V HIGH
1116+
#define STEP_STATE_W HIGH
1117+
#define STEP_STATE_E HIGH
11181118

11191119
/**
11201120
* Idle Stepper Shutdown

Marlin/src/inc/Conditionals_adv.h

+8
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
#undef SHAPING_BUFFER_Y
100100
#undef SHAPING_FREQ_Y
101101
#undef STEALTHCHOP_Y
102+
#undef STEP_STATE_Y
102103
#endif
103104

104105
#if !HAS_Z_AXIS
@@ -112,6 +113,7 @@
112113
#undef NUM_Z_STEPPERS
113114
#undef SAFE_BED_LEVELING_START_Z
114115
#undef STEALTHCHOP_Z
116+
#undef STEP_STATE_Z
115117
#undef Z_IDLE_HEIGHT
116118
#undef Z_PROBE_SLED
117119
#undef Z_SAFE_HOMING
@@ -123,6 +125,7 @@
123125
#undef DISABLE_INACTIVE_I
124126
#undef SAFE_BED_LEVELING_START_I
125127
#undef STEALTHCHOP_I
128+
#undef STEP_STATE_I
126129
#endif
127130

128131
#if !HAS_J_AXIS
@@ -131,6 +134,7 @@
131134
#undef DISABLE_INACTIVE_J
132135
#undef SAFE_BED_LEVELING_START_J
133136
#undef STEALTHCHOP_J
137+
#undef STEP_STATE_J
134138
#endif
135139

136140
#if !HAS_K_AXIS
@@ -139,6 +143,7 @@
139143
#undef DISABLE_INACTIVE_K
140144
#undef SAFE_BED_LEVELING_START_K
141145
#undef STEALTHCHOP_K
146+
#undef STEP_STATE_K
142147
#endif
143148

144149
#if !HAS_U_AXIS
@@ -147,6 +152,7 @@
147152
#undef DISABLE_INACTIVE_U
148153
#undef SAFE_BED_LEVELING_START_U
149154
#undef STEALTHCHOP_U
155+
#undef STEP_STATE_U
150156
#endif
151157

152158
#if !HAS_V_AXIS
@@ -155,6 +161,7 @@
155161
#undef DISABLE_INACTIVE_V
156162
#undef SAFE_BED_LEVELING_START_V
157163
#undef STEALTHCHOP_V
164+
#undef STEP_STATE_V
158165
#endif
159166

160167
#if !HAS_W_AXIS
@@ -163,6 +170,7 @@
163170
#undef DISABLE_INACTIVE_W
164171
#undef SAFE_BED_LEVELING_START_W
165172
#undef STEALTHCHOP_W
173+
#undef STEP_STATE_W
166174
#endif
167175

168176
// Disallowed with no extruders

Marlin/src/inc/SanityCheck.h

+2
Original file line numberDiff line numberDiff line change
@@ -674,6 +674,8 @@
674674
#error "BABYSTEP_ZPROBE_GFX_OVERLAY is now BABYSTEP_GFX_OVERLAY."
675675
#elif defined(DISABLE_INACTIVE_E)
676676
#error "DISABLE_INACTIVE_E is now set with DISABLE_INACTIVE_EXTRUDER."
677+
#elif defined(INVERT_X_STEP_PIN) || defined(INVERT_Y_STEP_PIN) || defined(INVERT_Z_STEP_PIN) || defined(INVERT_I_STEP_PIN) || defined(INVERT_J_STEP_PIN) || defined(INVERT_K_STEP_PIN) || defined(INVERT_U_STEP_PIN) || defined(INVERT_V_STEP_PIN) || defined(INVERT_W_STEP_PIN) || defined(INVERT_E_STEP_PIN)
678+
#error "INVERT_*_STEP_PIN true is now STEP_STATE_* LOW, and INVERT_*_STEP_PIN false is now STEP_STATE_* HIGH."
677679
#endif
678680

679681
// L64xx stepper drivers have been removed

Marlin/src/module/stepper.cpp

+37-37
Original file line numberDiff line numberDiff line change
@@ -1664,7 +1664,7 @@ void Stepper::pulse_phase_isr() {
16641664

16651665
do {
16661666
#define _APPLY_STEP(AXIS, INV, ALWAYS) AXIS ##_APPLY_STEP(INV, ALWAYS)
1667-
#define _INVERT_STEP_PIN(AXIS) INVERT_## AXIS ##_STEP_PIN
1667+
#define _STEP_STATE(AXIS) STEP_STATE_## AXIS
16681668

16691669
// Determine if a pulse is needed using Bresenham
16701670
#define PULSE_PREP(AXIS) do{ \
@@ -1714,14 +1714,14 @@ void Stepper::pulse_phase_isr() {
17141714
#define PULSE_START(AXIS) do{ \
17151715
if (step_needed[_AXIS(AXIS)]) { \
17161716
count_position[_AXIS(AXIS)] += count_direction[_AXIS(AXIS)]; \
1717-
_APPLY_STEP(AXIS, !_INVERT_STEP_PIN(AXIS), 0); \
1717+
_APPLY_STEP(AXIS, _STEP_STATE(AXIS), 0); \
17181718
} \
17191719
}while(0)
17201720

17211721
// Stop an active pulse if needed
17221722
#define PULSE_STOP(AXIS) do { \
17231723
if (step_needed[_AXIS(AXIS)]) { \
1724-
_APPLY_STEP(AXIS, _INVERT_STEP_PIN(AXIS), 0); \
1724+
_APPLY_STEP(AXIS, !_STEP_STATE(AXIS), 0); \
17251725
} \
17261726
}while(0)
17271727

@@ -1933,7 +1933,7 @@ void Stepper::pulse_phase_isr() {
19331933
#if ENABLED(MIXING_EXTRUDER)
19341934
if (step_needed.e) {
19351935
count_position[E_AXIS] += count_direction[E_AXIS];
1936-
E_STEP_WRITE(mixer.get_next_stepper(), !INVERT_E_STEP_PIN);
1936+
E_STEP_WRITE(mixer.get_next_stepper(), STEP_STATE_E);
19371937
}
19381938
#elif HAS_E0_STEP
19391939
PULSE_START(E);
@@ -1977,7 +1977,7 @@ void Stepper::pulse_phase_isr() {
19771977
#endif
19781978

19791979
#if ENABLED(MIXING_EXTRUDER)
1980-
if (step_needed.e) E_STEP_WRITE(mixer.get_stepper(), INVERT_E_STEP_PIN);
1980+
if (step_needed.e) E_STEP_WRITE(mixer.get_stepper(), !STEP_STATE_E);
19811981
#elif HAS_E0_STEP
19821982
PULSE_STOP(E);
19831983
#endif
@@ -2638,7 +2638,7 @@ uint32_t Stepper::block_phase_isr() {
26382638
la_delta_error -= advance_divisor;
26392639

26402640
// Set the STEP pulse ON
2641-
E_STEP_WRITE(TERN(MIXING_EXTRUDER, mixer.get_next_stepper(), stepper_extruder), !INVERT_E_STEP_PIN);
2641+
E_STEP_WRITE(TERN(MIXING_EXTRUDER, mixer.get_next_stepper(), stepper_extruder), STEP_STATE_E);
26422642
}
26432643

26442644
TERN_(I2S_STEPPER_STREAM, i2s_push_sample());
@@ -2652,7 +2652,7 @@ uint32_t Stepper::block_phase_isr() {
26522652
#endif
26532653

26542654
// Set the STEP pulse OFF
2655-
E_STEP_WRITE(TERN(MIXING_EXTRUDER, mixer.get_stepper(), stepper_extruder), INVERT_E_STEP_PIN);
2655+
E_STEP_WRITE(TERN(MIXING_EXTRUDER, mixer.get_stepper(), stepper_extruder), !STEP_STATE_E);
26562656
}
26572657
}
26582658

@@ -2906,7 +2906,7 @@ void Stepper::init() {
29062906

29072907
#define AXIS_INIT(AXIS, PIN) \
29082908
_STEP_INIT(AXIS); \
2909-
_WRITE_STEP(AXIS, _INVERT_STEP_PIN(PIN)); \
2909+
_WRITE_STEP(AXIS, !_STEP_STATE(PIN)); \
29102910
_DISABLE_AXIS(AXIS)
29112911

29122912
#define E_AXIS_INIT(NUM) AXIS_INIT(E## NUM, E)
@@ -2915,31 +2915,31 @@ void Stepper::init() {
29152915
#if HAS_X_STEP
29162916
#if HAS_X2_STEPPER
29172917
X2_STEP_INIT();
2918-
X2_STEP_WRITE(INVERT_X_STEP_PIN);
2918+
X2_STEP_WRITE(!STEP_STATE_X);
29192919
#endif
29202920
AXIS_INIT(X, X);
29212921
#endif
29222922

29232923
#if HAS_Y_STEP
29242924
#if HAS_DUAL_Y_STEPPERS
29252925
Y2_STEP_INIT();
2926-
Y2_STEP_WRITE(INVERT_Y_STEP_PIN);
2926+
Y2_STEP_WRITE(!STEP_STATE_Y);
29272927
#endif
29282928
AXIS_INIT(Y, Y);
29292929
#endif
29302930

29312931
#if HAS_Z_STEP
29322932
#if NUM_Z_STEPPERS >= 2
29332933
Z2_STEP_INIT();
2934-
Z2_STEP_WRITE(INVERT_Z_STEP_PIN);
2934+
Z2_STEP_WRITE(!STEP_STATE_Z);
29352935
#endif
29362936
#if NUM_Z_STEPPERS >= 3
29372937
Z3_STEP_INIT();
2938-
Z3_STEP_WRITE(INVERT_Z_STEP_PIN);
2938+
Z3_STEP_WRITE(!STEP_STATE_Z);
29392939
#endif
29402940
#if NUM_Z_STEPPERS >= 4
29412941
Z4_STEP_INIT();
2942-
Z4_STEP_WRITE(INVERT_Z_STEP_PIN);
2942+
Z4_STEP_WRITE(!STEP_STATE_Z);
29432943
#endif
29442944
AXIS_INIT(Z, Z);
29452945
#endif
@@ -3345,9 +3345,9 @@ void Stepper::report_positions() {
33453345
_APPLY_DIR(AXIS, _INVERT_DIR(AXIS)^DIR^INV); \
33463346
DIR_WAIT_AFTER(); \
33473347
_SAVE_START(); \
3348-
_APPLY_STEP(AXIS, !_INVERT_STEP_PIN(AXIS), true); \
3348+
_APPLY_STEP(AXIS, _STEP_STATE(AXIS), true); \
33493349
_PULSE_WAIT(); \
3350-
_APPLY_STEP(AXIS, _INVERT_STEP_PIN(AXIS), true); \
3350+
_APPLY_STEP(AXIS, !_STEP_STATE(AXIS), true); \
33513351
EXTRA_DIR_WAIT_BEFORE(); \
33523352
_APPLY_DIR(AXIS, old_dir); \
33533353
EXTRA_DIR_WAIT_AFTER(); \
@@ -3365,11 +3365,11 @@ void Stepper::report_positions() {
33653365
_APPLY_DIR(B, _INVERT_DIR(B)^DIR^INV^ALT); \
33663366
DIR_WAIT_AFTER(); \
33673367
_SAVE_START(); \
3368-
_APPLY_STEP(A, !_INVERT_STEP_PIN(A), true); \
3369-
_APPLY_STEP(B, !_INVERT_STEP_PIN(B), true); \
3368+
_APPLY_STEP(A, _STEP_STATE(A), true); \
3369+
_APPLY_STEP(B, _STEP_STATE(B), true); \
33703370
_PULSE_WAIT(); \
3371-
_APPLY_STEP(A, _INVERT_STEP_PIN(A), true); \
3372-
_APPLY_STEP(B, _INVERT_STEP_PIN(B), true); \
3371+
_APPLY_STEP(A, !_STEP_STATE(A), true); \
3372+
_APPLY_STEP(B, !_STEP_STATE(B), true); \
33733373
EXTRA_DIR_WAIT_BEFORE(); \
33743374
_APPLY_DIR(A, old_dir.a); _APPLY_DIR(B, old_dir.b); \
33753375
EXTRA_DIR_WAIT_AFTER(); \
@@ -3466,58 +3466,58 @@ void Stepper::report_positions() {
34663466

34673467
_SAVE_START();
34683468

3469-
X_STEP_WRITE(!INVERT_X_STEP_PIN);
3469+
X_STEP_WRITE(STEP_STATE_X);
34703470
#ifdef Y_STEP_WRITE
3471-
Y_STEP_WRITE(!INVERT_Y_STEP_PIN);
3471+
Y_STEP_WRITE(STEP_STATE_Y);
34723472
#endif
34733473
#ifdef Z_STEP_WRITE
3474-
Z_STEP_WRITE(!INVERT_Z_STEP_PIN);
3474+
Z_STEP_WRITE(STEP_STATE_Z);
34753475
#endif
34763476
#ifdef I_STEP_WRITE
3477-
I_STEP_WRITE(!INVERT_I_STEP_PIN);
3477+
I_STEP_WRITE(STEP_STATE_I);
34783478
#endif
34793479
#ifdef J_STEP_WRITE
3480-
J_STEP_WRITE(!INVERT_J_STEP_PIN);
3480+
J_STEP_WRITE(STEP_STATE_J);
34813481
#endif
34823482
#ifdef K_STEP_WRITE
3483-
K_STEP_WRITE(!INVERT_K_STEP_PIN);
3483+
K_STEP_WRITE(STEP_STATE_K);
34843484
#endif
34853485
#ifdef U_STEP_WRITE
3486-
U_STEP_WRITE(!INVERT_U_STEP_PIN);
3486+
U_STEP_WRITE(STEP_STATE_U);
34873487
#endif
34883488
#ifdef V_STEP_WRITE
3489-
V_STEP_WRITE(!INVERT_V_STEP_PIN);
3489+
V_STEP_WRITE(STEP_STATE_V);
34903490
#endif
34913491
#ifdef W_STEP_WRITE
3492-
W_STEP_WRITE(!INVERT_W_STEP_PIN);
3492+
W_STEP_WRITE(STEP_STATE_W);
34933493
#endif
34943494

34953495
_PULSE_WAIT();
34963496

3497-
X_STEP_WRITE(INVERT_X_STEP_PIN);
3497+
X_STEP_WRITE(!STEP_STATE_X);
34983498
#ifdef Y_STEP_WRITE
3499-
Y_STEP_WRITE(INVERT_Y_STEP_PIN);
3499+
Y_STEP_WRITE(!STEP_STATE_Y);
35003500
#endif
35013501
#ifdef Z_STEP_WRITE
3502-
Z_STEP_WRITE(INVERT_Z_STEP_PIN);
3502+
Z_STEP_WRITE(!STEP_STATE_Z);
35033503
#endif
35043504
#ifdef I_STEP_WRITE
3505-
I_STEP_WRITE(INVERT_I_STEP_PIN);
3505+
I_STEP_WRITE(!STEP_STATE_I);
35063506
#endif
35073507
#ifdef J_STEP_WRITE
3508-
J_STEP_WRITE(INVERT_J_STEP_PIN);
3508+
J_STEP_WRITE(!STEP_STATE_J);
35093509
#endif
35103510
#ifdef K_STEP_WRITE
3511-
K_STEP_WRITE(INVERT_K_STEP_PIN);
3511+
K_STEP_WRITE(!STEP_STATE_K);
35123512
#endif
35133513
#ifdef U_STEP_WRITE
3514-
U_STEP_WRITE(INVERT_U_STEP_PIN);
3514+
U_STEP_WRITE(!STEP_STATE_U);
35153515
#endif
35163516
#ifdef V_STEP_WRITE
3517-
V_STEP_WRITE(INVERT_V_STEP_PIN);
3517+
V_STEP_WRITE(!STEP_STATE_V);
35183518
#endif
35193519
#ifdef W_STEP_WRITE
3520-
W_STEP_WRITE(INVERT_W_STEP_PIN);
3520+
W_STEP_WRITE(!STEP_STATE_W);
35213521
#endif
35223522

35233523
// Restore direction bits

0 commit comments

Comments
 (0)