diff --git a/dda.c b/dda.c index dbb6b32..f1e2143 100644 --- a/dda.c +++ b/dda.c @@ -232,6 +232,7 @@ void dda_create(DDA *dda, TARGET *target) { // get steppers ready to go steptimeout = 0; power_on(); + stepper_enable(); x_enable(); y_enable(); // Z is enabled in dda_start() diff --git a/gcode_process.c b/gcode_process.c index e0d17c0..d0e094f 100644 --- a/gcode_process.c +++ b/gcode_process.c @@ -377,6 +377,7 @@ void process_gcode_command() { timer_stop(); queue_flush(); + stepper_disable(); x_disable(); y_disable(); z_disable(); @@ -395,6 +396,7 @@ void process_gcode_command() { break; // M84- stop idle hold case 84: + stepper_disable(); x_disable(); y_disable(); z_disable(); @@ -675,6 +677,7 @@ void process_gcode_command() { //? This one is pointless in Teacup. Implemented to calm the RepRap gurus. //? power_on(); + stepper_enable(); x_enable(); y_enable(); z_enable(); @@ -690,6 +693,7 @@ void process_gcode_command() { // wait for all moves to complete queue_wait(); #endif + stepper_disable(); x_disable(); y_disable(); z_disable(); diff --git a/home.c b/home.c index 62d6fd3..dd646b5 100644 --- a/home.c +++ b/home.c @@ -34,6 +34,7 @@ void home() { void home_x_negative() { power_on(); queue_wait(); + stepper_enable(); x_enable(); #if defined X_MIN_PIN @@ -82,6 +83,7 @@ void home_x_negative() { void home_x_positive() { power_on(); queue_wait(); + stepper_enable(); x_enable(); #if defined X_MAX_PIN @@ -130,6 +132,7 @@ void home_x_positive() { void home_y_negative() { power_on(); queue_wait(); + stepper_enable(); y_enable(); #if defined Y_MIN_PIN @@ -178,6 +181,7 @@ void home_y_negative() { void home_y_positive() { power_on(); queue_wait(); + stepper_enable(); y_enable(); #if defined Y_MAX_PIN @@ -226,6 +230,7 @@ void home_y_positive() { void home_z_negative() { power_on(); queue_wait(); + stepper_enable(); z_enable(); #if defined Z_MIN_PIN @@ -275,6 +280,7 @@ void home_z_negative() { void home_z_positive() { power_on(); queue_wait(); + stepper_enable(); z_enable(); #if defined Z_MAX_PIN diff --git a/pinio.c b/pinio.c index 01c77d4..4e2006d 100644 --- a/pinio.c +++ b/pinio.c @@ -2,13 +2,6 @@ void power_on() { - #ifdef STEPPER_ENABLE_PIN - #ifdef STEPPER_ENABLE_INVERT - WRITE(STEPPER_ENABLE_PIN, 0); - #else - WRITE(STEPPER_ENABLE_PIN, 1); - #endif - #endif #ifdef PS_ON_PIN WRITE(PS_ON_PIN, 0); SET_OUTPUT(PS_ON_PIN); @@ -17,17 +10,11 @@ void power_on() { void power_off() { + stepper_disable(); x_disable(); y_disable(); z_disable(); - #ifdef STEPPER_ENABLE_PIN - #ifdef STEPPER_ENABLE_INVERT - WRITE(STEPPER_ENABLE_PIN, 1); - #else - WRITE(STEPPER_ENABLE_PIN, 0); - #endif - #endif #ifdef PS_ON_PIN SET_INPUT(PS_ON_PIN); #endif diff --git a/pinio.h b/pinio.h index c93d1ee..1d9a6d7 100644 --- a/pinio.h +++ b/pinio.h @@ -155,6 +155,19 @@ End Step - All Steppers Stepper Enable Pins */ +#ifdef STEPPER_ENABLE_PIN + #ifdef STEPPER_ENABLE_INVERT + #define stepper_enable() do { WRITE(STEPPER_ENABLE_PIN, 0); } while (0) + #define stepper_disable() do { WRITE(STEPPER_ENABLE_PIN, 1); } while (0) + #else + #define stepper_enable() do { WRITE(STEPPER_ENABLE_PIN, 1); } while (0) + #define stepper_disable() do { WRITE(STEPPER_ENABLE_PIN, 0); } while (0) + #endif +#else + #define stepper_enable() do { } while (0) + #define stepper_disable() do { } while (0) +#endif + #ifdef X_ENABLE_PIN #define x_enable() do { WRITE(X_ENABLE_PIN, X_INVERT_ENABLE); SET_OUTPUT(X_ENABLE_PIN); } while (0) #define x_disable() do { WRITE(X_ENABLE_PIN, X_INVERT_ENABLE ^ 1); SET_OUTPUT(X_ENABLE_PIN); } while (0)