Цитата(MaxiMuz @ Apr 18 2014, 14:11)

При запуске программы почемуто сразу срабатывает прерывание. С какого это оно срабатывает , если событие не наступило?
Как сделать чтобы первое срабатывание было только по совпадению с рег-ом ARR ?
Сначала вопрос, не под отладчиком ли Вы пробуете: если не предпринять мер, а именно запретить счет таймера во время остановки при отладки, то таймер будет бежать дальше.
Регистры ARR и PSC имеют теневые регистры. Команды записи модифицируют теневые регистры, которые перепишутся в рабочие, когда установится флаг обновления:
Цитата
It can be changed on the fly as this control register is buffered. The new prescaler ratio is taken into account at the next update event.
Это означает, что новые значения регистров, которые Вы записали при инициализации, не действуют, пока не наступит событие переполнения, а оно наступает быстро, т.к. по умолчанию PSC равен нулю.
Действия:
- записать, что надо, прерывание еще не разрешать,
- установить искусственно флаг UG в регистре EGR - это обновит PSC|ARR новыми значениями.
- сбросить установившиеся флаги прерываний
- только теперь разрешить прерывания и запустить таймер.