минутка занимательной математики
допустим желаемые обороты 10 тысяч в минуту
тоесть время одного оборота EncoderPulseLength = 0.006 сек., если вал наполовину закрашен чёрным то время между двумя сменами состояния 0.003 сек.
(если настроить прерывание не на смену уровня, а на фронт то получим в 2 раза меньшую точность но в 2 раза более редкие импульсы, может быть полезно на максимальной скорости)
пусть минимальная скорость будет 2000 оборотов, для мотора пылесоса это ведь норм?
тогда EncoderPulseLength = 0.015 сек
ну а максимум сделаем 15000 оборотов, тогда EncoderPulseLength = 0.002
тогда разница между 10 т. и 15 т. 0.001 сек.
функция micros выдаёт нам минимум 0.000004 сек., тоесть диапазон от 10 до 15 т. об. в идеале можно разбить на 250 частей
что в принципе нормально) можно делать.
итого
диапазон регулировки EncoderPulseLength от 15000 μс до 2000 μс