Вы вектора прерывания настраивали?Батон Изюмыч писал(а):Но при отладке по наступлении совпадения регистров, отладчик почему-то не делает переход на обработчик прерывания.
На Win11 стоит студия 4.19 (2011 года) вроде свободно находится она.Батон Изюмыч писал(а):А старое ПО или не найти, или оно не ставится на современный Windows.
Добавлено after 5 minutes 41 second:
https://www.mcu4you.ru/avr-studio-4-19/
сразу нашлось[/uquote]
Все выходные крутил и так и эдак. Уже и ассемблер вспомнил. ))) Пока у меня нет под руками программатора, приходится пытаться понять в Симуляции.
Если я Вас правильно понял - да, все разрешения прерываний я включаю в нужных регистрах. Обработчики прерываний я тоже прописываю.
Смысл такой. Хочется иметь выходной сигнал, в котором можно задавать длительность импульса и длительность паузы. Причем они кратны т.е. И/П от 1:1 до 1:30.
Таймер запускаем в режиме сравнения с изменением сигнала на ножке OC1A на противоположный при каждом совпадении таймера с OCR1A или ICR1. С кем сравнивать в следующем цикле выбираем в соответствующем прерывании. Т.е. прерывание по совпадению с OCR1A меняет регистр TCCR1B так, чтобы в следующем цикле было сравнение с ICR1, в прерывании которого мы меняем TCCR1B так, что следующее снова по OCR1A и так по кругу.
Согласно Даташиту это должно работать. Но в симуляции это не работает. Сначала по причине особенно умного компилятора, который обработчики прерываний не посчитал нужным добавлять в результирующий код. Потом, когда обработчик "поднастроил", симуляция подкинула вопросов. Почему-то Протеус пока солидарен при симуляции с ATMELStudio. Вероятно компилятор надо ещё крутить? попутно разбираясь в дизассемблере.
Я пробовал ставить какую-то студию 4 версии. Там был косяк при пошаговой отладке. После случайного количества шагов, т.е. каждый раз в разном месте, симуляция переходила сама по себе в автоматический режим, как будто я нажал F5... НО! После остановки по Ctrl+F5 счётчик тактов не был увеличен, т.е. симуляция не шла. Сначала я какое-то время нажимал Ctrl+F5, а потом меня это достало, и я стал искать какую-то другую версию. В 7 версии этого глюка не было. Но как оказалось есть другие. ))))
Теперь понятно, почему так много народа предпочитающего писать на ассемблере. Проще раз в логику погрузиться, чем пытаться отловить свои ошибки среди стада чужих косяков.
akl писал(а):Замечу, студия не полностью адекватно справляется с режимами работы таймера. Например, игнорирует режим 12 CTC ICR1.Так что только проверка в железе.
Эх, знать бы это сразу. Не пришлось бы несколько дней подряд доводить себя до депрессии подозрениями в собственном недостатке ума. )))Starichok51 писал(а):причем, не только режим 12, и несколько других. зато Протеус правильно симулирует все режимы.
Остаётся ждать программатор и проверять в железе.
Всем спасибо за участие!
Добавлено after 7 minutes 54 seconds:
P.S. Если уходить куда-нибудь на STM32, там подобные проблемы, или есть более менее нормальная среда, где можно работать не натыкаясь на такое вот? Нынче ценник практически не различим, можно было бы попробовать.
