Шрифт:
Таблица 20.1 Формат регистров таймера, отображенных на память данных процессора
| Разряды регистров | Адрес | |||||||
|---|---|---|---|---|---|---|---|---|
| 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | |
| TPERIOD | 0x3FFD | |||||||
| TCOUNT | 0x3FFC | |||||||
| 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0x3FFB |
| Разряды регистров | Адрес | |||||||
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | |
| TPERIOD | 0x3FFD | |||||||
| TCOUNT | 0x3FFC | |||||||
| TSCALE | 0x3FFB |
Разрешение работы таймера производится установкой в единицу 5-го разряда регистра состояния процессора MSTAT. Когда работа таймера разрешена, регистр-счетчик TCOUNT декрементируется сигналами от логики масштабирования. При достижении счетчиком нуля, формируется прерывание таймера для процессора. После чего в регистр-счетчик TCOUNT автоматически загружается значение регистра периода TPERIOD и работа таймера продолжается.
Регистр масштабирования TSCALE содержит коэффициент деления тактовой частоты процессора и позволяет изменять время между прерываниями таймера.
Значения регистров TPERIOD и TSCALE могут загружаться с шины DMD. Таким образом, с помощью таймера можно генерировать прерывания каждые (TPERIOD+1)*(TSCALE+1) циклов, т.е. от 1 до FFFFFF16=1677721510 циклов. При тактовой частоте процессора 40МГц таймер может формировать прерывания с периодом от 20 нс до 0,3 с.
При необходимости прерывания таймера можно маскировать, сбрасывать или принудительно устанавливать программным образом.
Ниже приведен пример команд инициализации таймера:
Строка обработки прерывания в программе может иметь следующий вид:
Следующий пример обработчика прерывания таймера позволяет автоматически наращивать значения ячейки памяти 0x3000 и выводить эти значения в порт ввода-вывода по адресу 2000.
Подобным образом можно организовывать автоматическую регенерацию динамической памяти, подключаемой к сигнальному процессору. Учитывая, что объем такого типа памяти составляет десятки миллионов байт в одной микросхеме, можно догадаться о мощности устройств, создаваемых с ее применением. В то же время регенерация динамической памяти очень легко решается при подключении ее к сигнальному процессору.
Глава 21. Синхронные последовательные порты
В этой главе говорится о двух синхронных последовательных портах, входящих в состав сигнального процессора, об их устройстве, назначении и использовании.
Кроме рассмотренных нами вычислительных и других устройств, сигнальный процессор имеет встроенные коммуникационные средства в виде двух синхронных последовательных портов, называемых SPORT0 и SPORT1. Данные порты поддерживают множество последовательных протоколов обмена данными и, кроме того, обеспечивают прямое соединение процессоров в многопроцессорной системе. Рассмотрим подробнее эти устройства и команды, которыми они управляются.
Каждый SPORT имеет пять интерфейсных линий:
SCLK — тактовый сигнал;
RFS — прием кадровых синхроимпульсов;
TFS — передача кадровых синхроимпульсов;
DR — прием данных;
DT — передача данных.
SPORT1, в отличие от SPORT0, имеет возможность программно переназначать все сигнальные линии, кроме SCLK. Описание выводов последовательных портов сигнального процессора ADSP-2181 приведено в табл. 21.1.
Таблица 21.1 Описание выводов последовательных портов сигнального процессора ADSP-2181
| Сигнал | Направление | Назначение |
|---|---|---|
| DT0 | О | Передача данных |
| TFS0 | I/O | Кадровая синхронизация передачи |
| RFS0 | I/O | Кадровая синхронизация приема |
| DR0 | I | Прием данных |
| SCLK0 | I/O | Программируемый генератор порта 0 |
| DT1/FO | O | Передача данных или выходной флаг |
| TFS1/IRQ1 | I/O | Кадровая синхронизация передачи или внешний запрос прерывания 1 |
| RFS1/IRQ0 | I/O | Кадровая синхронизация приема или внешний запрос прерывания 0 |
| DR1/FI | I | Прием данных или входной флаг |
| SCLK1 | I/O | Программируемый генератор порта 1 |