mirror of
https://github.com/MarlinFirmware/Marlin.git
synced 2025-12-30 03:10:33 -07:00
indirection clarity, missed break
This commit is contained in:
parent
89557f3f53
commit
072636cc4f
1 changed files with 66 additions and 23 deletions
|
|
@ -577,8 +577,14 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
* Extruder indirection for the single E axis
|
||||
*/
|
||||
#if HAS_SWITCHING_EXTRUDER // One stepper driver per two extruders, reversed on odd index
|
||||
|
||||
#if EXTRUDERS > 7
|
||||
#define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else if (E < 6) { E2_STEP_WRITE(V); } else { E3_STEP_WRITE(V); } }while(0)
|
||||
#define E_STEP_WRITE(E,V) do{ \
|
||||
if (E < 2) { E0_STEP_WRITE(V); } \
|
||||
else if (E < 4) { E1_STEP_WRITE(V); } \
|
||||
else if (E < 6) { E2_STEP_WRITE(V); } \
|
||||
else { E3_STEP_WRITE(V); } \
|
||||
}while(0)
|
||||
#define FWD_E_DIR(E) do{ switch (E) { \
|
||||
case 0: E0_DIR_WRITE(HIGH); break; case 1: E0_DIR_WRITE(LOW ); break; \
|
||||
case 2: E1_DIR_WRITE(HIGH); break; case 3: E1_DIR_WRITE(LOW ); break; \
|
||||
|
|
@ -592,7 +598,12 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
case 6: E3_DIR_WRITE(LOW ); break; case 7: E3_DIR_WRITE(HIGH); break; \
|
||||
} }while(0)
|
||||
#elif EXTRUDERS > 6
|
||||
#define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else if (E < 6) { E2_STEP_WRITE(V); } else { E3_STEP_WRITE(V); } }while(0)
|
||||
#define E_STEP_WRITE(E,V) do{ \
|
||||
if (E < 2) { E0_STEP_WRITE(V); } \
|
||||
else if (E < 4) { E1_STEP_WRITE(V); } \
|
||||
else if (E < 6) { E2_STEP_WRITE(V); } \
|
||||
else { E3_STEP_WRITE(V); } \
|
||||
}while(0)
|
||||
#define FWD_E_DIR(E) do{ switch (E) { \
|
||||
case 0: E0_DIR_WRITE(HIGH); break; case 1: E0_DIR_WRITE(LOW ); break; \
|
||||
case 2: E1_DIR_WRITE(HIGH); break; case 3: E1_DIR_WRITE(LOW ); break; \
|
||||
|
|
@ -603,9 +614,14 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
case 0: E0_DIR_WRITE(LOW ); break; case 1: E0_DIR_WRITE(HIGH); break; \
|
||||
case 2: E1_DIR_WRITE(LOW ); break; case 3: E1_DIR_WRITE(HIGH); break; \
|
||||
case 4: E2_DIR_WRITE(LOW ); break; case 5: E2_DIR_WRITE(HIGH); break; \
|
||||
case 6: E3_DIR_WRITE(LOW ); } }while(0)
|
||||
case 6: E3_DIR_WRITE(LOW ); \
|
||||
} }while(0)
|
||||
#elif EXTRUDERS > 5
|
||||
#define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else { E2_STEP_WRITE(V); } }while(0)
|
||||
#define E_STEP_WRITE(E,V) do{ \
|
||||
if (E < 2) { E0_STEP_WRITE(V); } \
|
||||
else if (E < 4) { E1_STEP_WRITE(V); } \
|
||||
else { E2_STEP_WRITE(V); } \
|
||||
}while(0)
|
||||
#define FWD_E_DIR(E) do{ switch (E) { \
|
||||
case 0: E0_DIR_WRITE(HIGH); break; case 1: E0_DIR_WRITE(LOW ); break; \
|
||||
case 2: E1_DIR_WRITE(HIGH); break; case 3: E1_DIR_WRITE(LOW ); break; \
|
||||
|
|
@ -617,7 +633,11 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
case 4: E2_DIR_WRITE(LOW ); break; case 5: E2_DIR_WRITE(HIGH); break; \
|
||||
} }while(0)
|
||||
#elif EXTRUDERS > 4
|
||||
#define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else if (E < 4) { E1_STEP_WRITE(V); } else { E2_STEP_WRITE(V); } }while(0)
|
||||
#define E_STEP_WRITE(E,V) do{ \
|
||||
if (E < 2) { E0_STEP_WRITE(V); } \
|
||||
else if (E < 4) { E1_STEP_WRITE(V); } \
|
||||
else { E2_STEP_WRITE(V); } \
|
||||
}while(0)
|
||||
#define FWD_E_DIR(E) do{ switch (E) { \
|
||||
case 0: E0_DIR_WRITE(HIGH); break; case 1: E0_DIR_WRITE(LOW ); break; \
|
||||
case 2: E1_DIR_WRITE(HIGH); break; case 3: E1_DIR_WRITE(LOW ); break; \
|
||||
|
|
@ -629,7 +649,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
case 4: E2_DIR_WRITE(LOW ); break; \
|
||||
} }while(0)
|
||||
#elif EXTRUDERS > 3
|
||||
#define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0)
|
||||
#define E_STEP_WRITE(E,V) do{ \
|
||||
if (E < 2) { E0_STEP_WRITE(V); } \
|
||||
else { E1_STEP_WRITE(V); } \
|
||||
}while(0)
|
||||
#define FWD_E_DIR(E) do{ switch (E) { \
|
||||
case 0: E0_DIR_WRITE(HIGH); break; case 1: E0_DIR_WRITE(LOW ); break; \
|
||||
case 2: E1_DIR_WRITE(HIGH); break; case 3: E1_DIR_WRITE(LOW ); break; \
|
||||
|
|
@ -639,7 +662,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
case 2: E1_DIR_WRITE(LOW ); break; case 3: E1_DIR_WRITE(HIGH); break; \
|
||||
} }while(0)
|
||||
#elif EXTRUDERS > 2
|
||||
#define E_STEP_WRITE(E,V) do{ if (E < 2) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0)
|
||||
#define E_STEP_WRITE(E,V) do{ \
|
||||
if (E < 2) { E0_STEP_WRITE(V); } \
|
||||
else { E1_STEP_WRITE(V); } \
|
||||
}while(0)
|
||||
#define FWD_E_DIR(E) do{ switch (E) { \
|
||||
case 0: E0_DIR_WRITE(HIGH); break; case 1: E0_DIR_WRITE(LOW ); break; \
|
||||
case 2: E1_DIR_WRITE(HIGH); break; \
|
||||
|
|
@ -673,8 +699,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
#if E_STEPPERS > 7
|
||||
|
||||
#define _E_STEP_WRITE(E,V) do{ switch (E) { \
|
||||
case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \
|
||||
case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; case 6: E6_STEP_WRITE(V); break; case 7: E7_STEP_WRITE(V); break; \
|
||||
case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; \
|
||||
case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \
|
||||
case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; \
|
||||
case 6: E6_STEP_WRITE(V); break; case 7: E7_STEP_WRITE(V); break; \
|
||||
} }while(0)
|
||||
#define _FWD_E_DIR(E) do{ switch (E) { \
|
||||
case 0: E0_DIR_WRITE(HIGH); break; case 1: E1_DIR_WRITE(HIGH); break; \
|
||||
|
|
@ -692,8 +720,10 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
#elif E_STEPPERS > 6
|
||||
|
||||
#define _E_STEP_WRITE(E,V) do{ switch (E) { \
|
||||
case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \
|
||||
case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; case 6: E6_STEP_WRITE(V); break; \
|
||||
case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; \
|
||||
case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \
|
||||
case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; \
|
||||
case 6: E6_STEP_WRITE(V); break; \
|
||||
} }while(0)
|
||||
#define _FWD_E_DIR(E) do{ switch (E) { \
|
||||
case 0: E0_DIR_WRITE(HIGH); break; case 1: E1_DIR_WRITE(HIGH); break; \
|
||||
|
|
@ -711,7 +741,8 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
#elif E_STEPPERS > 5
|
||||
|
||||
#define _E_STEP_WRITE(E,V) do{ switch (E) { \
|
||||
case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \
|
||||
case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; \
|
||||
case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \
|
||||
case 4: E4_STEP_WRITE(V); break; case 5: E5_STEP_WRITE(V); break; \
|
||||
} }while(0)
|
||||
#define _FWD_E_DIR(E) do{ switch (E) { \
|
||||
|
|
@ -728,7 +759,8 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
#elif E_STEPPERS > 4
|
||||
|
||||
#define _E_STEP_WRITE(E,V) do{ switch (E) { \
|
||||
case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \
|
||||
case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; \
|
||||
case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \
|
||||
case 4: E4_STEP_WRITE(V); break; \
|
||||
} }while(0)
|
||||
#define _FWD_E_DIR(E) do{ switch (E) { \
|
||||
|
|
@ -745,7 +777,8 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
#elif E_STEPPERS > 3
|
||||
|
||||
#define _E_STEP_WRITE(E,V) do{ switch (E) { \
|
||||
case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \
|
||||
case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; \
|
||||
case 2: E2_STEP_WRITE(V); break; case 3: E3_STEP_WRITE(V); break; \
|
||||
} }while(0)
|
||||
#define _FWD_E_DIR(E) do{ switch (E) { \
|
||||
case 0: E0_DIR_WRITE(HIGH); break; case 1: E1_DIR_WRITE(HIGH); break; \
|
||||
|
|
@ -758,15 +791,25 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
|
||||
#elif E_STEPPERS > 2
|
||||
|
||||
#define _E_STEP_WRITE(E,V) do{ switch (E) { case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; case 2: E2_STEP_WRITE(V); } }while(0)
|
||||
#define _FWD_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(HIGH); break; case 1: E1_DIR_WRITE(HIGH); break; case 2: E2_DIR_WRITE(HIGH); } }while(0)
|
||||
#define _REV_E_DIR(E) do{ switch (E) { case 0: E0_DIR_WRITE(LOW ); break; case 1: E1_DIR_WRITE(LOW ); break; case 2: E2_DIR_WRITE(LOW ); } }while(0)
|
||||
#define _E_STEP_WRITE(E,V) do{ switch (E) { \
|
||||
case 0: E0_STEP_WRITE(V); break; case 1: E1_STEP_WRITE(V); break; \
|
||||
case 2: E2_STEP_WRITE(V); break; \
|
||||
} }while(0)
|
||||
#define _FWD_E_DIR(E) do{ switch (E) { \
|
||||
case 0: E0_DIR_WRITE(HIGH); break; case 1: E1_DIR_WRITE(HIGH); break; \
|
||||
case 2: E2_DIR_WRITE(HIGH); break; \
|
||||
} }while(0)
|
||||
#define _REV_E_DIR(E) do{ switch (E) { \
|
||||
case 0: E0_DIR_WRITE(LOW ); break; case 1: E1_DIR_WRITE(LOW ); break; \
|
||||
case 2: E2_DIR_WRITE(LOW ); break; \
|
||||
} }while(0)
|
||||
|
||||
#else
|
||||
|
||||
#define _E_STEP_WRITE(E,V) do{ if (E == 0) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0)
|
||||
#define _E_STEP_WRITE(E,V) do{ if (E == 0) { E0_STEP_WRITE(V); } else { E1_STEP_WRITE(V); } }while(0)
|
||||
#define _FWD_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(HIGH); } else { E1_DIR_WRITE(HIGH); } }while(0)
|
||||
#define _REV_E_DIR(E) do{ if (E == 0) { E0_DIR_WRITE(LOW ); } else { E1_DIR_WRITE(LOW ); } }while(0)
|
||||
|
||||
#endif
|
||||
|
||||
#if HAS_DUPLICATION_MODE
|
||||
|
|
@ -781,19 +824,19 @@ void reset_stepper_drivers(); // Called by settings.load / settings.reset
|
|||
#define RDIR(N) DUPE(N,DIR,LOW );
|
||||
|
||||
#define E_STEP_WRITE(E,V) do{ if (extruder_duplication_enabled) { REPEAT2(E_STEPPERS, DUPE, STEP, V); } else _E_STEP_WRITE(E,V); }while(0)
|
||||
#define FWD_E_DIR(E) do{ if (extruder_duplication_enabled) { REPEAT(E_STEPPERS, NDIR); } else _FWD_E_DIR(E); }while(0)
|
||||
#define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { REPEAT(E_STEPPERS, RDIR); } else _REV_E_DIR(E); }while(0)
|
||||
#define FWD_E_DIR(E) do{ if (extruder_duplication_enabled) { REPEAT(E_STEPPERS, NDIR); } else _FWD_E_DIR(E); }while(0)
|
||||
#define REV_E_DIR(E) do{ if (extruder_duplication_enabled) { REPEAT(E_STEPPERS, RDIR); } else _REV_E_DIR(E); }while(0)
|
||||
|
||||
#else
|
||||
|
||||
#define E_STEP_WRITE(E,V) _E_STEP_WRITE(E,V)
|
||||
#define FWD_E_DIR(E) _FWD_E_DIR(E)
|
||||
#define REV_E_DIR(E) _REV_E_DIR(E)
|
||||
#define FWD_E_DIR(E) _FWD_E_DIR(E)
|
||||
#define REV_E_DIR(E) _REV_E_DIR(E)
|
||||
|
||||
#endif
|
||||
|
||||
#elif ENABLED(E_DUAL_STEPPER_DRIVERS)
|
||||
#define E_STEP_WRITE(E,V) do{ E0_STEP_WRITE(V); E1_STEP_WRITE(V); }while(0)
|
||||
#define E_STEP_WRITE(E,V) do{ E0_STEP_WRITE(V); E1_STEP_WRITE(V); }while(0)
|
||||
#define FWD_E_DIR(E) do{ E0_DIR_WRITE(HIGH); E1_DIR_WRITE(INVERT_DIR(E1_VS_E0, HIGH)); }while(0)
|
||||
#define REV_E_DIR(E) do{ E0_DIR_WRITE(LOW ); E1_DIR_WRITE(INVERT_DIR(E1_VS_E0, LOW )); }while(0)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue