|
|
@ -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
|
|
|
|