@@ -382,7 +382,7 @@ xyze_int8_t Stepper::count_direction{0};
382
382
}
383
383
384
384
#if HAS_DUAL_X_STEPPERS
385
- #define X_APPLY_DIR (v,Q ) do { X_DIR_WRITE (v); X2_DIR_WRITE ((v) ^ ENABLED (INVERT_X2_VS_X_DIR )); }while (0 )
385
+ #define X_APPLY_DIR (v,Q ) do { X_DIR_WRITE (v); X2_DIR_WRITE (INVERT_DIR (X2_VS_X, v )); }while (0 )
386
386
#if ENABLED(X_DUAL_ENDSTOPS)
387
387
#define X_APPLY_STEP (v,Q ) DUAL_ENDSTOP_APPLY_STEP(X,v)
388
388
#else
@@ -403,7 +403,7 @@ xyze_int8_t Stepper::count_direction{0};
403
403
#endif
404
404
405
405
#if HAS_DUAL_Y_STEPPERS
406
- #define Y_APPLY_DIR (v,Q ) do { Y_DIR_WRITE (v); Y2_DIR_WRITE ((v) ^ ENABLED (INVERT_Y2_VS_Y_DIR )); }while (0 )
406
+ #define Y_APPLY_DIR (v,Q ) do { Y_DIR_WRITE (v); Y2_DIR_WRITE (INVERT_DIR (Y2_VS_Y, v )); }while (0 )
407
407
#if ENABLED(Y_DUAL_ENDSTOPS)
408
408
#define Y_APPLY_STEP (v,Q ) DUAL_ENDSTOP_APPLY_STEP(Y,v)
409
409
#else
@@ -416,8 +416,8 @@ xyze_int8_t Stepper::count_direction{0};
416
416
417
417
#if NUM_Z_STEPPERS == 4
418
418
#define Z_APPLY_DIR (v,Q ) do { \
419
- Z_DIR_WRITE (v); Z2_DIR_WRITE ((v) ^ ENABLED (INVERT_Z2_VS_Z_DIR )); \
420
- Z3_DIR_WRITE ((v) ^ ENABLED (INVERT_Z3_VS_Z_DIR)) ; Z4_DIR_WRITE ((v) ^ ENABLED (INVERT_Z4_VS_Z_DIR )); \
419
+ Z_DIR_WRITE (v); Z2_DIR_WRITE (INVERT_DIR (Z2_VS_Z, v )); \
420
+ Z3_DIR_WRITE (INVERT_DIR (Z3_VS_Z, v)) ; Z4_DIR_WRITE (INVERT_DIR (Z4_VS_Z, v )); \
421
421
}while (0 )
422
422
#if ENABLED(Z_MULTI_ENDSTOPS)
423
423
#define Z_APPLY_STEP (v,Q ) QUAD_ENDSTOP_APPLY_STEP(Z,v)
@@ -428,7 +428,7 @@ xyze_int8_t Stepper::count_direction{0};
428
428
#endif
429
429
#elif NUM_Z_STEPPERS == 3
430
430
#define Z_APPLY_DIR (v,Q ) do { \
431
- Z_DIR_WRITE (v); Z2_DIR_WRITE ((v) ^ ENABLED (INVERT_Z2_VS_Z_DIR)) ; Z3_DIR_WRITE ((v) ^ ENABLED (INVERT_Z3_VS_Z_DIR )); \
431
+ Z_DIR_WRITE (v); Z2_DIR_WRITE (INVERT_DIR (Z2_VS_Z, v)) ; Z3_DIR_WRITE (INVERT_DIR (Z3_VS_Z, v )); \
432
432
}while (0 )
433
433
#if ENABLED(Z_MULTI_ENDSTOPS)
434
434
#define Z_APPLY_STEP (v,Q ) TRIPLE_ENDSTOP_APPLY_STEP(Z,v)
@@ -438,7 +438,7 @@ xyze_int8_t Stepper::count_direction{0};
438
438
#define Z_APPLY_STEP (v,Q ) do { Z_STEP_WRITE (v); Z2_STEP_WRITE (v); Z3_STEP_WRITE (v); }while (0 )
439
439
#endif
440
440
#elif NUM_Z_STEPPERS == 2
441
- #define Z_APPLY_DIR (v,Q ) do { Z_DIR_WRITE (v); Z2_DIR_WRITE ((v) ^ ENABLED (INVERT_Z2_VS_Z_DIR )); }while (0 )
441
+ #define Z_APPLY_DIR (v,Q ) do { Z_DIR_WRITE (v); Z2_DIR_WRITE (INVERT_DIR (Z2_VS_Z, v )); }while (0 )
442
442
#if ENABLED(Z_MULTI_ENDSTOPS)
443
443
#define Z_APPLY_STEP (v,Q ) DUAL_ENDSTOP_APPLY_STEP(Z,v)
444
444
#elif ENABLED(Z_STEPPER_AUTO_ALIGN)
@@ -3470,14 +3470,14 @@ void Stepper::report_positions() {
3470
3470
#endif
3471
3471
3472
3472
if (applyDir) {
3473
- X_DIR_WRITE (TEST (command, FT_BIT_DIR_X));
3474
- TERN_ (HAS_Y_AXIS, Y_DIR_WRITE (TEST (command, FT_BIT_DIR_Y)));
3475
- TERN_ (HAS_Z_AXIS, Z_DIR_WRITE (z_dir));
3476
- TERN_ (HAS_EXTRUDERS, E0_DIR_WRITE (TEST (command, FT_BIT_DIR_E)));
3473
+ TERN_ (HAS_X_AXIS, X_DIR_WRITE (INVERT_DIR (X, TEST (command, FT_BIT_DIR_X)) ));
3474
+ TERN_ (HAS_Y_AXIS, Y_DIR_WRITE (INVERT_DIR (Y, TEST (command, FT_BIT_DIR_Y) )));
3475
+ TERN_ (HAS_Z_AXIS, Z_DIR_WRITE (INVERT_DIR (Z, z_dir) ));
3476
+ TERN_ (HAS_EXTRUDERS, E0_DIR_WRITE (INVERT_DIR ( E0 , TEST (command, FT_BIT_DIR_E) )));
3477
3477
DIR_WAIT_AFTER ();
3478
3478
}
3479
3479
3480
- X_STEP_WRITE (TEST (command, FT_BIT_STEP_X));
3480
+ TERN_ (HAS_X_AXIS, X_STEP_WRITE (TEST (command, FT_BIT_STEP_X) ));
3481
3481
TERN_ (HAS_Y_AXIS, Y_STEP_WRITE (TEST (command, FT_BIT_STEP_Y)));
3482
3482
TERN_ (HAS_Z_AXIS, Z_STEP_WRITE (z_step));
3483
3483
TERN_ (HAS_EXTRUDERS, E0_STEP_WRITE (TEST (command, FT_BIT_STEP_E)));
@@ -3580,7 +3580,6 @@ void Stepper::report_positions() {
3580
3580
3581
3581
#define _ENABLE_AXIS (A ) enable_axis(_AXIS(A))
3582
3582
#define _READ_DIR (AXIS ) AXIS ##_DIR_READ()
3583
- #define _INVERT_DIR (AXIS ) ENABLED(INVERT_## AXIS ##_DIR)
3584
3583
#define _APPLY_DIR (AXIS, INVERT ) AXIS ##_APPLY_DIR(INVERT, true )
3585
3584
3586
3585
#if MINIMUM_STEPPER_PULSE
@@ -3627,19 +3626,19 @@ void Stepper::report_positions() {
3627
3626
3628
3627
#if DISABLED(DELTA)
3629
3628
3630
- #define BABYSTEP_AXIS (AXIS, INV, DIR ) do { \
3631
- const uint8_t old_dir = _READ_DIR (AXIS); \
3632
- _ENABLE_AXIS (AXIS); \
3633
- DIR_WAIT_BEFORE (); \
3634
- _APPLY_DIR (AXIS, _INVERT_DIR (AXIS)^DIR^ INV); \
3635
- DIR_WAIT_AFTER (); \
3636
- _SAVE_START (); \
3637
- _APPLY_STEP (AXIS, _STEP_STATE (AXIS), true ); \
3638
- _PULSE_WAIT (); \
3639
- _APPLY_STEP (AXIS, !_STEP_STATE (AXIS), true ); \
3640
- EXTRA_DIR_WAIT_BEFORE (); \
3641
- _APPLY_DIR (AXIS, old_dir); \
3642
- EXTRA_DIR_WAIT_AFTER (); \
3629
+ #define BABYSTEP_AXIS (AXIS, INV, DIR ) do { \
3630
+ const uint8_t old_dir = _READ_DIR (AXIS); \
3631
+ _ENABLE_AXIS (AXIS); \
3632
+ DIR_WAIT_BEFORE (); \
3633
+ _APPLY_DIR (AXIS, INVERT_DIR (AXIS, (DIR)^( INV))); \
3634
+ DIR_WAIT_AFTER (); \
3635
+ _SAVE_START (); \
3636
+ _APPLY_STEP (AXIS, _STEP_STATE (AXIS), true ); \
3637
+ _PULSE_WAIT (); \
3638
+ _APPLY_STEP (AXIS, !_STEP_STATE (AXIS), true ); \
3639
+ EXTRA_DIR_WAIT_BEFORE (); \
3640
+ _APPLY_DIR (AXIS, old_dir); \
3641
+ EXTRA_DIR_WAIT_AFTER (); \
3643
3642
}while (0 )
3644
3643
3645
3644
#endif
@@ -3650,8 +3649,8 @@ void Stepper::report_positions() {
3650
3649
const xy_byte_t old_dir = { _READ_DIR (A), _READ_DIR (B) }; \
3651
3650
_ENABLE_AXIS (A); _ENABLE_AXIS (B); \
3652
3651
DIR_WAIT_BEFORE (); \
3653
- _APPLY_DIR (A, _INVERT_DIR (A)^DIR^ INV); \
3654
- _APPLY_DIR (B, _INVERT_DIR (B)^DIR^ INV^ ALT); \
3652
+ _APPLY_DIR (A, INVERT_DIR (A, (DIR)^( INV)); \
3653
+ _APPLY_DIR (B, INVERT_DIR (B, (DIR)^( INV)^( ALT)); \
3655
3654
DIR_WAIT_AFTER (); \
3656
3655
_SAVE_START (); \
3657
3656
_APPLY_STEP (A, _STEP_STATE (A), true ); \
@@ -3725,19 +3724,23 @@ void Stepper::report_positions() {
3725
3724
U_DIR_READ (), V_DIR_READ (), W_DIR_READ ()
3726
3725
);
3727
3726
3728
- X_DIR_WRITE (ENABLED (INVERT_X_DIR) ^ z_direction);
3727
+ #ifdef X_DIR_WRITE
3728
+ X_DIR_WRITE (INVERT_DIR (X, z_direction));
3729
+ #endif
3729
3730
#ifdef Y_DIR_WRITE
3730
- Y_DIR_WRITE (ENABLED (INVERT_Y_DIR) ^ z_direction);
3731
+ Y_DIR_WRITE (INVERT_DIR (Y, z_direction) );
3731
3732
#endif
3732
3733
#ifdef Z_DIR_WRITE
3733
- Z_DIR_WRITE (ENABLED (INVERT_Z_DIR) ^ z_direction);
3734
+ Z_DIR_WRITE (INVERT_DIR (Z, z_direction) );
3734
3735
#endif
3735
3736
3736
3737
DIR_WAIT_AFTER ();
3737
3738
3738
3739
_SAVE_START ();
3739
3740
3740
- X_STEP_WRITE (STEP_STATE_X);
3741
+ #ifdef X_STEP_WRITE
3742
+ X_STEP_WRITE (STEP_STATE_X);
3743
+ #endif
3741
3744
#ifdef Y_STEP_WRITE
3742
3745
Y_STEP_WRITE (STEP_STATE_Y);
3743
3746
#endif
@@ -3747,7 +3750,9 @@ void Stepper::report_positions() {
3747
3750
3748
3751
_PULSE_WAIT ();
3749
3752
3750
- X_STEP_WRITE (!STEP_STATE_X);
3753
+ #ifdef X_STEP_WRITE
3754
+ X_STEP_WRITE (!STEP_STATE_X);
3755
+ #endif
3751
3756
#ifdef Y_STEP_WRITE
3752
3757
Y_STEP_WRITE (!STEP_STATE_Y);
3753
3758
#endif
@@ -3758,7 +3763,9 @@ void Stepper::report_positions() {
3758
3763
// Restore direction bits
3759
3764
EXTRA_DIR_WAIT_BEFORE ();
3760
3765
3761
- X_DIR_WRITE (old_dir.x );
3766
+ #ifdef X_DIR_WRITE
3767
+ X_DIR_WRITE (old_dir.x );
3768
+ #endif
3762
3769
#ifdef Y_DIR_WRITE
3763
3770
Y_DIR_WRITE (old_dir.y );
3764
3771
#endif
0 commit comments