Трассировочный чертеж верхней стороны
Трассировочный чертеж нижней стороны
Разработка программного обеспечения
Чтобы с модулем АЦП можно было работать в DOS как с логическим устройством, требуется драйвер. Устанавливаемые драйверы устройств могут быть написаны только на языке ассемблера. Они могут обслуживать два типа устройств: символьные и блочные - в зависимости от того, как устройство обрабатывает данные. Блочные устройства обмениваются блоками данных, поэтому они занимаются накоплением данных. Символьные устройства обмениваются данными побайтно, поэтому они лучше подходят для управляющих
устройств, таких как данный модуль АЦП. Программа драйвера устройства содержит три части:
1) заголовок драйвера, который именует устройство и содержит информацию об остальных частях драйвера,
2) стратегия драйвера, которая хранит информацию об области данных, создаваемой MS DOS, которая называется заголовком запроса,
3) обработчик прерывания устройства, который и содержит код, управляющий устройством (здесь не имеется в виду аппаратное прерывание от устройства).
;режимы:
;1) чтение 1 байта - чтение выборки с ожиданием флага готовности;
;2) чтение 2х байтов - чтение выборки и флага готовности без его ожидания;
;3) чтение более 2х байтов - чтение нескольких выборок с ожиданием флага готовности
; между чтениями;
;4) запись 1 байта (0/1) - выбор канала.
.286
;заголовок драйвера
CSEG SEGMENT PUBLIC 'CODE';устанавливаем кодовый сегмент
ORG 0 ;эта строка необязательна
ASSUME CS:CSEG,DS:CSEG,ES:CSEG
ADC_DRV PROC FAR ;драйвер это далекая процедура
DD 0FFFFFFFFH ;адрес следующего драйвера
DW 8000H ;байт атрибутов
DW DEV_STRATEGY ;адрес процедуры стратегии
DW DEV_INTERRUPT;адрес процедуры прерывания
DB 'ADC ' ;имя устройства (дополненное пробелами)
CHANNEL DW 0 ;номер канала
;стратегия драйвера
DEV_STRATEGY:
MOV CS:KEEP_ES,ES
MOV CS:KEEP_BX,BX
RET
KEEP_ES DW?
KEEP_BX DW?
;обработчик прерывания устройства
DEV_INTERRUPT:
PUSH ES ;сохраняем регистры
PUSH DS
PUSHA
MOV AX,CS:KEEP_ES;ES:BX указывают на заголовок запроса
MOV ES,AX ;
MOV BX,CS:KEEP_BX;
MOV AL,ES:[BX]+2;получаем код команды из заголовка
SHL AL,1 ;умножаем на 2 (т.к. таблица словная)
SUB AH,AH ;обнуляем AH
LEA DI,FUNCTIONS;DI указывает на смещение до таблицы
ADD DI,AX ;добавляем смещение в таблице
JMP WORD PTR [DI];переходим на адрес из таблицы
FUNCTIONS LABEL WORD ;это таблица функций
DW INITIALIZE
DW CHECK_MEDIA
DW MAKE_BPB
DW IOCTL_IN
DW INPUT_DATA
DW NONDESTRUCT_IN
DW INPUT_STATUS
DW CLEAR_INPUT
DW OUTPUT_DATA
DW OUTPUT_VERIFY
DW OUTPUT_STATUS
DW CLEAR_OUTPUT
DW IOCTL_OUT
;---выход из драйвера, если функция не поддерживается
CHECK_MEDIA:
MAKE_BPB:
IOCTL_IN:
NONDESTRUCT_IN:
INPUT_STATUS:
CLEAR_INPUT:
OUTPUT_VERIFY:
OUTPUT_STATUS:
CLEAR_OUTPUT:
IOCTL_OUT:
OR ES:WORD PTR [BX]+3,8103H ;модифицируем статус
JMP QUIT
;---процедуры для поддерживаемых кодов
INITIALIZE:
LEA AX,E_O_P ;смещение конца программы в AX
MOV ES:WORD PTR [BX]+14,AX;помещаем его в заголовок
MOV ES:WORD PTR [BX]+16,CS
JMP QUIT
INPUT_DATA:
MOV CX,ES:[BX]+18 ;получаем число символов
LES DI,ES:[BX]+14 ;получаем адрес буфера данных
PUSH ES
MOV DX,CS:CHANNEL ;выбор канала
CMP CX,1 ;читать 1 байт?
JA INPUT_WORD ;нет - дальше..
INPUT_BYTE:
IN AX,DX
TEST AH,7FH
JZ INPUT_BYTE
MOV ES:[DI],AL
JMP QUIT_INPUT
INPUT_WORD:
CMP CX,2
JA INPUT_BLOCK
IN AX,DX
MOV ES:[DI],AX
JMP QUIT_INPUT
INPUT_BLOCK:
IN AX,DX
TEST AH,7FH
JZ INPUT_BLOCK
MOV ES:[DI],AL
INC DI
LOOP INPUT_BLOCK
QUIT_INPUT:
POP ES
JMP QUIT
OUTPUT_DATA:
PUSH ES
LES DI,ES:[BX]+14 ;получаем адрес буфера данных
MOV AX,ES:[DI]
MOV CS:CHANNEL,AX
POP ES
;---выходим, модифицируя байт статуса в заголовке запроса
QUIT: OR ES:WORD PTR [BX]+3,100H;устанавливаем бит 8
POPA ;восстанавливаем регистры
POP DS
POP ES
RET
E_O_P: ;метка конца программы
ADC_DRV ENDP
CSEG ENDS
END ADC_DRV
Вывод
Был сконструирован блок АЦП со следующими параметрами:
Интерфейс с ЭВМ 286 шина ISA
Разрядность 8 бит
Кол-во каналов 2
Частота выборок 125 кГц.
Защита от перенапряжения по входу при максимально допустимом входном токе 500 мА.
Гальваническая опторазвязка с напряжением пробоя изоляции 2500В
Минимальное входное напряжение 2 мВ.
Коэффициент усиления, изменяемый набором перемычек (максимальный 50000).
Драйвер под DOS.
Масса не более 500г.
Список использованной литературы
1. Ю. В. Новиков, О. А. Калашников, С. Э. Гуляев. Разработка устройств сопряжения для персонального компьютера типа IBM PC. - М.: ЭКОМ, 1998.
2. О. Н. Лебедев, А. И. Мирошниченко, В. А. Телец. Справочник. Изделия электронной техники. Цифровые микросхемы. Микросхемы памяти. Микросхемы ЦАП и АЦП. - М.: Радио и связь, 1994.
3. Г. Р. Аванесян, В. П. Лёвшин. Интегральные микросхемы ТТЛ, ТТЛШ. Справочник. - М.: Машиностроение, 1993.
4. Справочная книга радиолюбителя-конструктора. / Н. И. Чистяков. - М.: Радио и связь, 1993.
5. Роберт Журден. Справочник программиста на персональном компьютере фирмы IBM. - М.: Радио и связь, 1989.