Вложенность прерываний

Обслуживающая программа может быть прервана приходом прерывания более высокого приоритета. Когда бит режима вложенности NESTM (в регистре MODE1) равен нулю, обслуживающая программа не может прерваться и любое пришедшее прерывание будет обработано только после ее завершения. В противном случае незамаскированные прерывания с более высоким приоритетом могут прервать выполнение обслуживающей программы.

В режиме вложенности ADSP-21000 использует указатель маски прерывания (регистр IMASKP) чтобы создавать временную маску прерываний для каждого уровня вложенности. При поступлении нового прерывания, если вложенность разрешена, генерируется новая временная маска IMASKP, запрещающая все прерывания с равным или более низким приоритетом, путем переноса из регистра IMASK только битов, соответствующих прерываниям более высокого приоритета, чем поступившее.

При возврате из обслуживающей программы бит обслуживающего прерывания в IMASKP сбрасывается и снова генерируется новая маска прерываний путем маскирования всех прерываний равного и низшего приоритетов относительно бита самого высокого прерывания из установленных в IMASKP.

ADSP-21000 игнорирует и не защелкивает прерывания, происходящие, когда обслуживающая его программа уже выполняется.

Вложенность прерываний и IMASKP

Процессор ADSP_2106x поддерживает вложение одной программы обработки прерывания в другую, то есть выполнение программы обработки может быть приостановлено прерыванием с более высоким приоритетом. Этот режим устанавливается битом режима вложенности (NESTM) в регистре MODE1.

Когда бит NESTM равен 0, программа обработки прерывания не может быть прервана. Любое поступившее прерывание будет обработано только после завершения текущей программы обработки прерывания. Когда NESTM равен 1, немаскированные прерывания с более высоким приоритетом могут прерывать программы обработки прерываний с более низким приоритетом. Бит NESTM должен изменяться только вне программы обработки прерывания или в программе обработки сброса, иначе вложенность прерываний будет работать некорректно.

Если вложенность разрешена и сразу после прерывания с более низким приоритетом генерируется прерывание с более высоким приоритетом, то начало выполнения программы обработки прерывания с более высоким приоритетом задерживается на один цикл. Это позволяет выполнить первую команду программы обработки прерывания с более низким приоритетом прежде, чем она будет прервана.

В режиме вложенности для создания временной маски прерывания для каждого уровня вложенности процессор ADSP_2106x использует указатель маски прерывания IMASKP; значение регистра IMASK не изменяется. Процессор изменяет IMASKP каждый раз, когда прерывание с более высоким приоритетом прерывает выполнение программы обработки прерывания с более низким приоритетом.

Биты в IMASKP соответствуют тем же прерываниям и упорядочены по приоритету, так же, как в IRPTL и IMASK. Когда происходит прерывание, его бит устанавливается в IMASKP. Если вложенность разрешена, то генерируется новая временная маска прерывания, маскирующая все прерывания равного или более низкого приоритета по отношению к прерыванию высшего приоритета, бит которого установлен в IMASKP. После возврата из программы обработки прерывания (RTI) бит прерывания высшего приоритета, установленный в IMASKP, обнуляется, и снова генерируется новая временная маска прерывания, маскирующая все прерыванияравного или более низкого приоритета по отношению к прерыванию высшего приоритета, бит которого установлен в IMASKP. Установленный в IMASKP бит прерывания, которое имеет высший

приоритет, всегда соответствует приоритету обрабатываемого в данный момент прерывания.

Если вложенность запрещена, то процессор маскирует все прерывания и IMASKP не используется, хотя IMASKP все равно обновляется для создания временной маски прерывания.

Когда IRPTL модифицируется, процессор не переходит сразу же к обработке сгенерированного прерывания, если уже выполняется программа обработки другого прерывания. Он ждет выполнения команды RTI для того, чтобы войти в программу обработки прерывания снова.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: