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

github.com/Duet3D/RepRapFirmware.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Crocker <dcrocker@eschertech.com>2021-02-24 16:57:34 +0300
committerDavid Crocker <dcrocker@eschertech.com>2021-02-24 16:57:34 +0300
commite0cd21a4b9f1259f3d8d61056ec36e04ccef916c (patch)
treea77bf7bb52500d86645ef363c035c1cfc33fd184 /src/Movement
parent4034472602036f205c90ea41eddc0b0d2ffe92f8 (diff)
Fixed bug in new CalcNextStepTimeCartesian code
Diffstat (limited to 'src/Movement')
-rw-r--r--src/Movement/DriveMovement.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/Movement/DriveMovement.cpp b/src/Movement/DriveMovement.cpp
index 0c4d6270..b4a9d1dd 100644
--- a/src/Movement/DriveMovement.cpp
+++ b/src/Movement/DriveMovement.cpp
@@ -598,6 +598,8 @@ pre(nextStep < totalSteps; stepsTillRecalc == 0)
shiftFactor = 1; // double stepping
}
}
+
+ stepsTillRecalc = (1u << shiftFactor) - 1u; // store number of additional steps to generate
const uint32_t nextCalcStep = nextStep + stepsTillRecalc;
#if DM_USE_FPU
const float adjustedStartSpeedTimesCdivA = (float)(dda.afterPrepare.startSpeedTimesCdivA + mp.cart.compensationClocks);
@@ -632,6 +634,8 @@ pre(nextStep < totalSteps; stepsTillRecalc == 0)
shiftFactor = 1; // double stepping
}
}
+
+ stepsTillRecalc = (1u << shiftFactor) - 1u; // store number of additional steps to generate
const uint32_t nextCalcStep = nextStep + stepsTillRecalc;
nextCalcStepTime =
#if DM_USE_FPU
@@ -673,6 +677,8 @@ pre(nextStep < totalSteps; stepsTillRecalc == 0)
shiftFactor = 1; // double stepping
}
}
+
+ stepsTillRecalc = (1u << shiftFactor) - 1u; // store number of additional steps to generate
const uint32_t nextCalcStep = nextStep + stepsTillRecalc;
const uint32_t adjustedTopSpeedTimesCdivDPlusDecelStartClocks = dda.afterPrepare.topSpeedTimesCdivDPlusDecelStartClocks - mp.cart.compensationClocks;
#if DM_USE_FPU
@@ -709,6 +715,8 @@ pre(nextStep < totalSteps; stepsTillRecalc == 0)
shiftFactor = 1; // double stepping
}
}
+
+ stepsTillRecalc = (1u << shiftFactor) - 1u; // store number of additional steps to generate
const uint32_t nextCalcStep = nextStep + stepsTillRecalc;
const uint32_t adjustedTopSpeedTimesCdivDPlusDecelStartClocks = dda.afterPrepare.topSpeedTimesCdivDPlusDecelStartClocks - mp.cart.compensationClocks;
nextCalcStepTime = adjustedTopSpeedTimesCdivDPlusDecelStartClocks
@@ -724,8 +732,6 @@ pre(nextStep < totalSteps; stepsTillRecalc == 0)
return false;
}
- stepsTillRecalc = (1u << shiftFactor) - 1u; // store number of additional steps to generate
-
// When crossing between movement phases with high microstepping, due to rounding errors the next step may appear to be due before the last one
stepInterval = (nextCalcStepTime > nextStepTime)
? (nextCalcStepTime - nextStepTime) >> shiftFactor // calculate the time per step, ready for next time