Сейчас шаг делается минимум в 3 импульса (см stepper_timer.cpp/_timer_handle_interrupts):
за два импульса: проверка границ
за один импульс: взвести ножку step в HIGH
последний импульс: сделать шаг - сбросить step в LOW
Проверку можно делать за один импульс до шага и в этот же импульс взводить ножку в HIGH. Это позволит увеличить максимульную скорость в том случае, когда мотор может в принципе шагать почти на каждый импульс таймера.
Вообще, всё можно делать в один импульс - и проверять границы и взводить в HIGH и сбрасывать в LOW. Но может вылезти нюанс, если между фронтом HIGH/LOW должна быть какая-то минимальная задержка, внутри таймера ее в общем случае не очень хорошо ставить.
Как вариант, можно держать ножки STEP всё время взведенными, а потом ронять в нужный момент и снова взводить. Не факт, что так правильно делать, но с точки зрения тайминга должно быть ок и можно тогда уместиться в один импульс таймера.
Сейчас шаг делается минимум в 3 импульса (см stepper_timer.cpp/_timer_handle_interrupts):
Проверку можно делать за один импульс до шага и в этот же импульс взводить ножку в HIGH. Это позволит увеличить максимульную скорость в том случае, когда мотор может в принципе шагать почти на каждый импульс таймера.
Вообще, всё можно делать в один импульс - и проверять границы и взводить в HIGH и сбрасывать в LOW. Но может вылезти нюанс, если между фронтом HIGH/LOW должна быть какая-то минимальная задержка, внутри таймера ее в общем случае не очень хорошо ставить.
вот здесь пишут, что задержка между сигналами должна быть 10 мкс примерно Why do we delay() after a stepper motor pulse? https://forum.arduino.cc/t/why-do-we-delay-after-a-stepper-motor-pulse/557436
Как вариант, можно держать ножки STEP всё время взведенными, а потом ронять в нужный момент и снова взводить. Не факт, что так правильно делать, но с точки зрения тайминга должно быть ок и можно тогда уместиться в один импульс таймера.