У тебя планировщик планирует начало накопления на какой-то зуб и потом ждет до его наступления? А если за это время частота вращения кв увеличилась, то твой ранее назначенный зуб уже оказывается ошибочным. Ты это как-то обыгрываешь?
Gremlin, твой вопрос за счёт его лаконичности сложнее точно понять. Вероятно тебя интересует момент искры больше чем момент начала накопления энергии в катушке?
В начале оборота я
1) рассчитываю скорость вращение на основании всего прошлого оборота
2) нахожу, между какими двумя зубьями у меня будет начало накопления энергии в катушке
3) нахожу, между какими двумя зубьями у меня будет искра
Когда случается один этих зубов, я рассчитываю сколько времени мне нужно подождать - событие будет где-то между зубами, не обязательно в обработчике одного из зубов. Ставлю будильник на основании скорости работы двигателя за прошлый оборот.
Мгновенная скорость кв на основании последних двух зубов не считается. С каким ускорением у нас кв может разкрутиться или замедлиться? У меня руки пока не дошли это посчитать - я сейчас исхожу из допущения, что скорость кв между двумя оборотами меняется не фатально. Значительная часть ошибки рассчётов с такими допущением компенсируется тем, что я привязываюсь к зубу - так что ошибка будет только в том, сколько именно ждать до вызова события после зуба. В таком маштабе я сомневаюсь, что ошибка получается значимой.