Прерывания и флаги

Обсуждаем контроллеры компании Atmel.
Ответить
Открыл глаза
Сообщения: 41
Зарегистрирован: Пт май 29, 2009 09:38:45

Сообщение Compressor »

Подскажите пожалуйста, в даташитах не нашел точного ответа

Вот если например прерывание INT0 разрешено в регистре масок, и происходит определенное событие флаг прерывания устанавливается с переходом к обработчику. Тут все понятно.

Если например я временно запрещаю прерывание INT0 в регистре масок, будет ли устанавливаться флаг прерывания в регистре флагов в данном случае при возникновении события?

И если я опять разрешу прерывание INT0 то не улечу ли я в прерывание? (что не должно быть).
Нужно ли мне проверять флаг перед включением прерывания INT0 и если он установлен сбрасыать? Не лишнее ли это?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 15602
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

касательно INT0/1...
Если прерывание по фронту/спаду флаг будет установлен по факту события независимо было ли разрешено или запрещено данное прерывание.
Следовательно необходим предварительный анализ наличия флага и его сброс при необходимости перед разрешением прерывания.
Прерывание по уровню флаг НЕ УСТАНАВЛИВАЕТ - выполняется вызов по факту события ( если уровень останется на момент выхода из прерывания, то оное будет перезапущено заново после исполнения одной команды, следующей за reti ).
:roll:
Реклама
Открыл глаза
Сообщения: 41
Зарегистрирован: Пт май 29, 2009 09:38:45

Сообщение Compressor »

Благодарю, вот этот момент был непонятен. Буду флаг проверять. Настроен INT0 как раз по спаду, не уточнил в вопросе
Первый раз сказал Мяу!
Аватара пользователя
Сообщения: 35
Зарегистрирован: Чт май 14, 2015 16:58:00
Откуда: Kharkiv

Сообщение lizard66 »

[uquote="Compressor",url="/forum/viewtopic.php?p=3888341#p3888341"]Если например я временно запрещаю прерывание INT0 в регистре масок, будет ли устанавливаться флаг прерывания в регистре флагов в данном случае при возникновении события?

И если я опять разрешу прерывание INT0 то не улечу ли я в прерывание? (что не должно быть).
Нужно ли мне проверять флаг перед включением прерывания INT0 и если он установлен сбрасыать? Не лишнее ли это?[/uquote]
Если INTx в EIMSK не установлен, то все события по по этому внешнему прерыванию игнорируются, флаг INTFx в EIFR не устанавливается и "отложенного" прерывания не возникает.
Реклама
Эиком - электронные компоненты и радиодетали
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

На каждый мк нужно в даташите смотреть, какой регистр отвечает за разрешение внешнего прерывания. К примеру у ATMEGA8535 это GICR. По сбросу флага. Если вы не включали ранее, если вы правильно провели инициализации, если ранее включали, но правильно выключили, то можно не проверять. Если есть сомнения, проверяйте, это много ресурсов не отнимает. Теперь, чтобы не было ложных срабатывания, нужно правильно провести инициализации. Иначе будут сюрпризы. Поясняю. Берём ATMEGA8535, устанавливаем в регистре GICR INT0. Но, так как по умолчанию стоит настройка по низкому уровню, и если на входе низкий уровень, то флаг будет выставлен и произойдёт переход на вектор прерывания.
Поэтому порядок такой. Сначала режим внешнего прерывания. И только потом разрешать прерывания.
Кстати, у внешнего прерывания нет такого режима, чтобы флаг выставлялся, без включения соответствующего прерывания. Но это и логично. Порт без прерывания и так можно проверить.
Контактная информация:
Реклама
OKF
Это не хвост, это антенна
Сообщения: 1407
Зарегистрирован: Вт июн 07, 2011 08:03:18

Сообщение OKF »

[uquote="Compressor",url="/forum/viewtopic.php?p=3888365#p3888365"]Буду флаг проверять.[/uquote] Зачем проверять? Просто сбрасывайте перед разрешением.
Реклама
Открыл глаза
Сообщения: 41
Зарегистрирован: Пт май 29, 2009 09:38:45

Сообщение Compressor »

[uquote="OKF",url="/forum/viewtopic.php?p=3888810#p3888810"][uquote="Compressor",url="/forum/viewtopic.php?p=3888365#p3888365"]Буду флаг проверять.[/uquote] Зачем проверять? Просто сбрасывайте перед разрешением.[/uquote] сбрасывается то он записью единицы, а если не проверить а там ноль был, неувязочка выйдет, сам флаг установлю
Это не хвост, это антенна
Сообщения: 1480
Зарегистрирован: Ср июн 25, 2008 15:19:44

Сообщение Demiurg »

Нет. Эти флаги сбрасываются единицей. Установки в 1 не будет. Читайте даташиты. RTFM...
Контактная информация:
Ответить

Вернуться в «AVR»