ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 04.04.2025

Просмотров: 393

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

текущей команды процессор возвращает сигнал разрешения прерывания по линии INTA контроллеру прерываний;

5)ПКП сбрасывает бит IRi=0 в регистре IRR, устанавливает бит ISi=1 в регистре ISR и передает на линии D7–D0 код номера типа прерывания. Установка бита ISi в регистре ISR блокирует прерывания от этого и всех других входов с меньшими приоритетами IRi–IR7 до момента его

сброса оперативной программой.

Чтобы повторить процедуру прерывания от данного входа, необходимо сигнал на входе IRi вернуть в “неактивное” состояние.

Интерфейс ВУ содержит схему формирования ЗП на входе IRi ПКП, регистр состояния ВУ, управляющие регистры, определяющие режим работы отдельных элементов, а также буферные регистры данных. В качестве устройства, формирующего запросы прерывания в системе, используется программируемый 3-канальный интервальный таймер (ПИТ).

После программирования, ПИТ вырабатывает последовательность импульсов типа меандр с установленным периодом следования T, которые могут использоваться для формирования запросов на прерывание. Состояние выходов каналов фиксируются в регистре состояния (биты 0, 1 и 2). Интерфейс ПИТ формирует запросы прерываний на входе IR3 ПКП (рис. 2.3), если в регистре состояния (адрес 302h) бит OUТ1 принимает единичное значение, а в регистре управления прерываниями (адрес 30Fh) программа установит флаг разрешения прерываний (ФРП) в “1”.

Регистр состояния, адрес 302h

7

6

5

4

3

2

1

0

1

1

1

1

АЦП

OUТ2

OUТ1

OUТ0

IR3

Регистр управления прерываниями, адрес 30Fh

7

6

5

4

3

2

1

0

Т

Х

Х

Х

Х

Х

Х

Х

ФРП

Рис. 2.3. Схема формирования сигнала ЗП от таймера платы L-154

Бит OUТ1 отображает состояние выхода первого канала таймера, которое одну половину периода импульса T/2 принимает единичное значение, а другую половину периода – нулевое.

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

Вчастности, устройства, описанные в лабораторной работе №1,

могут использоваться: для выработки управляющих сигналов с

18


установленным периодом следования (ЦАП) или для сбора данных с датчиков объекта автоматизации с заданной дискретностью (АЦП).

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

2.3. Методика программирования прерываний

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

Инициализация контроллера прерываний выполняется BIOS при включении системы.

Подготовка к обмену с прерыванием выполняется фоновой программой и включает:

-запрет прерываний от входа IR3 в ПКП на время подготовки к обмену;

-определение глобальных переменных для совместного использования фоновой и оперативной программами: резервирование необходимого объема оперативной памяти для данных, для подсчета числа переданных слов и указания общего их количества;

-сохранение старого вектора прерываний от входа IR3, для его последующего восстановления по окончании обмена;

-установку вектора прерывания от входа IR3 на программу обслуживания прерываний от таймера;

-разрешение прерываний в контроллере прерываний от входа IR3.

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

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

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

-сохранение регистров процессора, модифицируемых во время работы программы;

-инкремент программного счетчика;

-непосредственный обмен данными ВУ с памятью ЭВМ;

-сброс бита IS3 в регистре обслуживаемых запросов ISR и восстановление регистров процессора.

-проверку текущего значения программного счетчика и запрет последующих прерываний от входа IR3 при его равенстве конечному значению.

19


2.4. Программная реализация методики программирования прерываний

Рассмотрим программные средства, реализующие методику программирования прерываний, на примере генерации сигнала на выходе ЦАП с заданными интервалом дискретизации T и амплитудной характеристикой в режиме прерывания фоновой программы от таймера L-154.

Пример 2.1. Генерация синусоидального сигнала с прерыванием текущей программы в среде программирования Turbo-Pascal. Для запуска ПИТ используется процедура Set_Time (T: word) из модуля timer154, где T

– период формирования запросов прерываний в микросекундах.

Program Demo_Interrupt; Uses Dos, crt, timer154;

const BasAdr: word=$300; count: integer=1; var U:array[0..1024] of integer;

OldIntB: pointer; T, i: integer; F, A: real; Nmas: word;

Procedure IntDAC; interrupt;

{Оперативная программа обслуживания прерываний.}

{Ключевое слово Interrupt приводит к генерации машинных команд, обеспечивающих сохранение в стеке всех регистров процессора при входе в процедуру IntDAC и извлечение их из стека перед выходом из нее} Begin {Старт оперативной программы}

asm STI end;{Установка IF=1 в регистре флагов ЦП} Port[BasAdr]:=U[count]; {Вывод в ЦАП очередного значения} inc(count); {Инкремент программного счетчика}

if count > Nmas then dec(count, Nmas); {Генерация выполняется непрерывно, если не нажата клавиша}

if keypressed then Port [$21]:=Port [$21] or $8; {Проверка нажатия клавиши и запрет прерываний от входа IR3, если это произошло}

Port[$20]:=$20;{IS3=0 Сброс бита регистра ISR – OCW2}

End; {Конец оперативной программы} Begin {Основная программа}

Port [BasAdr+$f]:= 0; {Запрет генерации прерываний от платы L-154} Port[$21]:=Port[$21] OR $8;{Запрет прерывания от входа IR3 в ПКП}

Writeln(' Installation parameters of a signal'); writeln;

{Установка параметров сигнала}

write('Install number of ordinates of a signal on one period (2..1024) ?'); readln (Nmas); F:=2*pi/Nmas;

Write(' Install amplitude of a signal in volts ?'); readln(A);

for i:= 1 to Nmas do U[i]:=Round(2048 + A/0.0025*sin(F*(i-1)));

{Определена синусоидальная форма сигнала и вычислены его ординаты}

GetIntVec($B,OldIntB); SetIntVec($B,@IntDAC);

20


{Сохранен старый вектор прерывания от входа IR3 в переменной OldIntB. Установлен новый вектор прерывания от входа IR3 на процедуру IntADC} write (' Installation an interval of digitization in microseconds ?'); readln (T);

F:=1000000.0 /(T*Nmas);

writeln(' Start of the generator, Frequency = ',F:8:4);

Set_Time(T); {Запуск таймера}

Port[BasAdr+$F]:=1; {Разрешение прерываний от таймера}

Port[$21]:=Port[$21] AND (NOT ($8));

{Разрешены прерывания от IR3 в регистре IMR ПКП}

{Здесь должна быть фоновая программа, которая будет выполняться совместно с программой вывода данных в ЦАП}

writeln(' For break to press any key!!!'); {Как закончить программу?} while not keypressed do; while keypressed do readkey;

SetIntVec($B,OldIntB); {Восстановление старого вектора прерываний от входа IR3} End. {Конец основной программы}

2.5.Задание и порядок выполнения работы

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

2.Разработайте алгоритм и программы:

a)ввода в реальном времени массива данных из модуля АЦП в ОЗУ ЭВМ с прерыванием фоновой программы от таймера L-154 (период дискретизации сигнала и канал мультиплексора указываются из табл. 2.1); б) расчета в фоновом режиме работы процессора значений функции (из таблицы 1.1 по указанию преподавателя);

в) преобразования значений кодов АЦП в значения напряжения UКВ по окончании ввода всего массива, а также определения оценок математического ожидания, дисперсии и размаха входного сигнала U;

г) вывода массива исходных данных и результатов расчета на экран терминала и сохранения их на диске.

3.Введите в ЭВМ и отладьте программу эксперимента.

4.Соедините вход АЦП с источником исследуемого сигнала.

5.Запустите программу на выполнение и сохраните результаты эксперимента. По известному периоду T квантования сигнала постройте

график зависимости UКВ(t), определите по графику частоту f входного сигнала и его амплитудное значение.

6.Уменьшите вдвое период запуска АЦП и повторите п.5 задания. Сравните результаты расчетов с аналогичными данными, полученными в п. 5.

21


2.6.Контрольные вопросы

1.В каких практических ситуациях используется обмен данными в режиме прерывания программы процессора? Каковы отличия, преимущества и недостатки рассматриваемого способа программного обмена по сравнению с обменом данными между ЭВМ и ВУ по готовности?

2.Объясните последовательность действий процессора, ПКП и интерфейса ВУ при обмене данными с прерыванием программы.

3.Каким образом процессор определяет устройство, затребовавшее прерывание программы, и как осуществляется переход на программу его обслуживания? Какой номер типа и адрес вектора прерывания имеет устройство, подключенное к входу IR3?

4.Объясните состав и назначение регистров ПКП и возможные операции процессора с регистрами контроллера.

5.Объясните алгоритм работы ПКП в режиме вложенных прерываний.

6.Какова последовательность действий оперативной программы и каким образом эти действия реализуются программно.

7.Объясните алгоритм взаимодействия контроллера прерываний и интерфейса ВУ при выполнении обмена данными.

8.Какова последовательность операций подготовки к обмену данными в режиме прерываний фоновой программы?

9.Прочитайте содержимое регистров IRR, IMR, ISR первого контроллера прерываний. Объясните полученные результаты.

Библиографический список

1.Вегнер В.А., Крутяков А.Ю., Серегин В.В., Сидоров В.А. Спесивцев А.В. Аппаратура персональных компьютеров и ее программирование. IBM PC/XT/AT и PS/2 – М: Радио и связь, 1995. 224 с.

2.Фролов А.В., Фролов Г.В. Аппаратное обеспечение IBM PC: В 2-х ч. Ч2. М.: "ДИАЛОГ-МИФИ", 1992. 208 с. (Библиотека системного программиста; Т.2).

22