Скачиваний:
14
Добавлен:
01.05.2014
Размер:
187.9 Кб
Скачать

4.Описание регистров устройства.

Устройство имеет два 16-разрядных программно-доступных регистра, которым присвоены следующие условные названия и адреса:

CSR (BASE)...................... регистр команд и состояния

DR (BASE+2)................................ регистр данных

4.1 Регистр csr (base).

Этот регистр доступен как для чтения, так и для записи.

Содержимое регистра CSR при записи определяет команду, передаваемую устройству, при этом регистр имеет следующий формат:

программный старт

разрешение старта от внутреннего таймера

разрешение внешнего старта

выбор регистра данных

выбор канала

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

Режим работы коммутатора каналов

15

разрешение программного прерывания по признаку "ГОТОВНОСТЬ ДАННЫХ"

сброс FIFO

разрешение ПДП

разрешение программного прерывания по признакам "ПЕРЕПОЛНЕНИЕ СС ПДП" или "ПЕРЕПОЛНЕНИЕ FIFO"

Не используется

Автокалибровка

сброс признаков "ПЕРЕПОЛНЕНИЕ СС ПДП"

и “ОШИБКА ЗАПУСКА”

Ниже приводится подробное описание назначения разрядов регистра CSR при записи в него информации.

CSR(0) ( программный старт). Запись 1 в этот разряд вызывает программный запуск устройства на измерение входного напряжения в канале, код которого определяется содержимым CSR(4..7). Регистр CSR не содержит триггера в 0 разряде, поэтому записанное в CSR(0)значение не запоминается. Если запись 1 в CSR(0) происходила во время выполнения предыдущего преобразования, то результат преобразования будет неверным. При этом в устройстве будет установлен признак “ОШИБКА ЗАПУСКА” (CSR(12) при чтении).

CSR(1) (разрешение старта от внутреннего таймера). Запись 1 в этот разряд разрешает, а запись 0 запрещает выдачу выходного сигнала встроенным в устройство таймером. Для правильной работы устройства необходимо, чтобы таймер был предварительно запрограммирован на работу с требуемой частотой. Записанное в данный разряд значение сохраняется в устройстве до следующей записи в регистр CSR. При включении питания этот разряд устанавливается в 0. Запуск устройства сигналом внутреннего таймера осуществляется при соблюдении следующих условий:

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

  • в разряд DR(13) должен быть записан 0 при CSR(3)=1.

Если хотя бы одно из этих условий не соблюдается, запуск устройства не происходит.

Если запуск устройства происходит до окончания предыдущего преобразования (например, при слишком высокой частоте выходного сигнала таймера), в устройстве устанавливается признак “ОШИБКА ЗАПУСКА” (CSR(12) при чтении).

CSR(2) (разрешение внешнего старта). Запись 1 в этот разряд разрешает, а запись 0 запрещает запуск устройства на измерение входного напряжения от внешнего TTL сигнала, поступающего в устройство через контакт 21 разъема X1. Записанное в данный разряд значение сохраняется до следующей записи в регистр CSR. При включении питания этот разряд устанавливается в 0.

CSR(3) (выбор регистра данных). Содержимое этого регистра определяет назначение разрядов регистра DR. Если в этот разряд записан 0, то считываемая из регистра DR информация представляет собой результат измерения входного сигнала, а записываемая в него информация интерпретируется как коэффициент деления частоты внутренним таймером. Если в этот разряд записана 1, то считываемая из регистра DR информация отображает состояние входных TTL сигналов, а записываемая в него информация управляет выходными TTL сигналами а также некоторыми сигналами управления устройством (см. назначение разрядов регистра DR). При включении питания этот разряд устанавливается в 0.

CSR(7..4) (выбор канала). Записываемый в эти разряды код определяет номер канала, сигнал которого подключается для измерения. Этот код сохраняется до следующей записи в регистр CSR. Программисту следует иметь в виду, что после изменения номера канала напряжение на выходе коммутатора каналов устанавливается в наихудшем случае через 10 мкс. Запуск устройства на измерение входного напряжения до истечения этого времени приводит к неверному результату. При включении питания эти разряды устанавливаются в 0. В случае, когда коммутатор при помощи перемычек на плате устройства сконфигурирован на 8 дифференциальных каналов, старший разряд кода номера канала (CSR(7)) игнорируется устройством.

CSR(8) (режим работы коммутатора каналов). При записи в этот разряд 0 коммутатор каналов работает в обычном режиме, когда записанный в разряды CSR(7..4) код определяет номер подключаемого канала. Этот режим устанавливается по умолчанию при включении устройства. При записи в этот разряд 1 коммутатор каналов работает в автоинкрементном режиме. В этом режиме после каждого сигнала запуска устройства на преобразование входного сигнала происходит увеличение номера канала на 1. Значение последнего измеряемого канала определяется содержимым разрядов CSR(7..4). После измерения сигнала в этом канале подключается канал 0 и процесс измерения продолжается.

Для установки начального 0 канала в цикле измерений необходимо записать 1 в DR(12) при CSR(3)= 1. В случае, когда коммутатор при помощи перемычек на плате устройства сконфигурирован на 8 дифференциальных каналов, старший разряд кода номера канала (CSR(7)) игнорируется устройством.

CSR(9) (автокалибровка). При записи в этот разряд единицы в устройстве запускается процедура внутренней автокалибровки АЦП. Эта процедура автоматически запускается при включении питания ПЭВМ (по системному сигналу RESET) и, кроме того, может запускаться программно по мере необходимости. Длительность процедуры автокалибровки около 42мс. Если устройство находится в состоянии автокалибровки, разряд CSR(9) читается нулем. Запись нуля в CSR(9) не влияет на работу устройства

CSR(10) (не используются). Записываемый в этот разряд код не влияет на работу устройства.

CSR(11)(Разрешение программного прерывания по признаку "ГОТОВНОСТЬ ДАННЫХ"). Запись 1 в этот разряд разрешает, а запись 0 запрещает выработку сигнала прерывания программы при установке в 1 признака "ГОТОВНОСТЬ ДАННЫХ". Уровень запроса прерывания определяется перемычками, устанавливаемыми на печатной плате устройства. Записанное в данный разряд значение сохраняется в устройстве до следующей записи в регистр CSR. При включении питания этот разряд устанавливается в 0.

CSR(12) (Разрешение прерывания по признакам "ПЕРЕПОЛНЕНИЕ СС ПДП" или "ПЕРЕПОЛНЕНИЕ FIFO"). Запись 1 в этот разряд разрешает, а запись 0 запрещает выработку сигнала прерывания программы при установке в 1 признаков "ПЕРЕПОЛНЕНИЕ СС ПДП" или "ПЕРЕПОЛНЕНИЕ FIFO". Уровень запроса прерывания определяется перемычками, устанавливаемыми на печатной плате устройства. Записанное в данный разряд значение сохраняется в устройстве до следующей записи в регистр CSR. При включении питания этот разряд устанавливается в 0.

CSR(13) (разрешение ПДП). Запись 1 в этот разряд разрешает, а запись 0 запрещает выдачу устройством запроса прямого доступа в память при установленном в 1 признаке "ГОТОВНОСТЬ ДАННЫХ". Уровень запроса определяется перемычками, устанавливаемыми на печатной плате устройства. Записанное в данный разряд значение сохраняется в устройстве до следующей записи в регистр CSR. При включении питания этот разряд устанавливается в 0.

CSR(14) (сброс FIFO). Запись 1 в этот разряд приводит к сбросу указателей записи и чтения в буферном ОЗУ типа FIFO. При этом происходит сброс в нулевое состояние признака "ГОТОВНОСТЬ ДАННЫХ" (CSR(0)). Данный разряд не содержит триггера, поэтому записанное в него значение не сохраняется. Сброс FIFO является обязательным после того, как в устройстве установился признак "ПЕРЕПОЛНЕНИЕ FIFO" (CSR(14)).

CSR(15) (сброс признаков "ПЕРЕПОЛНЕНИЕ СС ПДП" и ОШИБКА ЗАПУСКА). Запись 1 в этот разряд вызывает сброс в 0 флагов "ПЕРЕПОЛНЕНИЕ СС ПДП" и “ОШИБКА ЗАПУСКА”. Регистр CSR не содержит триггера в этом разряде, поэтому записанное в него значение не запоминается.

Содержимое регистра CSR при чтении определяет состояние устройства. При этом регистр имеет следующий формат:

Признак “ОШИБКА ЗАПУСКА”

Автокалибровка

признак "ГОТОВНОСТЬ ДАННЫХ"

код идентификации устройства

признак "ПЕРЕПОЛНЕНИЕ FIFO"

признак "ПЕРЕПОЛНЕНИЕ СС ПДП"

Признак “ГОТОВНОСТЬ ТАЙМЕРА”

не используются, значение не определено

Ниже приведено назначение разрядов регистра CSR при чтении.

CSR(0) (признак "ГОТОВНОСТЬ ДАННЫХ"). Единичное значение этого разряда означает, что в буфере FIFO устройства содержится хотя бы одно слово данных, которое может быть считано из регистра DR. Сброс признака "ГОТОВНОСТЬ ДАННЫХ" в 0 происходит после чтения последнего слова из буфера FIFO через регистр DR. Кроме того, сброс этого признака может быть выполнен командой сброса FIFO - записью 1 в CSR(14). Переход этого признака из нулевого состояния в единичное при наличии разрешения прерывания, установленного предварительной записью 1 в CSR(11), вызывает запрос прерывания программы.

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

CSR(9) (автокалибровка). Нулевое значение этого разряда при чтении означает, что устройство находится в состоянии автокалибровки.

CSR(12) (признак ОШИБКА ЗАПУСКА”). Единичное значение этого разряда означает, что запуск устройства произошел до окончания предыдущего измерения. В этом случае повторный запуск устройства не происходит, однако, установка такого признака говорит о неправильно выбранных режиме и/или частоте запуска. Сброс этого признака выполняется при записи 1 в CSR(15).

CSR(13) (признак ГОТОВНОСТЬ ТАЙМЕРА”). Единичное значение этого разряда означает, что внутренний таймер устройства выработал выходной сигнал. Этот признак может быть использован для генерации временных меток. Сброс этого признака выполняется при записи 1 в DR(14) при CSR(3)=1. Переход этого признака из нулевого состояния в единичное при наличии разрешения (предварительно установленного записью 1 в DR(15) при CSR(4)=1) вызывает прерывание программы.

CSR(14) (признак "ПЕРЕПОЛНЕНИЕ FIFO"). Единичное значение этого разряда означает возникновение в устройстве переполнения буфера FIFO, возникающее из-за недостаточной скорости обмена информацией между устройством и ПЭВМ, то есть при частоте запуска устройства слишком большой для данной модели ПЭВМ и/или способа обработки результата. В этом случае результат преобразования является недостоверным. Сброс признака "ПЕРЕПОЛНЕНИЕ FIFO" происходит при записи 1 в CSR(14).

CSR(15) (признак "ПЕРЕПОЛНЕНИЕ СС ПДП"). Единичное значение этого разряда означает, что при работе в режиме ПДП от устройства было принято последнее из числа слов, на которое был запрограммирован контроллер ПДП. Переход этого флага из нулевого состояния в единичное при наличии разрешения прерывания, установленного предварительной записью 1 в CSR(12), вызывает запрос прерывания программы. Сброс флага "ПЕРЕПОЛНЕНИЕ СС ПДП" происходит при записи 1 в CSR(15).

4.2 Регистр DR (BASE+2).

Регистр DR доступен как для чтения, так и для записи, однако, вид как считываемой, так и записываемой в него информации определяется в зависимости от состояния CSR(3).

Если в CSR(3) предварительно был записан 0, регистр DR при чтении имеет следующий формат:

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

мантисса кода

код результата преобразования

одержимое регистра управления коммутатором каналов на момент чтения регистра DR

знак

Соответствие измеряемого напряжения и кода результата:

Измеряемое напряжение (В)

Код результата

+Umax

0111111111111111

+Umax-1квант

0111111111111110

+Umax-2кванта

0111111111111101

...

...

+1квант

0000000000000001

0000000000000000

-1квант

1111111111111111

...

...

-Umax+3кванта

1000000000000011

-Umax+3кванта

1000000000000010

-Umax+1квант

1000000000000001

Если CSR(3)=0, то содержимое регистра DR при записи рассматривается как беззнаковое 16-разрядное слово, определяющее период выходного сигнала внутреннего таймера устройства. Этот период Т определяется выражением:

T[мкс]= 1+k, где k - код, записанный в регистр DR.

Если CSR(3)=1, то регистр DR при чтении имеет следующий формат:

Разряды DR(7..0) отображают состояние сигналов TTL уровней, подключаемых на контакты разъема Х1.

Если CSR(3)=1, то регистр DR при записи имеет следующий формат:

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

состояние TTL выходов OUT_0 .. OUT_7

Сброс счетчика каналов

не используются- значение не существенно

Разрешение запуска АЦП от внутреннего таймера

Сброс признака “ГОТОВНОСТЬ ТАЙМЕРА”

Разрешение программного прерывания по признаку “ГОТОВНОСТЬ ТАЙМЕРА”

Разряды DR(7..0) управляют состоянием сигналов TTL уровней, подключаемых на контакты разъема Х1, и могут быть использованы для управления внешней аппаратурой.

DR(12) (сброс счетчика каналов). Запись 1 в этот разряд приводит к сбросу в нулевое состояние счетчика каналов устройства. Это необходимо для установки начального состояния счетчика каналов в режиме автоинкремента номера канала (при CSR(3)=1). Устройство не содержит триггера в данном разряде регистра, поэтому записанное в него значение не сохраняется.

DR(13) (разрешение запуска АЦП от внутреннего таймера). Запись 0 в этот разряд разрешает, а запись 1 запрещает запуск устройства на измерение входного сигнала от внутреннего таймера. При включении устройства в этот разряд записывается 0.

DR(14) (сброс признака ГОТОВНОСТЬ ТАЙМЕРА). Запись 1 в этот разряд

Приводит к сбросу флага “ГОТОВНОСТЬ ТАЙМЕРА”. Устройство не содержит триггера в данном разряде регистра, поэтому записанное в него значение не сохраняется.

DR(15) (разрешение программного прерывания по признаку ГОТОВНОСТЬ ТАЙМЕРА). Запись 1 в этот разряд разрешает, а запись 0 запрещает программное прерывание при переходе признака “ГОТОВНОСТЬ ТАЙМЕРА” из нулевого в единичное состояние. При включении устройства этот признак устанавливается в 0.

Соседние файлы в папке Курсовая работа