[an error occurred while processing this directive] [an error occurred while processing this directive]
Где это Вы нашли???
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
[an error occurred while processing this directive] [an error occurred while processing this directive]

Отправлено AlexD 16 мая 2002 г. 19:27
В ответ на: Нашел. При измении любого бита в ACSR флаг прерывания сбрасывается отправлено Ilhom 16 мая 2002 г. 18:57

Если имеется ввиду следующее:

Observe, however, that if another bit in this register is modified
using the SBI or CBI instruction, ACI will be
cleared if it has become set before the operation.

то это означает, что команды чтение-модификация-запись (каковыми и являются SBI и CBI)
затирают установленный флаг прерывания. Всё из-за того, что:

содержимое регистра читается в АЛУ
модифицируется нужный бит
значение !записывается! из АЛУ обратно в регистр

Всё из-за того, что сброс флага происходит единицей :-(

Между прочим хорошие грабли - сам нарывался.

НИ В КОЕМ СЛУЧАЕ НЕЛЬЗЯ ПОЛЬЗОВАТЬСЯ КОМАНДАМИ SBI И CBI ДЛЯ МОДИФИКАЦИИ
БИТ В ТОМ-ЖЕ РЕГИСТРЕ, ЕСЛИ НЕ ХОЧЕШЬ ПОТЕРЯТЬ ОТЛОЖЕННОЕ ПРЕРЫВАНИЕ.

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

Ответы



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

E-mail: info@telesys.ru