|
|
|
@ -154,6 +154,34 @@
|
|
|
|
|
#define E3_ENABLE_WRITE(STATE) WRITE(E3_ENABLE_PIN,STATE)
|
|
|
|
|
#define E3_ENABLE_READ READ(E3_ENABLE_PIN)
|
|
|
|
|
|
|
|
|
|
#if EXTRUDERS > 3
|
|
|
|
|
#define E_STEP_WRITE(v) {switch(current_block->active_extruder){case 3:E3_STEP_WRITE(v);break;case 2:E2_STEP_WRITE(v);break;case 1:E1_STEP_WRITE(v);break;default:E0_STEP_WRITE(v);}}
|
|
|
|
|
#define NORM_E_DIR() {switch(current_block->active_extruder){case 3:E3_DIR_WRITE(!INVERT_E3_DIR);break;case 2:E2_DIR_WRITE(!INVERT_E2_DIR);break;case 1:E1_DIR_WRITE(!INVERT_E1_DIR);break;default:E0_DIR_WRITE(!INVERT_E0_DIR);}}
|
|
|
|
|
#define REV_E_DIR() {switch(current_block->active_extruder){case 3:E3_DIR_WRITE(INVERT_E3_DIR);break;case 2:E2_DIR_WRITE(INVERT_E2_DIR);break;case 1:E1_DIR_WRITE(INVERT_E1_DIR);break;default:E0_DIR_WRITE(INVERT_E0_DIR);}}
|
|
|
|
|
#elif EXTRUDERS > 2
|
|
|
|
|
#define E_STEP_WRITE(v) {switch(current_block->active_extruder){case 2:E2_STEP_WRITE(v);break;case 1:E1_STEP_WRITE(v);break;default:E0_STEP_WRITE(v);}}
|
|
|
|
|
#define NORM_E_DIR() {switch(current_block->active_extruder){case 2:E2_DIR_WRITE(!INVERT_E2_DIR);break;case 1:E1_DIR_WRITE(!INVERT_E1_DIR);break;default:E0_DIR_WRITE(!INVERT_E0_DIR);}}
|
|
|
|
|
#define REV_E_DIR() {switch(current_block->active_extruder){case 2:E2_DIR_WRITE(INVERT_E2_DIR);break;case 1:E1_DIR_WRITE(INVERT_E1_DIR);break;default:E0_DIR_WRITE(INVERT_E0_DIR);}}
|
|
|
|
|
#elif EXTRUDERS > 1
|
|
|
|
|
#define _E_STEP_WRITE(v) {if(current_block->active_extruder==1){E1_STEP_WRITE(v);}else{E0_STEP_WRITE(v);}}
|
|
|
|
|
#define _NORM_E_DIR() {if(current_block->active_extruder==1){E1_DIR_WRITE(!INVERT_E1_DIR);}else{E0_DIR_WRITE(!INVERT_E0_DIR);}}
|
|
|
|
|
#define _REV_E_DIR() {if(current_block->active_extruder==1){E1_DIR_WRITE(INVERT_E1_DIR);}else{E0_DIR_WRITE(INVERT_E0_DIR);}}
|
|
|
|
|
#if DISABLED(DUAL_X_CARRIAGE)
|
|
|
|
|
#define E_STEP_WRITE(v) _E_STEP_WRITE(v)
|
|
|
|
|
#define NORM_E_DIR() _NORM_E_DIR()
|
|
|
|
|
#define REV_E_DIR() _REV_E_DIR()
|
|
|
|
|
#else
|
|
|
|
|
extern bool extruder_duplication_enabled;
|
|
|
|
|
#define E_STEP_WRITE(v) {if(extruder_duplication_enabled){E0_STEP_WRITE(v);E1_STEP_WRITE(v);}else _E_STEP_WRITE(v);}
|
|
|
|
|
#define NORM_E_DIR() {if(extruder_duplication_enabled){E0_DIR_WRITE(!INVERT_E0_DIR);E1_DIR_WRITE(!INVERT_E1_DIR);}else _NORM_E_DIR();}
|
|
|
|
|
#define REV_E_DIR() {if(extruder_duplication_enabled){E0_DIR_WRITE(INVERT_E0_DIR);E1_DIR_WRITE(INVERT_E1_DIR);}else _REV_E_DIR();}
|
|
|
|
|
#endif
|
|
|
|
|
#else
|
|
|
|
|
#define E_STEP_WRITE(v) E0_STEP_WRITE(v)
|
|
|
|
|
#define NORM_E_DIR() E0_DIR_WRITE(!INVERT_E0_DIR)
|
|
|
|
|
#define REV_E_DIR() E0_DIR_WRITE(INVERT_E0_DIR)
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
//////////////////////////////////
|
|
|
|
|
// Pin redefines for TMC drivers.
|
|
|
|
|
// TMC26X drivers have step and dir on normal pins, but everything else via SPI
|
|
|
|
|