So how to get back to the same effective positions and angles as the first engagement? It seems it works for simple non-multi-start imperial threading with a thread dial. Even though the half nuts were disengaged, if you find #1 you are synced. I believe the way this is done on a manual lathe is simply to advance the spindle to the next start location, (no engagement of the half nuts) and start the normal threading process. What I could do (one time per thread start advance) is allow the spindle count to advance, and ignore the stepper pulses, until the start advance is reached. Once this is done, the stepper pulses are allowed again, at the normal N/D rate. We would need to tell the system we are on the next start, but that would have to be done anyways. Ignoring pulses can have issues, so I need to investigate that some more, don't want any strange transient things happening.
The G0752Z thread dial has 48T. Does this mean that it takes 48 revolutions of the lead screw to get back to the same position? Each tooth fits between a pitch of the lead screw.
Would be nice to actually solve this for the metric case, but for now, I'd be happy implementing the above example for imperial threads in a test version of my ELS.
Working out some physical numbers, shows life isn't that clean. For a 5 start, the thread advance is 72 degrees. For a 4096 ppr encoder, that is 819.2 counts. To advance a similar amount (I think) that would correspond to 480 steps of the stepper, or 0.6 revolutions (at the N/D ratio for the lead pitch). Pre-advancing the lead screw sounds a lot easier than throwing away or gating pulses. Nothing has to be added to the high speed interrupt service routines which means their timing is unaltered. Going to give this a try.