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