-
-
Notifications
You must be signed in to change notification settings - Fork 19.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add dwell in NS between final step pulse and DIR change #15314
Add dwell in NS between final step pulse and DIR change #15314
Conversation
It is my belief this change is going to help resolve the firmware based layer shifts. We should know soon with more people testing! As soon as Travis gives us a 'Thumbs Up!' I'll hit the Merge button. |
I have force-pushed a new HEAD to bugfix because the PR was merged as "Initial Commit". |
I never realized it used the individual commit name's not the branch for the merge. Maybe I'll just use the branch name for my opening commits in the future instead of initial commit on the first push every time. |
My apologies Thinky. We have been chasing this bug for 6 months. I made sure everything was pretty much correct. No extra white space. No other coding standard problems (that I noticed). I WANTED IT MERGED. I wanted that bug gone! |
I'll test as well this weekend! |
A layer shift problem exists. In the photo above, printing the same code. On Repeiter firmware, there were no layer shifts with the same drivers on the ArduinoDUE (32bit) board. |
Are you using |
NO |
I printed many identical parts at different speeds with different settings in the firmware. In this case, there is NO layer shift at speeds from 30 to 50 mm/s In this case, there is NO layer shift at speeds from 30 to 50 mm/s I assume that this means that the joint operation of different drivers does not function correctly in the firmware. Can anyone check this out? I was able to set the maximum print speed to 80 mm / sec without shifting the layer this way: #define MINIMUM_STEPPER_POST_DIR_DELAY 650 If you print at a speed above 80 mm/s, the layer begins to shift. |
You should definitely be using Junction Deviation. It will probably solve your issue. We're looking at the maths of what is now called |
In researching issues behind layer shifts we've been all over the place. In #13559 multiple traces showed time between the last step and DIR change had come down to below 5ns in many cases despite the comment defining it should be a minimum of 10 waiting for the next stepper isr call. In the case of a couple users it was found that this pulse caused the driver to ignore the new direction command.
I added the same delay as after the pulse change to before the function and found my torture test gcode, which is over 40hrs, did not produce a shift on Marlin 2.0 since we first started looking at this since last year
Id like to get users from #12403 to test this change and report if they see an elimination or reduction in shifting on their end as well.