Extend shift register PIO code to > 4 axes #10
Replies: 1 comment
-
The PIO program step_pulse can handle up to 6 axes but needs additional support code in driver.c for that. This program is used by your BOB and requires all step and direction signals to be connected directly to the MCU. However, I guess you are talking about the the other one that uses a single external shift register supports up to 4, this since both step and direction signals are handled by it. It is not possible to modify this program as the PicoCNC map depends on it as it is now, another is that there is only a few (1 or 2?) instruction slots free for extensions. It should be possible to add yet another that uses two shift registers instead which could then support up to 8 axes. Or perhaps use only one and connect the direction signals directly to the CPU? If using two shift registers it could be a simple as copy the current program and increase the loop count - and define a data structure to match with support in driver.c. |
Beta Was this translation helpful? Give feedback.
-
I have dabbled with it, but I am just wondering if there is a fundamental reason we couldn't extend the PIO shift register code to drive additional axes. In my testing the implementation is certainly fast enough to drive high step rates even with double the serial bitload. Feedback that I have gotten is that people really do need 5 axes of motion - this is part of the reason I did the PicoBOB instead of releasing a breakout design based on the shift register (which I have build and basically have working on my bench) implementation, even though I really like this design a lot. Many hobbyists are using moving gantry machines with ganged axes (not just PrintNC, but that is my main area of interest) because these machines are the most space efficient, and they are also easiest to square because the final alignment is done in software. At the same time, people do seem unwilling to commit to a platform that doesn't allow for the future option of a 4th axis.
I am certainly willing to work on the implementation, I am just wondering if there are any walls that I might run into before I dig into it.
Beta Was this translation helpful? Give feedback.
All reactions