Выбор алгоритма взаимодействия с ЭВМ.
Шина ISA предусматривает следующие режимы обмена с подключенными к ней внешними устройствами:
1. обмен с устройством ввода/вывода
2. обмен с памятью
3. прямой доступ к памяти
Вышеперечисленные режимы могут быть синхронными, когда устройство успевает провести обмен за цикл шины, и асинхронными, когда устройство не успевает и выдает сигнал I/O CH RDY для приостановки обмена. 8- и 16-разрядный обмен производится в зависимости от сигнала -I/O CS 16, выдаваемого устройством.
Легче всего реализуем обмен с устройством ввода/вывода, а другие режимы не имеют перед ним существенных преимуществ в данной ситуации. Синхронный обмен в данном случае невозможен, т.к. время преобразования АЦП (7,5 мкс) больше допустимого времени задержки цикла шины сигналом I/O CH RDY (2,5 мкс). Деваться тут некуда - пусть будет асинхронный.
Асинхронные режимы взаимодействия устройства с программным обеспечением:
1. опрос флага готовности
2. прерывания
Прерывания хорошо годятся в случае одиночных выборок, но если чтение будет производиться блоками, обработчик прерываний будет вызываться постоянно, что может существенно замедлить работу системы в целом. Поскольку предпочтительно чтение блоками, выбран опрос флага готовности. Поскольку 8 бит уже заняты данными, выбран 16-разрядный режим обмена, чтобы читать данные и флаг готовности одной операцией чтения.
Итак, алгоритм взаимодействия с ЭВМ:
1. Свой адрес обнаружен на ША (проверяется на спаде BALE).
2. Выдать -I/O CS 16 = 0.
3. Если обнаружен -IOR, выдать данные с АЦП на 0-7 биты и флаг готовности на 15-й бит ШД и снять данные по окончанию -IOR.
4. Снять -I/O CS 16 по отсутствию своего адреса на ША на спаде BALE.
Алгоритм работы программного обеспечения:
1. Выбрать канал чтением одной выборки. Ее нужно будет отбросить.
2. Считать выборку и проверить старший бит. Если там 1, значит преобразование закончено и данные в младшем байте действительны. В противном случае вернуться к п.2.
Данный алгоритм реализован в драйвере блока АЦП. Драйвер с т.з. прикладных программ - устройство, из которого можно считывать данные побайтно тем же способом, что из файлов.
Режимы работы драйвера:
1) чтение 1 байта - чтение выборки с ожиданием флага готовности;
2) чтение 2х байтов - чтение выборки и флага готовности без его ожидания;
3) чтение более 2х байтов - чтение нескольких выборок с ожиданием флага готовности
между чтениями;
4) запись 1 байта (0/1) - выбор канала.