Hi Derek,
We fixed the issue, it was with the encoder interrupt priority, it was accidentally set too high and the encoder counter routine execution took too long,
so the encoder counter interrupted the DMA controller of the output signals which caused the lost steps.
The position error could not be seen on the DROs, because the DMA is the last step in the process, it is after everything output is already calculated, it is basicly a buffer for the step dir signals.
The calculated step/dir bytes are placed into the DMA memory and then the data is shifted to the outputs by the DMA controller independently of the microcontroller code running.
Accidentally the encoder interrupt priority was set to the same high level as the DMA controller's interrupt level which caused the DMA controller to loose data when it was interrupted and could not shift some data out to the outputs.
Here is the download:
viewtopic.php?f=2&t=240&p=5405#p5405Please test it.