Вот сейчас пишу простую управлялку шаговиком и столкнулся с проблемой задания очень низких скоростей вращения: так как все таймеры 16-битные с 16-битным предмножителем, любые периоды задать, понятное дело, не выйдет. Простейший способ (скажем, увеличивать предмножитель в 100 раз, если период больше 65536) приводит к довольно большим ошибкам в районе 66000 (скажем, вместо 65599 будет 65500).
А есть ли вариант без большого потребления ресурсов (флеш памяти и/или вычислительных ресурсов) выполнить наиболее оптимальный для данного числа подбор множителей? Простой перебор — слишком долго, на табулирование никаких ресурсов не хватит...