Товарищи, у меня хуйня, спрашиваю как специалистов. На стм32 на одном ьаймере юзаю прерывания по переподнению и по совпадению на канале1. Частоьа шины 72мгц, делитель 71, arr 24, ccr1 19. Т.е. переполнение раз в 25мкс, шим перещелкивается раз в 20 мкс. А теперь суть: если я собираю код с Оg или Ofast, то работает как задумано, прерывание по переполнению выполняется за 4мкс, прерывание по совпадению за 3 с копейками. А если собираю с О0, у меня прерывание по совпадению сползает с 19мкс на 24, хотя прерывание по переполнению исполняется за 9мкс. Вопрос: как аппаратное, етить, событие, может сползать, хотя регистр ccr1 после запуска таймера я нигде не модифицирую?
Комментарии: 12
Karboflex
сравни ассемблерный код))
Serge
предложи что-нибудь менее трудоемкое
Karboflex
вон у дихалта чот такое было в либе нагавнокодили)
Serge
Я думаю попробовать поставить data breakpoint, чтоб брякнулл при перезаписи регистра
Magistrdev
Заведи фриртос какой-нибудь и на нем пиши, тогда результат будет всегда один И вопрос если в варианте Og или Ofast работает, в чем сложность всегда в нем компилить?