Так все жеж просто, как само мяу!
Поехали...
1. Пусть у нас есть некий 16-ти битный таймер работающий на приращение, а по 100гц имеем по прерыванию пина следующие
таймерные 16-ти битные значения:
160012, 160038, 880012, 880038, .....
2. тогда (160038 + 160012) / 2 - момент времени перехода через ноль номер РАЗ,
а (880038 + 880012) / 2 - это момент времени перехода через ноль номер ДВА
поскольку 100гц это период 10мс, то в нашем случае это будет в тиках таймера измеряться,
как значение ДВА минус значение РАЗ
3. Тики таймера выбираем в зависимости от требуемой точности и тактовой и даташит...... короче по ходу проектирования.
3.1. по сути тактовая для таймера дает расценку в ЕГО тиках эквивалент, чтобы понять такое 10мс для контроллера
3.2 значение "ДВА" - это всегда наше текущее от которого фазу (задержку) рулим для семистора
Надеюсь доступно изложил.
Вычислительных ресурсов то тут нифига не юзается по сути, примитивная вычислялка...
P.S.
то что (880012 - 160038) значительно больше чем (160038 - 160012) и переход таймерных значений через ноль - кумекаем математически самостоятельно.