Прерывания PTS

Управляющие блоки

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

Каждый PTSCB требует восьми байтов данных в регистрах RAM. Адрес первого (самого младшего) байта PTSCB хранится в таблице "Векторы PTS" в памяти специального назначения. Первый байт записывается в адрес, кратный 8 (граница четырех слов). На рис. 9.3 приведены PTSCB для каждого режима PTS. Незадействованные байты PTSCB могут использоваться как дополнительная оперативная память.

Single TransferBlock TransferA/D Scan Mode
Unused
Unused
PTSDST(HI)
PTSDST(LO)
PTSSRC(HI)
PTSSRC(LO)
PTSCON
PTSCOUNT
Unused
PTSBLOCK
PTSDST(HI)
PTSDST(LO)
PTSSRC(HI)
PTSSRC(LO)
PTSCON
PTSCOUNT
Unused
Unused
PTSREG(HI)
PTSREG(LO)
PTS_S/D(HI)
PTS_S/D(LO)
PTSCON
PTSCOUNT

HSO ModeHSI Mode
Unused
PTSBLOCK
Unused
Unused
PTSSRC(HI)
PTSSRC(LO)
PTSCON
PTSCOUNT
Unused
PTSBLOCK
Unused
Unused
PTSDST(HI)
PTSDST(LO)
PTSCON
PTSCOUNT

Рис. 9.3. Управляющие блоки PTS

Регистр PTSCOUNT

Первая ячейка каждого PTSCB - всегда регистр PTSCOUNT. PTSCOUNT определяет число циклов PTS, которые надо последовательно выполнить без вмешательства центрального процессора. Так как PTSCOUNT - 8-битовая величина, то максимальное число циклов - 256. PTSCOUNT уменьшается в конце каждого цикла PTS. Когда PTSCOUNT достигнет нуля, аппаратные средства очищают соответствующий бит регистра PTSSEL и устанавливают соответствующий бит регистра PTSSRV, который запрашивает прерывание "end-of-PTS" (конец PTS). Когда вызывается прерывание "end-of-PTS", аппаратные средства очищают соответствующий бит в PTSSRV. Для возобновления работы PTS бит в PTSSEL должен быть установлен пользователем.

Прерывание END-OF-PTS

Регистр PTSSRV регистрирует запросы на прерывания "end-of-PTS". Прерывание "end-of-PTS" - стандартное прерывание, которое указывает, что PTS нуждается в обслуживании. Контроллер прерывания обрабатывает это прерывание подпрограммой обработки прерывания, адрес которой хранится в ячейке памяти, как у любого стандартного вектора прерывания. Например, PTS обслуживает Transmit прерывание, если установлен PTSSEL.8. Номер вектора прерывания PTS - 8050H, а номер соответствующего вектора прерывания "end-of-PTS" - 8030H.

Когда вектор прерывания "end-of-PTS" обслуживается подпрограммой обработки прерывания, аппаратные средства очищают бит PTSSRV. Подпрограмма обработки прерывания должна устанавливать соответствующий бит PTSSEL, чтобы повторно разрешить обслуживание прерывания PTS.

Регистр PTSCON

Вторая ячейка каждого PTSCB - всегда регистр PTSCON. Три бита регистра PTSCON определяют режим PTS: одиночная передача (Single Transfer), поблочная пересылка (Block Transfer), сканирование аналого-цифрового преобразователя (A/D Scan), загрузка CAM HSO (HSO) или чтение FIFO HSI(HSI) (см. табл. 9.3).

Таблица 9.3

Выбор режима PTS - PTSMODE (биты 5,6,7 регистра PTSCON)

Бит 7Бит 6Бит 5Выбранный режим
000Block Transfer
001HSO режим
010-
011HSI режим
100Single Transfer
101-
110A/D Scan
111-

PTSCON имеет одну конфигурацию для режимов одиночной и поблочной пересылки (см. табл. 9.4 ) и другую - для режимов A/D Scan, HSO и HSI (см. табл. 9.5).

Аббревиатура - PTSCON

Размер - 1 байт

Для режимов одиночной и поблочной пересылки:

Для режимов A/D Scan, HSO и HSI:

Таблица 9.4

Биты 0-4 регистра PTSCON (режимы одиночной (Single Transfer) и поблочной (Block Transfer) пересылок)

Номер бита МнемоникаИмяОписание
0DIАвтоинкремент PTSDSTУстановка этого бита заставляет регистр-приемник PTS увеличиваться в конце каждого цикла PTS.
1SIАвтоинкремент PTSSRCУстановка этого бита заставляет регистр-источник PTS увеличиваться в конце каждого цикла.
2DUМодификация PTSDSTУстановка этого бита заставляет регистр PTSDST сохранять свое последнее значение в конце цикла PTS. Очистка бита будет сохранять значение регистра PTSDST, которое было в начале цикла PTS.
3SUМодификация PTSSRCУстановка этого бита заставляет регистр PTSSRC сохранять свое последнее значение в конце PTS-цикла. Очистка этого бита будет сохранять значение регистра PTSSRC, которое было в начале цикла PTS.
4BWПередача байта/словаУстановка этого бита определяет передачу байта. Очистка этого бита определяет передачу слова.

Таблица 9.5

Биты регистра PTSCON (режимы A/D Scan, HSO и HSI)

Номер бита МнемоникаИмяОписание
0--Всегда 0
1--Всегда 1
2--Всегда 0
3UPDTМодификация регистраРежимы
A/D
HSI
HSO
Регистры
PTS_S/D
PTSDST
PTSSRC
4--Всегда 0
5-7--См. табл. 9.3

Краткий обзор режима одиночной передачи

В режиме одиночной передачи каждый цикл PTS передает один байт или одно слово (зависит от бита BW в PTSCON) из одной ячейки памяти в другую. Этот режим обычно используется совместно с прерываниями порта при последовательном вводе/выводе. Регистр PTSCOUNT определяет число передач (каждая передача - один цикл PTS).

PTS перемещает байт или слово из ячейки, указанной в регистре источника (PTSSRC), в ячейку, указанную в регистре приемника (PTSDST). PTSSRC и PTSDST могут указывать на любую ячейку памяти; однако если осуществляется передача слов, они должны указывать на четный адрес. Установка битов автоинкремента и битов модификации заставляет PTS увеличивать адреса источника (если SI и SU установлены) и/или адресата (если DI и DU установлены) в конце каждого цикла PTS. Адрес увеличивается на 1, если передаются байты, или на 2, если - слова. В одиночном режиме передачи биты автоинкремента и модификации должны быть или оба установлены, или оба очищены. Программирование битов автоинкремента и модификации как (0,1) или (1,0) выбирает недопустимый режим. PTSSRC и PTSDST могут увеличиваться (и модифицироваться) независимо друг от друга.

Аббревиатура - PTSSRC

Размер - 2 байта

Аббревиатура - PTSDST

Размер - 2 байта

Пример режима одиночной передачи

Следующий PTSCB определяет девять циклов PTS.

Unused
Unused
PTSDST (HI)=60H
PTSDST (LO)=00H
PTSSRC (HI)=00H
PTSSRC (LO)=20H
PTSCON=15H (DI, DU, & BW=1)
PTSCOUNT=09H

Каждый цикл перемещает одно слово из ячейки 20H в ячейки внешней памяти. PTS передает первое слово в ячейку 6000H. Затем он увеличивает и модифицирует адрес приемника и декрементирует регистр PTSCOUNT; PTS не увеличивает адрес источника. Когда начинается второй цикл, PTS перемещает второе слово из ячейки 20H в ячейку 6002H. Когда PTSCOUNT станет равным нулю, PTS заполнит ячейки 6000H-600FH и сгенерирует прерывание "end-of-PTS".

Краткий обзор режима поблочной пересылки

В режиме поблочной пересылки PTS перемещает блок данных из одних ячеек памяти в другие. Бит BW в PTSCON выбирает передачу байтов или слов, а регистр PTSBLOCK определяет число байтов или слов в каждом блоке (n=1-32 ). PTS передает блок байтов или слов из ячейки, указанной в регистре источника (PTSSRC), в ячейку, указанную в регистре приемника (PTSDST). PTSSRC и PTSDST могут указывать на любые ячейки памяти, однако при передаче слов адреса ячеек должны быть четными. Установка автоинкрементных битов в регистре PTSCON заставляет PTS увеличивать адрес источника (SI=1) и/или приемника (DI=1) в конце каждой передачи PTS. Если также установлен бит модификации, увеличенный адрес сохраняется в PTSSRC (SU=1) или PTSDST (DU=1) регистрах после каждого цикла PTS.

Установка и битов автоинкремента, и битов модификации означает, что адреса источника и/или приемника будут увеличиваться после каждого цикла. Регистры увеличиваются на 1 при передаче байтов, на 2 - при передаче слов.

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

В этом режиме важно различать передачу PTS и цикл PTS.

Передача PTS - это движение одного байта или слова от источника до приемника.

Цикл PTS состоит из передачи всего блока байтов или слов. Так как цикл PTS не прерываем, режим поблочной пересылки может создавать длительное время ожидания обслуживания прерывания. Время ожидания (в худшем случае) может составить до 500 временных состояний (поблочная пересылка 32 слов из одних ячеек внешней памяти в другие с использованием 8 битовой шины без состояний ожидания).

Аббревиатура- PTSBLOCK

Размер - 1 байт

Пример режима поблочной пересылки

Следующий PTSCB определяет три цикла PTS, каждый из которых будет передавать байты из ячеек памяти 20H-24H в один из следующих блоков: 6000H-6004H, 6005H-6009H или 600AH-600EH.

Unused
PTSBLOCK=05H
PTSDST(HI)=60H
PTSDST(LO)=00H
PTSSRC(HI)=00H
PTSSRC(LO)=20H
PTSCON=97H (DI, SI, DU, BW=1)
PTSCOUNT=03H

Каждый цикл PTS требует пакета из пяти передач. Источник и приемник увеличиваются после каждой передачи, но только приемник модифицируется после каждого цикла. Первый байт каждого цикла всегда читается из ячейки 20H.

<<< Содержание >>>