Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 04.06.2008, 21:56  
greafuger
Прописка
 
Регистрация: 10.11.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
greafuger на пути к лучшему
По умолчанию Как очистить очередь прерываний в 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 - то нет... Но документация говорит иное.
Что скажете?
И ещё вопросец: сколько прерываний "запоминается" при обработке одного? То есть, к примеру, пошла обрабатываться одна процедура... А сколько прерываний будет максимлаьно вызвана по возврату?
Спасибо.
Реклама:
greafuger вне форума  
Непрочитано 04.06.2008, 22:14  
rear
Вид на жительство
 
Аватар для rear
 
Регистрация: 30.12.2006
Адрес: Junktown
Сообщений: 300
Сказал спасибо: 164
Сказали Спасибо 171 раз(а) в 59 сообщении(ях)
rear на пути к лучшему
По умолчанию

В конце обработки прерывания нужно очищать флаги тех прерываний, которые могли бы вызываться в это время.
То есть, если произойдет событие, которое вызывает прерывание, то будет установлен флаг в соотв. регистре (например, в регистре 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]
По возврату может быть вызвано столько прерываний, сколько произошло событий, которые приводят к разрешенным прерываниям. Они будут вызываться в порядке приоритета прерываний.
rear вне форума  
Непрочитано 04.06.2008, 22:38  
greafuger
Прописка
 
Регистрация: 10.11.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
greafuger на пути к лучшему
По умолчанию

А если я поставлю флаг в "1" в регистре GIFR - гарантирует ли это, что МК "забудет" про все остальные необработанные прерывания? Ну я имею ввиду INT0, раз идет о них речь о них... И флаг их же...
greafuger вне форума  
Непрочитано 04.06.2008, 22:53  
rear
Вид на жительство
 
Аватар для rear
 
Регистрация: 30.12.2006
Адрес: Junktown
Сообщений: 300
Сказал спасибо: 164
Сказали Спасибо 171 раз(а) в 59 сообщении(ях)
rear на пути к лучшему
По умолчанию

если стереть флаг (стирать нужно для каждого используемого прерывания), то прерывание не произойдет до тех пор, пока не выполнятся три условия - I бит статус регистра = 1, разрешено соотв. прерывание и установлен флаг прерывания.
как раз событие и устанавливает этот флаг.
нет флага - не наступит прерывание
rear вне форума  
Непрочитано 04.06.2008, 23:03  
greafuger
Прописка
 
Регистрация: 10.11.2007
Сообщений: 104
Сказал спасибо: 0
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
greafuger на пути к лучшему
По умолчанию

Спасибо!!!
greafuger вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
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.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot