diff options
author | Robert Pelnar <robert.pelnar@seznam.cz> | 2017-08-21 14:06:17 +0300 |
---|---|---|
committer | Robert Pelnar <robert.pelnar@seznam.cz> | 2017-08-21 14:06:17 +0300 |
commit | d63045fdb35531f04e6d584415a5afbe7f1120d6 (patch) | |
tree | 0dd270591488c95e2287017889efc22700d2419e /Firmware/stepper.cpp | |
parent | 683784c4c7d92f352c65b53e750b48fb50d2354b (diff) |
TMC2130 stallguard improovment - axis load monitoring, autocalibrate Z.
Diffstat (limited to 'Firmware/stepper.cpp')
-rw-r--r-- | Firmware/stepper.cpp | 40 |
1 files changed, 21 insertions, 19 deletions
diff --git a/Firmware/stepper.cpp b/Firmware/stepper.cpp index b5fc90dee..d3f6d94fd 100644 --- a/Firmware/stepper.cpp +++ b/Firmware/stepper.cpp @@ -45,6 +45,8 @@ bool x_min_endstop = false; bool x_max_endstop = false; bool y_min_endstop = false; bool y_max_endstop = false; +bool z_min_endstop = false; +bool z_max_endstop = false; //=========================================================================== //=============================private variables ============================ //=========================================================================== @@ -85,11 +87,7 @@ static bool old_y_max_endstop=false; static bool old_z_min_endstop=false; static bool old_z_max_endstop=false; -#ifdef TMC2130_SG_HOMING_SW -static bool check_endstops = false; -#else static bool check_endstops = true; -#endif static bool check_z_endstop = false; @@ -432,11 +430,11 @@ void isr() { { { #if defined(X_MIN_PIN) && (X_MIN_PIN > -1) && !defined(DEBUG_DISABLE_XMINLIMIT) - #ifndef TMC2130_SG_HOMING_SW + #ifndef TMC2130_SG_HOMING_SW_XY x_min_endstop = (READ(X_MIN_PIN) != X_MIN_ENDSTOP_INVERTING); - #else //TMC2130_SG_HOMING_SW + #else //TMC2130_SG_HOMING_SW_XY x_min_endstop = tmc2130_axis_stalled[X_AXIS]; - #endif //TMC2130_SG_HOMING_SW + #endif //TMC2130_SG_HOMING_SW_XY if(x_min_endstop && old_x_min_endstop && (current_block->steps_x > 0)) { endstops_trigsteps[X_AXIS] = count_position[X_AXIS]; endstop_x_hit=true; @@ -452,11 +450,11 @@ void isr() { { { #if defined(X_MAX_PIN) && (X_MAX_PIN > -1) && !defined(DEBUG_DISABLE_XMAXLIMIT) - #ifndef TMC2130_SG_HOMING_SW + #ifndef TMC2130_SG_HOMING_SW_XY x_max_endstop = (READ(X_MAX_PIN) != X_MAX_ENDSTOP_INVERTING); - #else //TMC2130_SG_HOMING_SW + #else //TMC2130_SG_HOMING_SW_XY x_max_endstop = tmc2130_axis_stalled[X_AXIS]; - #endif //TMC2130_SG_HOMING_SW + #endif //TMC2130_SG_HOMING_SW_XY if(x_max_endstop && old_x_max_endstop && (current_block->steps_x > 0)){ endstops_trigsteps[X_AXIS] = count_position[X_AXIS]; endstop_x_hit=true; @@ -476,11 +474,11 @@ void isr() { CHECK_ENDSTOPS { #if defined(Y_MIN_PIN) && (Y_MIN_PIN > -1) && !defined(DEBUG_DISABLE_YMINLIMIT) - #ifndef TMC2130_SG_HOMING_SW + #ifndef TMC2130_SG_HOMING_SW_XY y_min_endstop=(READ(Y_MIN_PIN) != Y_MIN_ENDSTOP_INVERTING); - #else //TMC2130_SG_HOMING_SW + #else //TMC2130_SG_HOMING_SW_XY y_min_endstop = tmc2130_axis_stalled[Y_AXIS]; - #endif //TMC2130_SG_HOMING_SW + #endif //TMC2130_SG_HOMING_SW_XY if(y_min_endstop && old_y_min_endstop && (current_block->steps_y > 0)) { endstops_trigsteps[Y_AXIS] = count_position[Y_AXIS]; endstop_y_hit=true; @@ -494,11 +492,11 @@ void isr() { CHECK_ENDSTOPS { #if defined(Y_MAX_PIN) && (Y_MAX_PIN > -1) && !defined(DEBUG_DISABLE_YMAXLIMIT) - #ifndef TMC2130_SG_HOMING_SW + #ifndef TMC2130_SG_HOMING_SW_XY y_max_endstop=(READ(Y_MAX_PIN) != Y_MAX_ENDSTOP_INVERTING); - #else //TMC2130_SG_HOMING_SW + #else //TMC2130_SG_HOMING_SW_XY y_max_endstop = tmc2130_axis_stalled[Y_AXIS]; - #endif //TMC2130_SG_HOMING_SW + #endif //TMC2130_SG_HOMING_SW_XY if(y_max_endstop && old_y_max_endstop && (current_block->steps_y > 0)){ endstops_trigsteps[Y_AXIS] = count_position[Y_AXIS]; endstop_y_hit=true; @@ -520,7 +518,7 @@ void isr() { if(check_endstops && ! check_z_endstop) { #if defined(Z_MIN_PIN) && (Z_MIN_PIN > -1) && !defined(DEBUG_DISABLE_ZMINLIMIT) - bool z_min_endstop=(READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING); + z_min_endstop=(READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING); if(z_min_endstop && old_z_min_endstop && (current_block->steps_z > 0)) { endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS]; endstop_z_hit=true; @@ -541,7 +539,11 @@ void isr() { CHECK_ENDSTOPS { #if defined(Z_MAX_PIN) && (Z_MAX_PIN > -1) && !defined(DEBUG_DISABLE_ZMAXLIMIT) - bool z_max_endstop=(READ(Z_MAX_PIN) != Z_MAX_ENDSTOP_INVERTING); + #ifndef TMC2130_SG_HOMING_SW_Z + z_max_endstop = (READ(Z_MAX_PIN) != Z_MAX_ENDSTOP_INVERTING); + #else //TMC2130_SG_HOMING_SW_Z + z_max_endstop = tmc2130_axis_stalled[Z_AXIS]; + #endif //TMC2130_SG_HOMING_SW_Z if(z_max_endstop && old_z_max_endstop && (current_block->steps_z > 0)) { endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS]; endstop_z_hit=true; @@ -557,7 +559,7 @@ void isr() { if(check_z_endstop) { // Check the Z min end-stop no matter what. // Good for searching for the center of an induction target. - bool z_min_endstop=(READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING); + z_min_endstop=(READ(Z_MIN_PIN) != Z_MIN_ENDSTOP_INVERTING); if(z_min_endstop && old_z_min_endstop) { endstops_trigsteps[Z_AXIS] = count_position[Z_AXIS]; endstop_z_hit=true; |