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

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

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

Сообщение Compressor »

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

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

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

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

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

Сообщение BOB51 »

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

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

Сообщение Compressor »

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

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

Сообщение lizard66 »

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

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

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

Сообщение Demiurg »

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

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

Сообщение OKF »

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

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

Сообщение Compressor »

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

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

Сообщение Demiurg »

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

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