diff options
author | David Crocker <dcrocker@eschertech.com> | 2021-02-24 16:57:34 +0300 |
---|---|---|
committer | David Crocker <dcrocker@eschertech.com> | 2021-02-24 16:57:34 +0300 |
commit | e0cd21a4b9f1259f3d8d61056ec36e04ccef916c (patch) | |
tree | a77bf7bb52500d86645ef363c035c1cfc33fd184 /src/Movement | |
parent | 4034472602036f205c90ea41eddc0b0d2ffe92f8 (diff) |
Fixed bug in new CalcNextStepTimeCartesian code
Diffstat (limited to 'src/Movement')
-rw-r--r-- | src/Movement/DriveMovement.cpp | 10 |
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 |