Пр о ц е с с о р TMS 3 2 0C4 x
65
LDI
∗
AR0, R0
; чтение i-го слова из буфера порта
||
STI
R0,
∗
AR1++(1)
; запись (i-1)-го слова в память
STI
R0,
∗
AR1++(1)
; запись в память последнего слова
POPF
R0
; восстановление регистров из стека
POP
R0
;
POP
RC
;
POP
RE
;
POP
RS
;
POP
ST
;
RETI
; возврат из прерывания
2.1.3. Ввод/вывод в режиме ПДП
Ввод/вывод в режиме прямого доступа к памяти (ПДП) в процессоре
TMS320C4x является самым быстрым и сложным в плане программирования.
Для канала ПДП признаком завершения передачи служит установленный в
единицу бит TCINT FLAG (или AUX TCINT FLAG) в регистре управления ка-
нала ПДП (прил.
А
, табл.6), по которому может быть сгенерировано соответст-
вующее внутреннее аппаратное прерывание. Алгоритм работы процессора для
обработки внутреннего аппаратного прерывания от сопроцессора ПДП показан
на рис.2.3. Для синхронизации ввода/вывода и обработки используется
флаг
(глобальная переменная, доступ к которой возможен как из основной програм-
мы, так и из обработчика прерываний), по состоянию которого можно опреде-
лить завершение ПДП передачи. После инициализации и запуска канала ПДП
передача данных осуществляется параллельно с работой основного процессора
(за счет максимального использования внутренних шин процессора). При неко-
торых условиях передача данных не занимает процессорных циклов, например,
когда выборка команды осуществляется из кэш-памяти команд, операнды вы-
бираются из блока внутренней памяти RAM0, а ПДП передача происходит ме-
жду коммуникационным портом и блоком памяти RAM1.
Инициализация канала ПДП производится в следующей последователь-
ности:
•
считывается регистр управления канала и проверяются биты START, канал
можно программировать, если эти биты содержат 10 или 00;
•
устанавливается требуемый режим работы с битами START=00, при этом
рекомендуются следующие значения битов:
♦
DMA PRI = 01 – циклический сдвиг приоритетов между ПДП и CPU;
♦
TRANSFER MODE = 01 – останов без автоинициализации;
♦
SYNC MODE = 01 или 10 – синхронизация приемника или источника;