diff --git a/Marlin/Configuration.h b/Marlin/Configuration.h index fef15933041..41e1ed7ed9b 100644 --- a/Marlin/Configuration.h +++ b/Marlin/Configuration.h @@ -326,11 +326,6 @@ const bool Z_MAX_ENDSTOP_INVERTING = true; // set to true to invert the logic of //#define DISABLE_MAX_ENDSTOPS //#define DISABLE_MIN_ENDSTOPS -// Disable max endstops for compatibility with endstop checking routine -#if defined(COREXY) && !defined(DISABLE_MAX_ENDSTOPS) - #define DISABLE_MAX_ENDSTOPS -#endif - // For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1 #define X_ENABLE_ON 0 #define Y_ENABLE_ON 0 diff --git a/Marlin/planner.cpp b/Marlin/planner.cpp index 82702286b1c..cee1981bc0e 100644 --- a/Marlin/planner.cpp +++ b/Marlin/planner.cpp @@ -629,13 +629,21 @@ block->steps_y = labs((target[X_AXIS]-position[X_AXIS]) - (target[Y_AXIS]-positi block->direction_bits |= (1<<Y_AXIS); } #else + if (target[X_AXIS] < position[X_AXIS]) + { + block->direction_bits |= (1<<X_HEAD); //AlexBorro: Save the real Extruder (head) direction in X Axis + } + if (target[Y_AXIS] < position[Y_AXIS]) + { + block->direction_bits |= (1<<Y_HEAD); //AlexBorro: Save the real Extruder (head) direction in Y Axis + } if ((target[X_AXIS]-position[X_AXIS]) + (target[Y_AXIS]-position[Y_AXIS]) < 0) { - block->direction_bits |= (1<<X_AXIS); + block->direction_bits |= (1<<X_AXIS); //AlexBorro: Motor A direction (Incorrectly implemented as X_AXIS) } if ((target[X_AXIS]-position[X_AXIS]) - (target[Y_AXIS]-position[Y_AXIS]) < 0) { - block->direction_bits |= (1<<Y_AXIS); + block->direction_bits |= (1<<Y_AXIS); //AlexBorro: Motor B direction (Incorrectly implemented as Y_AXIS) } #endif if (target[Z_AXIS] < position[Z_AXIS]) diff --git a/Marlin/stepper.cpp b/Marlin/stepper.cpp index 1b831cc8fb0..fe50e3704b8 100644 --- a/Marlin/stepper.cpp +++ b/Marlin/stepper.cpp @@ -401,10 +401,11 @@ ISR(TIMER1_COMPA_vect) // Set direction en check limit switches #ifndef COREXY - if ((out_bits & (1<<X_AXIS)) != 0) { // stepping along -X axis + if ((out_bits & (1<<X_AXIS)) != 0) // stepping along -X axis #else - if ((((out_bits & (1<<X_AXIS)) != 0)&&(out_bits & (1<<Y_AXIS)) != 0)) { //-X occurs for -A and -B + if ((out_bits & (1<<X_HEAD)) != 0) //AlexBorro: Head direction in -X axis for CoreXY bots. #endif + { CHECK_ENDSTOPS { #ifdef DUAL_X_CARRIAGE @@ -425,7 +426,8 @@ ISR(TIMER1_COMPA_vect) } } } - else { // +direction + else + { // +direction CHECK_ENDSTOPS { #ifdef DUAL_X_CARRIAGE @@ -448,10 +450,11 @@ ISR(TIMER1_COMPA_vect) } #ifndef COREXY - if ((out_bits & (1<<Y_AXIS)) != 0) { // -direction + if ((out_bits & (1<<Y_AXIS)) != 0) // -direction #else - if ((((out_bits & (1<<X_AXIS)) != 0)&&(out_bits & (1<<Y_AXIS)) == 0)) { // -Y occurs for -A and +B + if ((out_bits & (1<<Y_HEAD)) != 0) //AlexBorro: Head direction in -Y axis for CoreXY bots. #endif + { CHECK_ENDSTOPS { #if defined(Y_MIN_PIN) && Y_MIN_PIN > -1 @@ -465,7 +468,8 @@ ISR(TIMER1_COMPA_vect) #endif } } - else { // +direction + else + { // +direction CHECK_ENDSTOPS { #if defined(Y_MAX_PIN) && Y_MAX_PIN > -1