Ревью кода для stm32f401, управление шаговыми двигателями
Здравствуйте Требуется доработать код для stm32f401 Код - порт AN446 от Atmel (управление шаговыми двигателями). Написан с использованием Cube и HAL.
Ожидаемая логика работы: есть 8 шд, но одновременно могут идти только 4, но которые - неизвестно. Поэтому каналы таймеров сложены в кольцевой буфер, надо пойти - берём канал из буфера, остановились - вернули канал. Шаги рассчитываются внутри прерывания, там же крутится управляющий конечный автомат. Задержка может быть двух типов: четная короткая, чтобы драйвер an4988 или аналог успел осознать получение step, и длинная нечётная - задержка между шагами.
Что не так: в отладчике в регистр ccr записываются правильные значения, но на логическом анализаторе я вместо ожидаемой картины видел меандр с периодом 50мс и скважностью 50%, чему удивлён. ШД двигался значительно медленнее, чем когда управлялся кодом из an446, ускорения не заметил.
Что надо сделать: найти ошибку, не меняя алгоритм, и объяснить мне. Оплата не ранее понедельника, когда я смогу проверить ответ.