79НИЗКОУРОВНЕВОЕ Описание платы
80 Структурная схема платы
Управление всеми устройствами на плате (АЦП, ЦАП, таймеры, цифровые линии) осуществляется через порты ввода - вывода компьютера. Плата занимает 16 последовательных ячеек в пространстве ввода-вывода компьютера, начиная с базового адреса, установленного на плате с помощью перемычек.
Все обращения к портам платы, кроме чтения кода АЦП и установки кода на ЦАП, являются однобайтными (out dx, al). Чтение кода АЦП и установка кода на ЦАП могут производится как двубайтные (out dx, ax или in ax, dx ).
81Адресное пространство платы
Таблица R . Описание портов ввода - вывода PC
Адрес
порта
|
Направление
|
Описание
|
BASE
|
Чтение
(16-битное)
|
Результат аналого-цифрового преобразования (16 бит)
|
BASE
|
Запись
(16-битная)
|
12-битный код, устанавливаемый на ЦАП (младшие 12 бит)
|
BASE+2
|
Запись
(8-битная)
|
Установка номера канала АЦП, режима подключения каналов, коэффициента усиления
|
BASE+2
|
Чтение
(8-битное)
|
Выходы трёх счётчиков-таймеров и бит готовности
|
BASE+3
|
Чтение
(8-битное
|
Значения 8 бит ТТЛ линий с внешнего разъёма
|
BASE+3
|
Запись
(8-битная)
|
Установка 8 ТТЛ линий на внешнем разъёме
|
BASE+4
|
Запись
(8-битное)
|
Старт аналого-цифрового преобразования
|
BASE+8
|
Чтение/Запись
(8-битное)
|
Программирование таймера A (микросхема 580ВИ53)
|
BASE+9
|
Чтение/Запись
(8-битное)
|
Программирование таймера B (микросхема 580ВИ53)
|
BASE+A
|
Чтение/Запись
(8-битное)
|
Программирование таймера C (микросхема 580ВИ53)
|
BASE+B
|
Запись
(8-битная)
|
Регистр управления таймера 580ВИ53
|
BASE+0xF
|
Запись
(8-битная)
|
Включение / Отключение линии IRQ от шины компьютера (управляется младшим битом записываемого байта)
|
BASE - базовый адрес платы (0x300, 0x310, 0x330 или 0x340).
Структурная схема платы
82Чтение результата АЦП (BASE)
После завершения преобразования АЦП результат можно прочитать по адресу BASE. Формат результата зависит от установленных перемычек формата кода АЦП (см. пункт 1.4.4).
Пример чтения кода с АЦП
mov dx, 300H ; адрес чтение кода с АЦП
in ax, dx ; считаем код с АЦП
83Установка напряжения на ЦАПе (BASE)
На плате установлен один Цифро-Аналоговый Преобразователь, который устанавливает напряжение на линии “Выход ЦАПа” на внешнем разъёме в соответствии с записанным в ЦАП цифровым кодом.
Таблица S. Формат кода ЦАПа
Бит
|
16
|
15
|
14
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
Имя
|
X
|
X
|
X
|
X
|
D12
|
D11
|
D10
|
D9
|
D8
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
Биты D12-D1 являются 12 битным кодом ЦАП
Таблица T. Соответствие 12 - битного кода ЦАПа напряжению
Код
|
Напряжение
|
+4095
|
5.12 Вольт
|
+2048
|
0 Вольт
|
0
|
-5.12 Вольт
|
Пример установки кода на ЦАП
mov dx, 300H ; адрес установки кода на ЦАП
mov ax, 0
out dx, ax ; установим минимальное напряжение
mov ax, 4095
out dx, ax ; установим максимальное напряжение
84Старт АЦП (BASE+4)
Запуск Аналого-Цифрового Преобразования производится программно путем записи любого числа по адресу BASE+4. После запуска АЦП ровно через 1.7 мкс результат преобразования можно будет прочитать по адресу BASE. Для проверки окончания цикла преобразования задействован четвёртый бит в порте статуса. Нулевое состояние этого бита означает окончание преобразования.
Пример
; дадим старт АЦП
mov dx, 304H
out dx, al ; дадим старт преобразования
; подождём бита готовности
jmp $+2 ; надо ждать больше 0.1 мкс
; дождёмся завершения цикла преобразования
mov dx, 302H ; порт с битом готовности
wb_ready: ; ждём нулевого состояния на бите готовности
in al, dx ;
and al, 8 ;
jnz wb_ready ;
; чтение результата АЦП
mov dx, 300H ; адрес чтение кода с АЦП
in ax, dx ; считаем код с АЦП
85Управление коммутатором и усилением (BASE+2)
На плате установлен один АЦП с 32 канальным коммутатором, при помощи которого на вход АЦП подается один из 16 или 32 аналоговых каналов. После переключения номера канала в коммутаторе нельзя сразу давать старт АЦП, необходимо организовать задержку на установление аналогового канала. Эта задержка составляет 4 мкс. Для ускорения процесса многоканального ввода можно переустанавливать номер канала сразу после старта АЦП (после старта в АЦП срабатывает внутреннее УВХ, в котором запоминается аналоговое значение сигнала на момент старта), не дожидаясь завершения преобразования.
Одновременно с номером аналогового канала осуществляется управление коэффициентом усиления и режимом подключения сигналов (т. е. используется 16 - канальный дифференциальный режим или 32 - канальный режим с общей землёй).
Таблица U. Формат номера канала
Бит
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
Имя
|
U2
|
U1
|
M32
|
C5
|
C4
|
C3
|
C2
|
C1
|
При дифференциальном подключении поле M32 должно быть равно 0 (соответственно бит C5 номера канала C5-C1 также должен быть равен нулю). В 32-канальном режиме бит M32 должен быть равен единице, при этом номер канала задаётся всеми битами C5-C1.
Таблица V. Поле "Номер канала" (С4-С1) в дифференциальном режиме
Бит 4
|
Бит 3
|
Бит 2
|
Бит 1
|
номер канала АЦП
|
0
|
0
|
0
|
0
|
1
|
0
|
0
|
0
|
1
|
2
|
0
|
0
|
1
|
0
|
3
|
0
|
0
|
1
|
1
|
4
|
0
|
1
|
0
|
0
|
5
|
0
|
1
|
0
|
1
|
6
|
0
|
1
|
1
|
0
|
7
|
0
|
1
|
1
|
1
|
8
|
1
|
0
|
0
|
0
|
9
|
1
|
0
|
0
|
1
|
10
|
1
|
0
|
1
|
0
|
11
|
1
|
0
|
1
|
1
|
12
|
1
|
1
|
0
|
0
|
13
|
1
|
1
|
0
|
1
|
14
|
1
|
1
|
1
|
0
|
15
|
1
|
1
|
1
|
1
|
16
|
Таблица W. Поле "Коэффициент усиления" (U2-U1)
Бит U2
|
Бит U1
|
усиление
|
1
|
1
|
1
|
0
|
1
|
2
|
1
|
0
|
5
|
0
|
0
|
зарезервирован
|
Пример
; установим первый канал АЦП, включённый в дифференциальном режиме
mov dx, 302H ; адрес порта номера канала
mov al, 0C0H ; первый канал АЦП, усиление=1, диф. режим
out dx, al ; установим параметры каналы АЦП
mov dx, 303H ; в качестве задержки на установление канала
in al, dx ; считаем цифровой порт
; дадим старт АЦП
mov dx, 304H ;
out dx, al ; дадим старт преобразования
; подождём бита готовности
jmp $+2 ; надо ждать больше 0.1 мкс
; дождёмся завершения цикла преобразования
mov dx, 302H ; порт с битом готовности
wb_ready: ; ждём нулевого состояния на бите готовности
in al, dx ;
and al, 8 ;
jnz wb_ready ;
; чтение результата АЦП
mov dx, 300H ; адрес чтение кода с АЦП
in ax, dx ; считаем код с АЦП
86Чтение цифровых ТТЛ линий (BASE+3)
На внешнем разъёме платы имеются 8 цифровых ТТЛ входов, состояние которых может быть прочитано по адресу BASE+3. При каждом чтении цифровых линий генерируется цифровой строб на линии "Строб чтения цифрового порта" на внешнем разъёме платы.
Таблица X. Формат чтения ТТЛ линий
Бит
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
Имя
|
D8
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
D8-D1 соответствуют восьми входным ТТЛ линиям с внешнего разъёма.
Пример чтения ТТЛ линий
mov dx, 303H ; адрес ТТЛ линий
in al, dx ; считаем ТТЛ линии
87Установка цифровых ТТЛ линий (BASE+3)
На внешнем разъёме платы имеются 8 цифровых ТТЛ выходов, состояние которых может быть изменено записью по адресу BASE+3.
Таблица Y. Формат установки ТТЛ линий
Бит
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
Имя
|
D8
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
D8-D1 соответствуют восьми выходным ТТЛ линиям с внешнего разъёма.
Пример установки ТТЛ линий
mov dx, 303H ; адрес ТТЛ линий
mov ax, 0ffH ; установим все единицы на ТТЛ выходах
out dx, al ; установим ТТЛ линии
88Управление таймерами
89Назначение
На плате установлена микросхема 580ВИ53 трёх-канального таймера. При помощи трёх каналов таймера можно осуществлять программную синхронизацию процессов ввода и вывода, генерировать прерывания IRQ в компьютере. Входы разрешения всех каналов таймера всегда равны единице (т. е. разрешено). Канал A тактируется от установленного на плате кварца с частотой 1 МГц. Таймер B каскадно связан с таймером А, что позволяет работать с большими временными интервалами (до 0xFFFF*0xFFFF мкс). Счётный вход таймера C выведен на внешний разъём, что позволяет использовать программную синхронизацию процессов ввода от внешних цифровых сигналов.
Установка режимов таймеров и опрос их текущего состояния достигается при записи соответствующего кода в регистр управления и двойным опросом соответствующего счетчика. Как в режиме записи, так и в режиме чтения, порядок обращения следующий: сначала младший байт, потом старший. В процессе опроса рекомендуем Вам использовать режим защелки, т.е. фиксации данных в буферном регистре таймера. Для этого необходимо установить 0Н для счетчика А, 40Н для счетчика В в порт таймера ( BASE+B).
90Формат регистра режима таймеров
Бит
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
Имя
|
D8
|
D7
|
D6
|
D5
|
D4
|
D3
|
D2
|
D1
|
Номер счётчика (биты D8 и D7):
D8=0, D7=0 -> счётчик A
D8=0, D7=1 -> счётчик B
D8=1, D7=0 -> счётчик C
D8=1, D7=1 -> Стоп.
Тип операции (биты D6 и D5 ):
D6=0, D5=0 -> защёлка
D6=0, D5=1 -> младший байт
D6=1, D5=0 -> старший байт
D6=1, D5=1 -> два байта.
Режимы (биты D4, D3 и D2):
D4=0, D3=0, D2=0 -> программируемая задержка
D4=0, D3=0 , D2=1 -> ждущий мультивибратор
D4=X, D3=1 , D2=0 -> прог. генератор CLR
D4=X, D3=1 , D2=1 -> прог. генератор (меандр)
D4=1, D3=0 , D2=0 -> программируемый строб
D4=1, D3=0 , D2=1 -> аппаратный строб.
Тип кода (бит D1 ):
D0=0 -> двоичный
D0=1 -> двоично-десятичный
Более подробную информацию по программированию микросхемы смотрите в :
Справочник В. А. Шахнова “Микропроцессоры и микропроцессорные комплекты интегральных микросхем” (МОСКВА, Радио и связь, 1988) Том1, 3.3
Фролов, “Библиотека системного программиста”, Том 2, Часть 1
91Опрос состояния таймеров
Опрос состояния счётчиков осуществляется одним из двух способов:
Выходы всех трёх каналов выведены на порт BASE+0x2, поэтому возможно отслеживание состояния соответствующих битов этого порта
Текущее состояние счётчика можно отследить путём опроса соответствующего порта таймера.
Таблица Z. Формат чтения порта BASE+0x2
Бит
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
Имя
|
X
|
X
|
X
|
X
|
D4
|
D3
|
D2
|
D1
|
D4 бит готовности от АЦП
D3 выход третьего канала таймера
D2 выход второго канала таймера
D1 выход первого канала таймера
92Работа с прерываниями (адрес BASE+0xF)
Прерывания IRQ могут генерироваться выходом второго таймера, который каскадно соединён с первым таймером (т. е. интервал между генерируемыми прерываниями равен произведению интервалов, записанных в первый и второй таймеры). Номер генерируемого прерывания устанавливается перемычкой на плате (см. описание перемычек). При включении компьютера генерирование прерываний запрещено.
93Разрешение прерываний (BASE+0xF)
Запись по адресу BASE+0xF единицы приводит к разрешению генерирования прерываний платой.
94Запрещение прерываний (BASE+0xF)
Запись по адресу BASE+0xF нуля приводит к запрещению генерирования прерываний платой (т. е. выход второго таймера будет отключён от линии прерывания компьютера).
|