[an error occurred while processing this directive] [an error occurred while processing this directive]
Ответ: Как правильно запрещать global interrupt надо смотреть
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено В.С. 25 марта 2002 г. 16:07
В ответ на: Как в пиках правильно запрещать прерывания? отправлено Xan 25 марта 2002 г. 09:19

в data sheet на конкретный процессор. Так, например, 17С42 требует ожидания установки GIE при запрещении global прерывания, остальые члены 17-й серии не требуют. Про 16-е ничего не говорю - давно не пользовался. Кроме того при запрещенном global флаги индивидуальных прерываний все равно выставляются и автоматически не очищаются, поэтому при возврате из прерывания, команда retfie автоматически разрешает global и, если какое-то преывание не маскировано и флаг его взеден, происходит переход по соответсвующему вектору. Забычивость в сбросе флагов индивидуальных немаскированных прерываний приводит как бы к подвисанию процессора - он все время ветвится в эти прерывания. Кроме того, если процессор переводится в sleep mode, то даже при запрещенном глобальном, немаскированное индивидуальное прерывание, при его возникновении, непременно разбудит процессор.

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

Ответы



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

E-mail: info@telesys.ru