Информационный сайт

 

Реклама
bulletinsite.net -> Книги на сайте -> Пользователю -> Евстифеев А.В. -> "Микроконтроллеры семейства" -> 33

Микроконтроллеры семейства - Евстифеев А.В.

Евстифеев А.В. Микроконтроллеры семейства — Infineon, 2007. — 318 c.
Скачать (прямая ссылка): microkontrolleri2007.pdf
Предыдущая << 1 .. 27 28 29 30 31 32 < 33 > 34 35 36 37 38 39 .. 100 >> Следующая

Команда «SCXT CP, #New_Bank» отсылает содержимое CP в системный стек и загружает в СР значение базового адреса «New_Bank». С этого момента подпрограмма использует собственные GPR-регистры. При завершении выполнения подпрограммы прерывания этот банк регистров сохраняется, и таким образом содержимое банка будет доступно при следующем прерывании.

Перед возвращением из прерывания (команда RETI), предыдущее значение CP просто записывается назад из системного стека.

Примечание: Первая команда после SCXT не должна использовать

GPR.

Ресурсы, используемые подпрограммой прерывания, необходимо сохранять при входе в подпрограмму обслуживания и необходимо восстанавливать при возврате в основную программу, в том числе DPP и регистры модуля умножения и деления.

5.5 Время ответа на прерывание

Время ответа на прерывание представляет из себя временной интервал, который проходит с момента установки флага запроса на прерывание разрешенного источника прерывания до того момента, когда первая команда (I1) вызывается из адреса вектора прерывания. Как правило время ответа на прерывание занимает 3 командных такта.

6-19 МЭИ, Центр Промышленной Электроники Фирмы Infineon

Система прерываний и ловушек/С167

Стадии конвейера Такт 1 Такт 2 Такт 3 Такт 4
Выборка N N+1 N+2 I1
Декодирование N-1 N TRAP (1) TRAP(2)
Исполнение N-2 N-1 N TRAP
Запись N-3 N-2 N-1 N

IR-Флаг

Время ответа на прерывание

Рисунок 5-4

Временные диаграммы работы конвейера при входе в прерывание

Все команды в конвейере, включая команду N (во время исполнения которой устанавливается флаг запроса на прерывание), завершаются прежде чем начинается выполнение подпрограммы прерывания. Реальное время выполнения этих команд влияет на время ответа на прерывание.

На рисунке, приведенном выше, флаг запроса на прерывание устанавливается в 1-ом такте (вызов команды N). Во время 2-ого такта производится сравнение уровней приоритетов источников прерывания и выбирается источник с максимальным уровнем. В третьем такте TRAP команда инжектируется в стадию декодирования конвейера, заменяя собой команду N+1 и устанавливая в 0 флаг запроса на прерывание. Такт 4 завершает инжектированную TRAP команду (сохраняя PSW, IP и CSP в случае сегментированной памяти) и вызывает первую команду из адреса вектора.

Все команды, введенные на конвейер после установки флага запроса на прерывание (N+1, N+2), будут выполнены после возвращения из подпрограммы обслуживания прерывания.

Минимальное время ответа на прерывание составляет 5 тактов (250 нс @ 20 Мгц CPU clock). При этом выполняются команды только из внутренней ROM, отсутствуют запросы на чтение внешних операндов, а также нет запросов на прерывание во время последнего состояния такта команды. При установке флага запроса на прерывание во время первой стадии командного такта, минимально возможное время ответа увеличивается до 6 тактов (300 нс @ 20МГц CPU Clock).

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

6-20 МЭИ, Центр Промышленной Электроники Фирмы Infineon

Система прерываний и ловушек/С167

• Когда между командами N-2/N-1 или N-1/N или N имеет место прямая запись значений в PSW или SP, минимальное время ответа может увеличиться на 1 такт.

• Когда команда N совершает чтение операнда из внутренней ROM, или когда команда N - call, return, trap или MOV RN (Rm. #data16) расположена во внутренней ROM, минимальное время может дополнительно увеличиться на 2 такта.

• В случае чтения командой N регистра PSW, и если команда N-1 оказывает влияние на флаги состояния, время ответа на прерывание может дополнительно увеличиться на 2 такта.

В худшем случае, время ответа на прерывание, во время выполнения программы внутренней ROM, может дополнительно вырасти до 12 тактов (600нс @ 20МГц CPU Clock).

Любой обращение ко внешней памяти может дополнительно увеличить время ответа на прерывание. Могут наблюдаться следующие варианты:

• Вызов команды из внешней памяти

• Операнд читается из внешней памяти

• Результат записывается во внешнюю память

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

Несколько примеров иллюстрируют эти задержки:

• В наихудшем случае, время ответа на прерывание, при доступе к внешней памяти имеет место в том случае, когда команды N, N+1, N+2 выполняются из внешней памяти, команды N-1 и N требуют чтения внешних операндов, команды N-3 ... N записывают свои операнды назад во внешнюю память, и вектор прерывания указывает на адрес в внешней памяти. В этом случае время ответа на прерывание состоит из времени осуществления 9 циклов доступа к 16-разрядной внешней шине. Это обусловлено тем, что команда I1 не может быть вызвана с помощью внешней шины до тех пор, пока не будут записаны, вызваны и прочтены данные от предыдущих команд.
Предыдущая << 1 .. 27 28 29 30 31 32 < 33 > 34 35 36 37 38 39 .. 100 >> Следующая
Реклама
Авторские права © 2009 AdsNet. Все права защищены.
Rambler's Top100