Шаговик это вообще у меня тотальная жопа реализации. Признаюсь. Ну
лично я так считаю. Я пытался этот блок переписывать чтобы он был
"простой и тупой" как микросхема, но каждый раз оказывалась
какая-нибудь да херня. Объясню в чем дело. Аппаратура при условном
"POWER ON' калибруется по концевику. (я гоню шаговик до концевика,
который калиброочно расположен строго в определенном месте). После
этого я возвращаюсь в исходный нуль. Я при работе никогда не могу
потерять позицию шаговика. И не могу (не должен по идее) потерять скорость (ну скажем джиттер раз в секунду скипнуть шаг можно, но не более того), потому что по шаговику своё время отбивает лазер (я сканирую поверхность).
А это несколько иное, чем с шаговиками у других людей. А случиться может многое что - у него и скорость меняется, и направление (мгновенно), и концевики могут срабатывать. И сейчас еще и добавлен микростеппинг, да.
По идее я думаю что все мои "беды" реально можено преодолеть вообще чисто аппаратно, таймером. Но это не точно.
Что тут поставить приоритетом, толи коммункацию с лазером, толи коммуникацию с хостом, толи шаговик - х.з. ничего потерять нельзя.
> не нужно его крутить по шагам. Нужно крутить фазу с фиксированным временным шагом.
Ничего не понятно что ты имел в виду. У меня постоянно долбит таймер с фикс. временем. Но откуда-то сверху частоту таймера можно менять. Степ не должен потеряться.
"Фаза" - у меня халява, её держит внутри себя микруха, у которой три пина определяют состояние микростеппнга. Я управляю лишь DIR, STP, MSTM[3], POWER.
При этой простоте, низзя делать многие вещи как заблогорассудиться, как-то переключать как бог на душу положит микростеппинги, а также в любые моменты DIR, STP или увеличивать частоту таймера в произвольные моменты: когда ШД долго работает туда-сюда, туда-сюда, очень медленно может терять положение, так что пришлось всё это преодолевать. Но думаю тут ничего такого, много где такое требуется.