Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
04.06.2008, 21:56
|
|
Прописка
Регистрация: 10.11.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Как очистить очередь прерываний в ATMega8535?
У меня такой вопрос: у меня контроллер ATMega8535. После обработки прерывания мне бы желательно сделать так, чтобы информация о тех прерываниях, которые произошли за время обработки была удалена. Я поискал в документации и нашел вот такую штуку:
Цитата:
|
GIFR Register
•Bit 6 – INT0: External Interrupt Request 0 Enable
When the INT0 bit is set (one) and the I-bit in the Status Register (SREG) is set (one),
the external pin interrupt is enabled. The Interrupt Sense Control0 bits 1/0 (ISC01 and
ISC00) in the MCU General Control Register (MCUCR) define whether the external
interrupt is activated on rising and/or falling edge of the INT0 pin or level sensed. Activity
on the pin will cause an interrupt request even if INT0 is configured as an output. The
corresponding interrupt of External Interrupt Request 0 is executed from the INT0 Inter-
rupt Vector.
|
Это оно? Я просто не могу понять куда смотреть... И что надо записать в этот регистр: 0 или 1? По идее, если писать 1 - то прерывание будет вызвано ещё раз, а если 0 - то нет... Но документация говорит иное.
Что скажете?
И ещё вопросец: сколько прерываний "запоминается" при обработке одного? То есть, к примеру, пошла обрабатываться одна процедура... А сколько прерываний будет максимлаьно вызвана по возврату?
Спасибо.
|
|
|
|
04.06.2008, 22:14
|
|
Вид на жительство
Регистрация: 30.12.2006
Адрес: Junktown
Сообщений: 300
Сказал спасибо: 164
Сказали Спасибо 171 раз(а) в 59 сообщении(ях)
|
В конце обработки прерывания нужно очищать флаги тех прерываний, которые могли бы вызываться в это время.
То есть, если произойдет событие, которое вызывает прерывание, то будет установлен флаг в соотв. регистре (например, в регистре GIFR будет установлен флаг INTF0 если на ножке INT0 изменится уровень во время обработки какого то другого прерывания и если разрешено прерывание INT0). Так вот, при выходе из обработчика нужно очистить эти флаги (в данном случае флаг INT0 очищается записью в него лог. 1)
The flag is cleared when the interrupt routine is executed.
Alternatively, the flag can be cleared by writing a logical one to it. (это чуть ниже приведенной вами цитаты из ДШ).
[quote="greafuger"] И ещё вопросец: сколько прерываний "запоминается" при обработке одного? То есть, к примеру, пошла обрабатываться одна процедура... А сколько прерываний будет максимлаьно вызвана по возврату?
[quote]
По возврату может быть вызвано столько прерываний, сколько произошло событий, которые приводят к разрешенным прерываниям. Они будут вызываться в порядке приоритета прерываний.
|
|
|
|
04.06.2008, 22:38
|
|
Прописка
Регистрация: 10.11.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
А если я поставлю флаг в "1" в регистре GIFR - гарантирует ли это, что МК "забудет" про все остальные необработанные прерывания? Ну я имею ввиду INT0, раз идет о них речь о них... И флаг их же...
|
|
|
|
04.06.2008, 22:53
|
|
Вид на жительство
Регистрация: 30.12.2006
Адрес: Junktown
Сообщений: 300
Сказал спасибо: 164
Сказали Спасибо 171 раз(а) в 59 сообщении(ях)
|
если стереть флаг (стирать нужно для каждого используемого прерывания), то прерывание не произойдет до тех пор, пока не выполнятся три условия - I бит статус регистра = 1, разрешено соотв. прерывание и установлен флаг прерывания.
как раз событие и устанавливает этот флаг.
нет флага - не наступит прерывание
|
|
|
|
04.06.2008, 23:03
|
|
Прописка
Регистрация: 10.11.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Спасибо!!!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Как очистить память микросхем с УФ стиранием?
|
Slava5510 |
Микроконтроллеры, АЦП, память и т.д |
61 |
25.04.2012 21:48 |
Использование прерываний в ATMega8535
|
igor727 |
Микроконтроллеры, АЦП, память и т.д |
2 |
28.04.2007 15:50 |
Можно ли очистить стек?
|
RETAS |
Микроконтроллеры, АЦП, память и т.д |
14 |
09.03.2006 16:16 |
ATMega8535
|
Sergeyich |
Микроконтроллеры, АЦП, память и т.д |
3 |
15.09.2005 01:01 |
очередь
|
dED2005 |
Микроконтроллеры, АЦП, память и т.д |
2 |
15.04.2005 17:51 |
Часовой пояс GMT +4, время: 16:52.
|
|