[an error occurred while processing this directive]
Внешние прерывания бывают разные
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено Voldemar 27 июня 2002 г. 15:17
В ответ на: Вопрос по внеш. прерываниях в AVR. отправлено Tip 27 июня 2002 г. 13:47

Переход на вектор прерывания происходит когда соответствующий флаг INTFx = 1 и GIMSK = 1.
Установку флага INTFx в 1 можно запрограммировать по фронту, спаду или по уровню.
Если прерывание работает по фронту/спаду - INTFx будет равен 1 от фронта/спада импульса до начала обработки прерывания.
Если во время выполнения подпрограммы обработки прерывания произойдет еще один фронт/спад - INTFx будет установлен в 1 и после выхода из прерывания МК снова в него ввалится (возможно выполнив прерывание с более высоким приоритетом).

Если вход прерывания запрограммирован на прерывание по уровню, то INTFx будет равен 1 пока на входе будет присутствовать активный уровень (обычно 0, но в некоторых AVR-ax возможен выбор 0 или 1), если во время обработки прерывания внешний сигнал не будет снят, то МК будет снова и снова вызывать подпрограмму обработки прерывания. Чтобы этого не происходило нужно в обработчике сделать что-нибудь, чтобы снять внешний сигнал, или сбросить в 0 соотвествующий флаг INTx в регистре GIMSK, или сидеть в обработчике пока внешний сигнал не будет снят, или перепрограммировать вход на прерывание по фронту ....

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru