|
Модераторы: PILOT, ManiaK, Mazzi |
|
supercelt |
|
|||
Опытный Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
Суть такова. В прерывании по совпадению я хочу отследить было ли хотя бы одно прерывание внешнее. Непонятки с флагом INTF0 регистра GIFR. Я так понял что исходное состояние (когда флаг сброшен, т.е. прерываний не было) у него 1. А когда наступает внешнее прерывание, то он сбрасывается в 0. А потом в векторе нужно опять его сбросить, именно ЗАПИСАВ в него 1. В дебаггере atmel studio 6 при прохождении инициализаций туда 1 не записывается. Цикл пашет, во флаге - 0. Зато как только меняю состояние порта где внешнее прерывание висит - тут же флажок становится красным, и при следующем нажатии F11 снова белый. Далее заход в вектор, и в векторе запись 1 во флаг тоже не работает. Как отследить то что было прерывание? Помогите пожалуйста. Это сообщение отредактировал(а) supercelt - 29.8.2015, 00:08 |
|||
|
||||
bass |
|
||||
Опытный Профиль Группа: Участник Сообщений: 315 Регистрация: 5.8.2007 Репутация: нет Всего: 2 |
В коде не понятно где вы хотите это проследить. Слава богу хоть JTAG подключили, чем не устраивает изменение некой переменной в обработчике прерываний? Скорость работы ???? Флаги про которые вы пишите чуть чуть для другого предназначены....... Это обработка вложенных прерываний. По этим флагам процессор орентируется было ли прерывание в момент выполнения другого прерывания. При входе в обработчик данный флаг сброситься. Такая ситуация выполняется прерывание по таймеру и в данный момент пришло внешние прерывание. Флаг выставиться. В момент окончания прерывания по таймеру, вызовется обработчик внешнего прерывания и флаг сброситься. Если в прерывание таймера сбросить флаг внешнего прерывания если оно было вызвано, обработчик внешнего прерывания не вызоветься. Как-то так.. )))) |
||||
|
|||||
supercelt |
|
|||
Опытный Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: нет Всего: 1 |
Спасибо, буду использовать переменную)
|
|||
|
||||
ФедосеевПавел |
|
||||
Опытный Профиль Группа: Участник Сообщений: 291 Регистрация: 7.2.2009 Репутация: 1 Всего: 10 |
Я уже успел всё подзабыть за 8 лет. Поэтому просто покажу, как я обрабатывал INT1.
Основная программа (фича в использовании именованных констант вместо магических чисел).
И обработчик INT1 (он нигде в main не упомянут потому, что настройки проекта были в makefile). В нём разрешается работа int0 и int1 по логике самой программы и, возможно, опечатки . MCU - AtTiny2313
Копировать мой обработчик нет смысла (атрибуты, асм вставки, рукопашное сохранение и восстановление SREG) - я тогда перешёл с асма на с и пытался добиться чуть ли не идентичных асму листингов. Но хорошо видно - запись в EIFR, тело обработчика, выход. Это сообщение отредактировал(а) ФедосеевПавел - 29.8.2015, 14:48 |
||||
|
|||||
Правила форума "Микроконтроллеры (MCU) и микропроцессоры (MPU)" | |
|
На данный раздел помимо Правил форума распространяются текже следующие правила:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, PILOT, ManiaK, UniBomb, Mazzi. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Микроконтроллеры (MCU) и микропроцессоры (MPU) | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |