back down the stepper timing rabbit hole....
Seems it's occasionally missing a step or 2. Which I expected to need some tweaking. So now I'm knee deep in about 27 open browser windows.
Anyway, I'm going back over my stepper config numbers, and following the info here: wiki.linuxcnc.org/cgi-bin/wiki.pl?Tweaki...ftwareStepGeneration
I've used the calc spreadsheet in the bottom of that doc, and it's giving these post-test numbers:
stepgen.steplen 1 periods
stepgen.stepspace 1 periods
stepgen.dirsetup 2 periods
stepgen.dirhold 2 periods
I'm confused as to how to set these 'period' values. Checking the docs, it seems like all these are supposed to have settings of nanoseconds.
Also, in that stepper tweaking doc it mentions "So we change dirhold from 1 to 2" in an example. But it's not entirely clear where/how this is set.
Where are these 'period' values set, as opposed to the nanosecond values?
So basically keep all the tweaking to the dirhold and dirsetup values?
PCW wrote: That wiki information is very out of date
I would just use a current linuxcnc's stepconf program to set the values in nanoseconds
Is there anything else I should be concerned with? or just focus on fiddling with those?
wow, ok... color me confused.
PCW wrote: Not sure you you would spend any time tweaking the setup and hold times.
Just set them to 20000 ns and be done with it, there is basically 0 cost to making
these larger than needed and 20000 ns will work for almost any drive.
Not sure how much of what I've been reading is outdated, but I was under the impression that the higher these are set, the less steps per second, which could result in performance issues. But if it's not a big deal, I won't sweat it.
well, I'm off the shop to make some changes and run another test.
The steplen and stepspace settings _do_ set a bound on the maximum step rate: MaxStepRate = 1/(steplen+stepspace), though typically the maximum step rate is bound by the latency in software stepping (parallel port) configurations.
Also if you use the stepgen's reset feature (which allows 1 step per base thread invocation instead of every other invocation),
the length of the step pulse affects CPU load since LinuxCNC does a busy loop waiting for this to time out.
Based on recommendations for my controllers, I initially had dirhold=10000 and dirsetup=5000. I doubled those, ran another test run, and no missed steps! (well, at least not that i could tell)
I do have a small accuracy issue on the X axis, but I'm pretty sure that's hardware related (otherwise i'd expect to see it on all axes)
I'm also going to look into that 'stepgen reset' you mentioned. Not sure I'll need it now, but who knows.