2016-03-08 2 views
3

Так что считайте, что глобальное прерывание отключено, и теперь наступает таймер или любое другое прерывание Maskable, это не будет обслуживаться. Но устанавливает ли он соответствующий флаг? И будет ли он обслуживаться позже, когда я снова включу глобальное прерывание?Прерывания сохраняют свое состояние, когда GLOBAL INTERRUPT отключен?

Под этим я хочу спросить, имеет ли бит прерывания значение 1 из 0, а глобальное прерывание отключено?

Или эта архитектура специфична, где в некоторых архитектурах удерживается состояние прерывания при отключении глобального прерывания и обслуживается им при повторном включении, а некоторые архитектуры просто пропустите их!

ответ

2

Это несколько MCU-специфический, но, как правило, глобальная маска прерывания просто предотвращает выполнение прерывания. Маска глобального прерывания расположена в ядре ЦП (обычно в регистре кодов условий), в то время как регистр флага источника прерывания и регистр разрешения прерывания расположены в аппаратном периферии.

У вас есть регистр флагов оборудования, который устанавливает свои флаги независимо от регистра разрешений аппаратного прерывания, который сообщает, какие флаги в регистре флагов должны давать прерывания. И регистр разрешения прерывания, в свою очередь, не зависит от глобальной маски прерывания.

Поэтому аппаратное периферийное устройство, сгенерировавшее прерывание, по-прежнему будет устанавливать флаг, который инициировал прерывание, независимо от того, будет ли этот флаг инициировать прерывание или нет. Обычно этот самый флаг может использоваться для опроса аппаратного обеспечения вместо использования прерывания. Поэтому он должен работать, если прерывания отключены.

+0

@Anurag, когда глобальная маска снова включена, будут выполняться любые отдельные флаги прерываний (которые также включены). Вы читаете и очищаете их при опросе таким же образом, как когда вы прерываете их. –

Смежные вопросы