Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/supermerill/SuperSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Pelnar <robert.pelnar@seznam.cz>2017-08-21 14:06:17 +0300
committerRobert Pelnar <robert.pelnar@seznam.cz>2017-08-21 14:06:17 +0300
commitd63045fdb35531f04e6d584415a5afbe7f1120d6 (patch)
tree0dd270591488c95e2287017889efc22700d2419e /Firmware/stepper.cpp
parent683784c4c7d92f352c65b53e750b48fb50d2354b (diff)
TMC2130 stallguard improovment - axis load monitoring, autocalibrate Z.
Diffstat (limited to 'Firmware/stepper.cpp')
-rw-r--r--Firmware/stepper.cpp40
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;