да, NVIC не настроил. Но тем не менее, прежде чем активировать прерывания, я решил подправить немного код, и посмотреть работает ли захват вообще, подправил только PSC = 840, чтобы получить 1 счет в 10мкс. Затем тот код что в прерывании запихнул в непрерывный цикл, и вижу в дебаггере:
ширина пульса = 149
период = 1498
ну а т.к. шаг = 10мкс, то 149*10мкс ~ 1.5мс, и 1298*10мкс ~ 15мс, т.е. измерил правильно.
Ну а вот теперь убедившись что захват уже работает, решил проверить прерывание, вписываю одну строку только:
Код
// enable TIM2 interrupt
NVIC->ISER[0] |= 1 << TIM2_IRQn;
и возобновляю предыдущий код в обработчике прерывания, в дебаггере вижу что прерывание действительно происходит, однако значения ширины пульса и периода абсолютно неверные, слишком большие, вот они:
ir_pulse = 4294967295
ir_period = 4294967295
не могу понять почему так? пробовал объявлять эти переменные в других местах кода итд, тоже самое почти что.
почему в обработчике прерывания не могу считать верные значения, как я это делал в беспрерывном цикле без прерываний?