Таймер останавливать не надо. Пусть всегда идет.
Я могу путать, давно не следил за этой библиотекой, но в самом тике есть проверка надо дергать мотором или нет, т.е. условно можно сдлеть так:
ISR(TIMER1_COMPA_vect) {
a_stepper.tick();
b_stepper.tick();
}
Тут надо разделить понятия таймер и тики мотора - это два независимых процесса, так во всяком случае раньше было, как сейчас я не знаю, так что вполне могу ошибаться.
Попробую объяснить.
Как было раньше: тик мотора должен вызываться как можно чаще. Сама функция тика следит за временем и если с момента последнего тика проходило достаточно времени до следующего тика, то выполнялся степ мотора, если нет, то просто выход из функции. Там же, внутри , реализованы были ускорения и торможения. Т.е. если грубо тик говорит объекту мотора "дерни пин степ, если надо" и все.
Тоже самое будет для другого мотора - они будут одновременно обрабатывать свои моторы, и независимо друг от друга.
Тут еще надо понимать, что если мотор на полном шаге может дергать пином степ 1000 раз, в сек, то вызывать функцию тика 1000 раз в сек будет мало, т.к. при это не будет плавности разгона и торможение (скорости будут примерно такие 1000 раз в се, 500 раз в сек, т.к. на второй тик будет рано еще дергать степ, а на второй как раз, а это и будет 500 раз в сек.) а вот если дергать 5000 раз в сек, то будет уже что то приличное.
Да, совершенно верно, можно менять время срабатывания таймера, но тогда это и будет работать только с 1 мотором, под второй надо будет запускать отдельный таймер, что для ардуины расточительно, такое можно сделать с стм - там таймеров жопой ешь .