sadr0b0t / stepper_h

Stepper motor control library for ChipKIT/Arduino
GNU Lesser General Public License v3.0
3 stars 1 forks source link

Проверять пограничные значения координат за один импульс перед шагом, а не за два #34

Open sadr0b0t opened 1 month ago

sadr0b0t commented 1 month ago

Сейчас шаг делается минимум в 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 всё время взведенными, а потом ронять в нужный момент и снова взводить. Не факт, что так правильно делать, но с точки зрения тайминга должно быть ок и можно тогда уместиться в один импульс таймера.