Skip to content

Commit c6ea99f

Browse files
committed
🐛 Fix babystep corrupting DIR
Followup to 2538a7c
1 parent f80e706 commit c6ea99f

File tree

4 files changed

+71
-122
lines changed

4 files changed

+71
-122
lines changed

Marlin/Configuration_adv.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -2188,7 +2188,7 @@
21882188
//#define BABYSTEP_WITHOUT_HOMING
21892189
//#define BABYSTEP_ALWAYS_AVAILABLE // Allow babystepping at all times (not just during movement).
21902190
//#define BABYSTEP_XY // Also enable X/Y Babystepping. Not supported on DELTA!
2191-
#define BABYSTEP_INVERT_Z false // Change if Z babysteps should go the other way
2191+
//#define BABYSTEP_INVERT_Z // Enable if Z babysteps should go the other way
21922192
//#define BABYSTEP_MILLIMETER_UNITS // Specify BABYSTEP_MULTIPLICATOR_(XY|Z) in mm instead of micro-steps
21932193
#define BABYSTEP_MULTIPLICATOR_Z 1 // (steps or mm) Steps or millimeter distance for each Z babystep
21942194
#define BABYSTEP_MULTIPLICATOR_XY 1 // (steps or mm) Steps or millimeter distance for each XY babystep

Marlin/src/module/stepper.cpp

+35-86
Original file line numberDiff line numberDiff line change
@@ -3609,31 +3609,31 @@ void Stepper::report_positions() {
36093609

36103610
#if DISABLED(DELTA)
36113611

3612-
#define BABYSTEP_AXIS(AXIS, DIR, INV) do{ \
3613-
const uint8_t old_dir = _READ_DIR(AXIS); \
3614-
_ENABLE_AXIS(AXIS); \
3615-
DIR_WAIT_BEFORE(); \
3616-
_APPLY_DIR(AXIS, (DIR)^(INV)); \
3617-
DIR_WAIT_AFTER(); \
3618-
_SAVE_START(); \
3619-
_APPLY_STEP(AXIS, _STEP_STATE(AXIS), true); \
3620-
_PULSE_WAIT(); \
3621-
_APPLY_STEP(AXIS, !_STEP_STATE(AXIS), true); \
3622-
EXTRA_DIR_WAIT_BEFORE(); \
3623-
_APPLY_DIR(AXIS, old_dir); \
3624-
EXTRA_DIR_WAIT_AFTER(); \
3612+
#define BABYSTEP_AXIS(AXIS, FWD, INV) do{ \
3613+
const bool old_fwd = _READ_DIR(AXIS); \
3614+
_ENABLE_AXIS(AXIS); \
3615+
DIR_WAIT_BEFORE(); \
3616+
_APPLY_DIR(AXIS, (FWD)^(INV)); \
3617+
DIR_WAIT_AFTER(); \
3618+
_SAVE_START(); \
3619+
_APPLY_STEP(AXIS, _STEP_STATE(AXIS), true); \
3620+
_PULSE_WAIT(); \
3621+
_APPLY_STEP(AXIS, !_STEP_STATE(AXIS), true); \
3622+
EXTRA_DIR_WAIT_BEFORE(); \
3623+
_APPLY_DIR(AXIS, old_fwd); \
3624+
EXTRA_DIR_WAIT_AFTER(); \
36253625
}while(0)
36263626

36273627
#endif
36283628

36293629
#if IS_CORE
36303630

3631-
#define BABYSTEP_CORE(A, B, DIR, INV, ALT) do{ \
3632-
const xy_byte_t old_dir = { _READ_DIR(A), _READ_DIR(B) }; \
3631+
#define BABYSTEP_CORE(A, B, FWD, INV, ALT) do{ \
3632+
const xy_byte_t old_fwd = { _READ_DIR(A), _READ_DIR(B) }; \
36333633
_ENABLE_AXIS(A); _ENABLE_AXIS(B); \
36343634
DIR_WAIT_BEFORE(); \
3635-
_APPLY_DIR(A, (DIR)^(INV)); \
3636-
_APPLY_DIR(B, (DIR)^(INV)^(ALT)); \
3635+
_APPLY_DIR(A, (FWD)^(INV)); \
3636+
_APPLY_DIR(B, (FWD)^(INV)^(ALT)); \
36373637
DIR_WAIT_AFTER(); \
36383638
_SAVE_START(); \
36393639
_APPLY_STEP(A, _STEP_STATE(A), true); \
@@ -3642,7 +3642,7 @@ void Stepper::report_positions() {
36423642
_APPLY_STEP(A, !_STEP_STATE(A), true); \
36433643
_APPLY_STEP(B, !_STEP_STATE(B), true); \
36443644
EXTRA_DIR_WAIT_BEFORE(); \
3645-
_APPLY_DIR(A, old_dir.a); _APPLY_DIR(B, old_dir.b); \
3645+
_APPLY_DIR(A, old_fwd.a); _APPLY_DIR(B, old_fwd.b); \
36463646
EXTRA_DIR_WAIT_AFTER(); \
36473647
}while(0)
36483648

@@ -3683,104 +3683,53 @@ void Stepper::report_positions() {
36833683
case Z_AXIS: {
36843684

36853685
#if CORE_IS_XZ
3686-
BABYSTEP_CORE(X, Z, direction, BABYSTEP_INVERT_Z, (CORESIGN(1)>0));
3686+
BABYSTEP_CORE(X, Z, direction, ENABLED(BABYSTEP_INVERT_Z), (CORESIGN(1)>0));
36873687
#elif CORE_IS_YZ
3688-
BABYSTEP_CORE(Y, Z, direction, BABYSTEP_INVERT_Z, (CORESIGN(1)<0));
3688+
BABYSTEP_CORE(Y, Z, direction, ENABLED(BABYSTEP_INVERT_Z), (CORESIGN(1)<0));
36893689
#elif DISABLED(DELTA)
3690-
BABYSTEP_AXIS(Z, direction, BABYSTEP_INVERT_Z);
3690+
BABYSTEP_AXIS(Z, direction, ENABLED(BABYSTEP_INVERT_Z));
36913691

36923692
#else // DELTA
36933693

36943694
const bool z_direction = TERN_(BABYSTEP_INVERT_Z, !) direction;
36953695

3696-
NUM_AXIS_CODE(
3697-
enable_axis(X_AXIS), enable_axis(Y_AXIS), enable_axis(Z_AXIS),
3698-
enable_axis(I_AXIS), enable_axis(J_AXIS), enable_axis(K_AXIS),
3699-
enable_axis(U_AXIS), enable_axis(V_AXIS), enable_axis(W_AXIS)
3700-
);
3696+
enable_axis(A_AXIS); enable_axis(B_AXIS); enable_axis(C_AXIS);
37013697

37023698
DIR_WAIT_BEFORE();
37033699

3704-
const xyz_byte_t old_dir = NUM_AXIS_ARRAY(
3705-
X_DIR_READ(), Y_DIR_READ(), Z_DIR_READ(),
3706-
I_DIR_READ(), J_DIR_READ(), K_DIR_READ(),
3707-
U_DIR_READ(), V_DIR_READ(), W_DIR_READ()
3708-
);
3700+
const bool old_fwd[3] = { X_DIR_READ(), Y_DIR_READ(), Z_DIR_READ() };
37093701

3710-
#ifdef X_DIR_WRITE
3711-
X_DIR_WRITE(z_direction);
3712-
#endif
3713-
#ifdef Y_DIR_WRITE
3714-
Y_DIR_WRITE(z_direction);
3715-
#endif
3716-
#ifdef Z_DIR_WRITE
3717-
Z_DIR_WRITE(z_direction);
3718-
#endif
3702+
X_DIR_WRITE(z_direction);
3703+
Y_DIR_WRITE(z_direction);
3704+
Z_DIR_WRITE(z_direction);
37193705

37203706
DIR_WAIT_AFTER();
37213707

37223708
_SAVE_START();
37233709

3724-
#ifdef X_STEP_WRITE
3725-
X_STEP_WRITE(STEP_STATE_X);
3726-
#endif
3727-
#ifdef Y_STEP_WRITE
3728-
Y_STEP_WRITE(STEP_STATE_Y);
3729-
#endif
3730-
#ifdef Z_STEP_WRITE
3731-
Z_STEP_WRITE(STEP_STATE_Z);
3732-
#endif
3710+
X_STEP_WRITE(STEP_STATE_X);
3711+
Y_STEP_WRITE(STEP_STATE_Y);
3712+
Z_STEP_WRITE(STEP_STATE_Z);
37333713

37343714
_PULSE_WAIT();
37353715

3736-
#ifdef X_STEP_WRITE
3737-
X_STEP_WRITE(!STEP_STATE_X);
3738-
#endif
3739-
#ifdef Y_STEP_WRITE
3740-
Y_STEP_WRITE(!STEP_STATE_Y);
3741-
#endif
3742-
#ifdef Z_STEP_WRITE
3743-
Z_STEP_WRITE(!STEP_STATE_Z);
3744-
#endif
3716+
X_STEP_WRITE(!STEP_STATE_X);
3717+
Y_STEP_WRITE(!STEP_STATE_Y);
3718+
Z_STEP_WRITE(!STEP_STATE_Z);
37453719

37463720
// Restore direction bits
37473721
EXTRA_DIR_WAIT_BEFORE();
37483722

3749-
#ifdef X_DIR_WRITE
3750-
X_DIR_WRITE(old_dir.x);
3751-
#endif
3752-
#ifdef Y_DIR_WRITE
3753-
Y_DIR_WRITE(old_dir.y);
3754-
#endif
3755-
#ifdef Z_DIR_WRITE
3756-
Z_DIR_WRITE(old_dir.z);
3757-
#endif
3723+
X_DIR_WRITE(old_fwd[A_AXIS]);
3724+
Y_DIR_WRITE(old_fwd[B_AXIS]);
3725+
Z_DIR_WRITE(old_fwd[C_AXIS]);
37583726

37593727
EXTRA_DIR_WAIT_AFTER();
37603728

37613729
#endif
37623730

37633731
} break;
37643732

3765-
#if HAS_I_AXIS
3766-
case I_AXIS: BABYSTEP_AXIS(I, direction, 0); break;
3767-
#endif
3768-
#if HAS_J_AXIS
3769-
case J_AXIS: BABYSTEP_AXIS(J, direction, 0); break;
3770-
#endif
3771-
#if HAS_K_AXIS
3772-
case K_AXIS: BABYSTEP_AXIS(K, direction, 0); break;
3773-
#endif
3774-
#if HAS_U_AXIS
3775-
case U_AXIS: BABYSTEP_AXIS(U, direction, 0); break;
3776-
#endif
3777-
#if HAS_V_AXIS
3778-
case V_AXIS: BABYSTEP_AXIS(V, direction, 0); break;
3779-
#endif
3780-
#if HAS_W_AXIS
3781-
case W_AXIS: BABYSTEP_AXIS(W, direction, 0); break;
3782-
#endif
3783-
37843733
default: break;
37853734
}
37863735

Marlin/src/module/stepper/indirection.h

+22-22
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
9191
#ifndef X_DIR_INIT
9292
#define X_DIR_INIT() SET_OUTPUT(X_DIR_PIN)
9393
#define X_DIR_WRITE(STATE) WRITE(X_DIR_PIN,INVERT_DIR(X, STATE))
94-
#define X_DIR_READ() bool(READ(X_DIR_PIN))
94+
#define X_DIR_READ() INVERT_DIR(X, bool(READ(X_DIR_PIN)))
9595
#endif
9696
#define X_STEP_INIT() SET_OUTPUT(X_STEP_PIN)
9797
#ifndef X_STEP_WRITE
@@ -109,7 +109,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
109109
#ifndef Y_DIR_INIT
110110
#define Y_DIR_INIT() SET_OUTPUT(Y_DIR_PIN)
111111
#define Y_DIR_WRITE(STATE) WRITE(Y_DIR_PIN,INVERT_DIR(Y, STATE))
112-
#define Y_DIR_READ() bool(READ(Y_DIR_PIN))
112+
#define Y_DIR_READ() INVERT_DIR(Y, bool(READ(Y_DIR_PIN)))
113113
#endif
114114
#define Y_STEP_INIT() SET_OUTPUT(Y_STEP_PIN)
115115
#ifndef Y_STEP_WRITE
@@ -128,7 +128,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
128128
#ifndef Z_DIR_INIT
129129
#define Z_DIR_INIT() SET_OUTPUT(Z_DIR_PIN)
130130
#define Z_DIR_WRITE(STATE) WRITE(Z_DIR_PIN,INVERT_DIR(Z, STATE))
131-
#define Z_DIR_READ() bool(READ(Z_DIR_PIN))
131+
#define Z_DIR_READ() INVERT_DIR(Z, bool(READ(Z_DIR_PIN)))
132132
#endif
133133
#define Z_STEP_INIT() SET_OUTPUT(Z_STEP_PIN)
134134
#ifndef Z_STEP_WRITE
@@ -147,7 +147,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
147147
#ifndef X2_DIR_INIT
148148
#define X2_DIR_INIT() SET_OUTPUT(X2_DIR_PIN)
149149
#define X2_DIR_WRITE(STATE) WRITE(X2_DIR_PIN,INVERT_DIR(X2, STATE))
150-
#define X2_DIR_READ() bool(READ(X2_DIR_PIN))
150+
#define X2_DIR_READ() INVERT_DIR(X2, bool(READ(X2_DIR_PIN)))
151151
#endif
152152
#define X2_STEP_INIT() SET_OUTPUT(X2_STEP_PIN)
153153
#ifndef X2_STEP_WRITE
@@ -166,7 +166,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
166166
#ifndef Y2_DIR_INIT
167167
#define Y2_DIR_INIT() SET_OUTPUT(Y2_DIR_PIN)
168168
#define Y2_DIR_WRITE(STATE) WRITE(Y2_DIR_PIN,INVERT_DIR(Y2, STATE))
169-
#define Y2_DIR_READ() bool(READ(Y2_DIR_PIN))
169+
#define Y2_DIR_READ() INVERT_DIR(Y2, bool(READ(Y2_DIR_PIN)))
170170
#endif
171171
#define Y2_STEP_INIT() SET_OUTPUT(Y2_STEP_PIN)
172172
#ifndef Y2_STEP_WRITE
@@ -187,7 +187,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
187187
#ifndef Z2_DIR_INIT
188188
#define Z2_DIR_INIT() SET_OUTPUT(Z2_DIR_PIN)
189189
#define Z2_DIR_WRITE(STATE) WRITE(Z2_DIR_PIN,INVERT_DIR(Z2, STATE))
190-
#define Z2_DIR_READ() bool(READ(Z2_DIR_PIN))
190+
#define Z2_DIR_READ() INVERT_DIR(Z2, bool(READ(Z2_DIR_PIN)))
191191
#endif
192192
#define Z2_STEP_INIT() SET_OUTPUT(Z2_STEP_PIN)
193193
#ifndef Z2_STEP_WRITE
@@ -208,7 +208,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
208208
#ifndef Z3_DIR_INIT
209209
#define Z3_DIR_INIT() SET_OUTPUT(Z3_DIR_PIN)
210210
#define Z3_DIR_WRITE(STATE) WRITE(Z3_DIR_PIN,INVERT_DIR(Z3, STATE))
211-
#define Z3_DIR_READ() bool(READ(Z3_DIR_PIN))
211+
#define Z3_DIR_READ() INVERT_DIR(Z3, bool(READ(Z3_DIR_PIN)))
212212
#endif
213213
#define Z3_STEP_INIT() SET_OUTPUT(Z3_STEP_PIN)
214214
#ifndef Z3_STEP_WRITE
@@ -229,7 +229,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
229229
#ifndef Z4_DIR_INIT
230230
#define Z4_DIR_INIT() SET_OUTPUT(Z4_DIR_PIN)
231231
#define Z4_DIR_WRITE(STATE) WRITE(Z4_DIR_PIN,INVERT_DIR(Z4, STATE))
232-
#define Z4_DIR_READ() bool(READ(Z4_DIR_PIN))
232+
#define Z4_DIR_READ() INVERT_DIR(Z4, bool(READ(Z4_DIR_PIN)))
233233
#endif
234234
#define Z4_STEP_INIT() SET_OUTPUT(Z4_STEP_PIN)
235235
#ifndef Z4_STEP_WRITE
@@ -250,7 +250,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
250250
#ifndef I_DIR_INIT
251251
#define I_DIR_INIT() SET_OUTPUT(I_DIR_PIN)
252252
#define I_DIR_WRITE(STATE) WRITE(I_DIR_PIN,INVERT_DIR(I, STATE))
253-
#define I_DIR_READ() bool(READ(I_DIR_PIN))
253+
#define I_DIR_READ() INVERT_DIR(I, bool(READ(I_DIR_PIN)))
254254
#endif
255255
#define I_STEP_INIT() SET_OUTPUT(I_STEP_PIN)
256256
#ifndef I_STEP_WRITE
@@ -269,7 +269,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
269269
#ifndef J_DIR_INIT
270270
#define J_DIR_INIT() SET_OUTPUT(J_DIR_PIN)
271271
#define J_DIR_WRITE(STATE) WRITE(J_DIR_PIN,INVERT_DIR(J, STATE))
272-
#define J_DIR_READ() bool(READ(J_DIR_PIN))
272+
#define J_DIR_READ() INVERT_DIR(J, bool(READ(J_DIR_PIN)))
273273
#endif
274274
#define J_STEP_INIT() SET_OUTPUT(J_STEP_PIN)
275275
#ifndef J_STEP_WRITE
@@ -288,7 +288,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
288288
#ifndef K_DIR_INIT
289289
#define K_DIR_INIT() SET_OUTPUT(K_DIR_PIN)
290290
#define K_DIR_WRITE(STATE) WRITE(K_DIR_PIN,INVERT_DIR(K, STATE))
291-
#define K_DIR_READ() bool(READ(K_DIR_PIN))
291+
#define K_DIR_READ() INVERT_DIR(K, bool(READ(K_DIR_PIN)))
292292
#endif
293293
#define K_STEP_INIT() SET_OUTPUT(K_STEP_PIN)
294294
#ifndef K_STEP_WRITE
@@ -307,7 +307,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
307307
#ifndef U_DIR_INIT
308308
#define U_DIR_INIT() SET_OUTPUT(U_DIR_PIN)
309309
#define U_DIR_WRITE(STATE) WRITE(U_DIR_PIN,INVERT_DIR(U, STATE))
310-
#define U_DIR_READ() bool(READ(U_DIR_PIN))
310+
#define U_DIR_READ() INVERT_DIR(U, bool(READ(U_DIR_PIN)))
311311
#endif
312312
#define U_STEP_INIT() SET_OUTPUT(U_STEP_PIN)
313313
#ifndef U_STEP_WRITE
@@ -326,7 +326,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
326326
#ifndef V_DIR_INIT
327327
#define V_DIR_INIT() SET_OUTPUT(V_DIR_PIN)
328328
#define V_DIR_WRITE(STATE) WRITE(V_DIR_PIN,INVERT_DIR(V, STATE))
329-
#define V_DIR_READ() bool(READ(V_DIR_PIN))
329+
#define V_DIR_READ() INVERT_DIR(V, bool(READ(V_DIR_PIN)))
330330
#endif
331331
#define V_STEP_INIT() SET_OUTPUT(V_STEP_PIN)
332332
#ifndef V_STEP_WRITE
@@ -345,7 +345,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
345345
#ifndef W_DIR_INIT
346346
#define W_DIR_INIT() SET_OUTPUT(W_DIR_PIN)
347347
#define W_DIR_WRITE(STATE) WRITE(W_DIR_PIN,INVERT_DIR(W, STATE))
348-
#define W_DIR_READ() bool(READ(W_DIR_PIN))
348+
#define W_DIR_READ() INVERT_DIR(W, bool(READ(W_DIR_PIN)))
349349
#endif
350350
#define W_STEP_INIT() SET_OUTPUT(W_STEP_PIN)
351351
#ifndef W_STEP_WRITE
@@ -363,7 +363,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
363363
#ifndef E0_DIR_INIT
364364
#define E0_DIR_INIT() SET_OUTPUT(E0_DIR_PIN)
365365
#define E0_DIR_WRITE(STATE) WRITE(E0_DIR_PIN,INVERT_DIR(E0, STATE))
366-
#define E0_DIR_READ() bool(READ(E0_DIR_PIN))
366+
#define E0_DIR_READ() INVERT_DIR(E0, bool(READ(E0_DIR_PIN)))
367367
#endif
368368
#define E0_STEP_INIT() SET_OUTPUT(E0_STEP_PIN)
369369
#ifndef E0_STEP_WRITE
@@ -380,7 +380,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
380380
#ifndef E1_DIR_INIT
381381
#define E1_DIR_INIT() SET_OUTPUT(E1_DIR_PIN)
382382
#define E1_DIR_WRITE(STATE) WRITE(E1_DIR_PIN,INVERT_DIR(E1, STATE))
383-
#define E1_DIR_READ() bool(READ(E1_DIR_PIN))
383+
#define E1_DIR_READ() INVERT_DIR(E1, bool(READ(E1_DIR_PIN)))
384384
#endif
385385
#define E1_STEP_INIT() SET_OUTPUT(E1_STEP_PIN)
386386
#ifndef E1_STEP_WRITE
@@ -397,7 +397,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
397397
#ifndef E2_DIR_INIT
398398
#define E2_DIR_INIT() SET_OUTPUT(E2_DIR_PIN)
399399
#define E2_DIR_WRITE(STATE) WRITE(E2_DIR_PIN,INVERT_DIR(E2, STATE))
400-
#define E2_DIR_READ() bool(READ(E2_DIR_PIN))
400+
#define E2_DIR_READ() INVERT_DIR(E2, bool(READ(E2_DIR_PIN)))
401401
#endif
402402
#define E2_STEP_INIT() SET_OUTPUT(E2_STEP_PIN)
403403
#ifndef E2_STEP_WRITE
@@ -414,7 +414,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
414414
#ifndef E3_DIR_INIT
415415
#define E3_DIR_INIT() SET_OUTPUT(E3_DIR_PIN)
416416
#define E3_DIR_WRITE(STATE) WRITE(E3_DIR_PIN,INVERT_DIR(E3, STATE))
417-
#define E3_DIR_READ() bool(READ(E3_DIR_PIN))
417+
#define E3_DIR_READ() INVERT_DIR(E3, bool(READ(E3_DIR_PIN)))
418418
#endif
419419
#define E3_STEP_INIT() SET_OUTPUT(E3_STEP_PIN)
420420
#ifndef E3_STEP_WRITE
@@ -431,7 +431,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
431431
#ifndef E4_DIR_INIT
432432
#define E4_DIR_INIT() SET_OUTPUT(E4_DIR_PIN)
433433
#define E4_DIR_WRITE(STATE) WRITE(E4_DIR_PIN,INVERT_DIR(E4, STATE))
434-
#define E4_DIR_READ() bool(READ(E4_DIR_PIN))
434+
#define E4_DIR_READ() INVERT_DIR(E4, bool(READ(E4_DIR_PIN)))
435435
#endif
436436
#define E4_STEP_INIT() SET_OUTPUT(E4_STEP_PIN)
437437
#ifndef E4_STEP_WRITE
@@ -448,7 +448,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
448448
#ifndef E5_DIR_INIT
449449
#define E5_DIR_INIT() SET_OUTPUT(E5_DIR_PIN)
450450
#define E5_DIR_WRITE(STATE) WRITE(E5_DIR_PIN,INVERT_DIR(E5, STATE))
451-
#define E5_DIR_READ() bool(READ(E5_DIR_PIN))
451+
#define E5_DIR_READ() INVERT_DIR(E5, bool(READ(E5_DIR_PIN)))
452452
#endif
453453
#define E5_STEP_INIT() SET_OUTPUT(E5_STEP_PIN)
454454
#ifndef E5_STEP_WRITE
@@ -465,7 +465,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
465465
#ifndef E6_DIR_INIT
466466
#define E6_DIR_INIT() SET_OUTPUT(E6_DIR_PIN)
467467
#define E6_DIR_WRITE(STATE) WRITE(E6_DIR_PIN,INVERT_DIR(E6, STATE))
468-
#define E6_DIR_READ() bool(READ(E6_DIR_PIN))
468+
#define E6_DIR_READ() INVERT_DIR(E6, bool(READ(E6_DIR_PIN)))
469469
#endif
470470
#define E6_STEP_INIT() SET_OUTPUT(E6_STEP_PIN)
471471
#ifndef E6_STEP_WRITE
@@ -482,7 +482,7 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
482482
#ifndef E7_DIR_INIT
483483
#define E7_DIR_INIT() SET_OUTPUT(E7_DIR_PIN)
484484
#define E7_DIR_WRITE(STATE) WRITE(E7_DIR_PIN,INVERT_DIR(E7, STATE))
485-
#define E7_DIR_READ() bool(READ(E7_DIR_PIN))
485+
#define E7_DIR_READ() INVERT_DIR(E7, bool(READ(E7_DIR_PIN)))
486486
#endif
487487
#define E7_STEP_INIT() SET_OUTPUT(E7_STEP_PIN)
488488
#ifndef E7_STEP_WRITE

0 commit comments

Comments
 (0)