Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
evm.doc
Скачиваний:
13
Добавлен:
01.05.2025
Размер:
4 Мб
Скачать
☆

13. Ввод-вывод в программном режиме. Порт ввода-вывода.

В информатике, ввод/вывод (в англ. языке часто используется сокращение I/O — input/output) означает взаимодействие между обработчиком информации (например, компьютер) и внешним миром, который может представлять как человек, так и любая другая система обработки информации. Ввод — сигнал или данные, полученные системой, а вывод — сигнал или данные, посланные ею (или из нее). Термин также может использоваться как обозначение (или дополнение к обозначению) определенного действия: «выполнять ввод/вывод» означает выполнение операций ввода или вывода. Устройства ввода-вывода используются человеком (или другой системой) для взаимодействия с компьютером. Например, клавиатуры и мыши — специально разработанные компьютерные устройства ввода, а мониторы и принтеры — компьютерные устройства вывода. Устройства для взаимодействия между компьютерами, как модемы и сетевые карты, обычно служат устройствами ввода и вывода одновременно.

Все порты микроконтроллеров AVR в режиме цифрового ввода—вывода представляют собой полноценные двунаправленные порты, у которых каждый из выводов может работать как в режиме ввода, так и в режиме вывода. Это означает, что каждый отдельный разряд порта может быть настроен либо как вход, либо как выход, независимо от настройки всех остальных разрядов того же порта.

Классификация портов

По типу сигналов различают:

• цифровые порты, использующие на входе и на выходе дискретные логические уровни ВЫСОКИЙ/НИЗКИЙ;

• аналоговые порты, использующие плавно весь диапазон входных/выходных напряжений О…Ксс. В редких случаях, например, в микроконвертерах Analog Devices, допускаются двухполярные входные аналоговые сигналы;

• смешанные порты, которые в процессе работы могут оперативно изменить режим и перейти с «цифры» на «аналог», и наоборот.

По направлению передани сигнала различают:

• входные порты, предназначенные только для ввода информации;

• выходные порты, предназначенные только для вывода информации;

• двунаправленные порты, режим работы которых изменяется с входа на выход в зависимости от инструкций программы;

• порты с переключаемой альтернативной функцией, например, цифровой порт, совмещённый с АЦП, с входом таймера, с UART, ШИМ и т.д.

Назначение программного обеспечения ввода-вывода

Ключевая концепция разработки ПО ввода-вывода — независимость от устройств. Эта концепция означает возможность написания программ, способных получать доступ к любому устройству ввода-вывода без предварительного указания конкретного устройства. Соответственно, программа, читающая данные из входного файла, должна с одинаковым успехом работать с файлом на CD, HDD, Floppy, причем без каких-либо изменений в программе. Например, должна быть возможность выполнить команду вроде sort < input > output

Эта команда должна работать невзирая на то, что именно указано в качестве входного устройства.

Тесно связан с идеей независимости от устройств принцип единообразного именования. Имя файла или устройства должно быть просто текстовой строкой и никоим образом не зависеть от физического устройства.

Другим не менее важным аспектом программного обеспечения ввода-вывода является обработка ошибок. Ошибки должны обрабатываться как можно ближе к аппаратуре. Если контроллер обнаружил ошибку чтения, он должен по возможности исправить эту ошибку сам. Если он не в силах этого сделать, тогда ошибку обязан обработать драйвер устройства, например, попытавшись прочитать блок еще раз.

Программное обеспечение ааода-вывода разбивается на 4 уровня:

Обработчики прерываний.

Драйверы устройств.

Независимый от аппаратуры код ОС.

Пользовательские программы.

Методы управления вводом/выводом

В ВМ находят применение три способа организации ввода/вывода (В/ВЫВ):

  • программно управляемый ввод/вывод;

  •  ввод/вывод по прерываниям;

  • прямой доступ к памяти.

При программно управляемом вводе/выводе все связанные с этим действия про­исходят по инициативе центрального процессора и под его полным контролем. ЦП 3 выполняет программу, которая обеспечивает прямое управление процессом вво­да/вывода, включая проверку состояния устройства, выдачу команд ввода или вывода. Выдав в МВВ команду, центральный процессор должен ожидать заверше­ния ее выполнения, и, поскольку ЦП работает быстрее, чем МВВ, это приводит к потере времени.

Ввод/вывод по прерываниям во многом совпадает с программно управляемым методом. Отличие состоит в том, что после выдачи команды ввода/вывода ЦП не должен циклически опрашивать МВВ для выяснения состояния устройства. Вме­сто этого процессор может продолжать выполнение других команд до тех пор, пока не получит запрос прерывания от МВВ, извещающий о завершении выполнения ранее выданной команды В/ВЫВ. Как и при программно управляемом В/ВЫВ, ЦП отвечает за извлечения данных из памяти (при выводе) и записи данных в память (при вводе).

Повышение как скорости В/ВЫВ, так и эффективности использования ЦП обеспечивает третий способ В/ВЫВ — прямой 'доступ к памяти (ПДП). В этом режиме основная память и модуль ввода/вывода обмениваются информацией на­прямую, минуя процессор.

Программно управляемый ввод/вывод

Наиболее простым методом управления вводом/выводом является программно управляемый ввод/вывод, часто называемый также вводом /выводом с опросом. Здесь ввод/вывод происходит под полным контролем центрального процессора и реа­лизуется специальной процедурой ввода/вывода. В этой процедуре ЦП с помощью команды ввода/вывода сообщает модулю ввода/вывода, а через него и внешнему устройству о предстоящей операции. Адрес модуля и ВУ, к которому производит­ся обращение, указывается в адресной части команды ввода или вывода. Модуль исполняет затребованное действие, после чего устанавливает в единицу соответ­ствующий бит в своем регистре состояния. Ничего другого, чтобы уведомить ЦП, модуль не предпринимает. Следовательно, для определения момента за­вершения операции или пересылки очередного элемента блока данных про­цессор должен периодически опрашивать и анализировать содержимое регис­тра состояния МВБ.

Иллюстрация процедуры программно управляемого ввода блока данных с уст­ройства ввода приведена на рис. 8.6. Данные читаются пословно. Для каждого читаемого слова ЦП должен оставаться в цикле проверки, пока не определит, что слово находится в регистре данных МВБ, то есть доступно для считывания.

Процедура начинается с выдачи процессором команды ввода, в которой указан адрес конкретного МВБ и конкретного ВУ. Существуют четыре типа команд В/ВЫВ, которые может получить МВБ: управление, проверка, чтение и за­пись.

Команды управления используются для активизации ВУ и указания требуемой операции. Например, в устройство памяти на магнитной ленте может быть выдана команда перемотки или продвижения на одну запись. Для каждого типа ВУ харак­терны специфичные для него команды управления.

Команда проверки применяется для проверки различных ситуаций, возникаю­щих в МВБ и ВУ в процессе ввода/вывода. С помощью таких команд ЦП спосо­бен выяснить, включено ли ВУ, готово ли оно к работе, завершена ли последняя операция ввода/вывода и не возникли ли в ходе ее выполнения какие-либо ошибки. Действие команды сводится к установке или сбросу соответствующих разрядов регистра состояния МВБ.

Команда чтения побуждает модуль получить элемент данных из ВУ и занести его в регистр данных (РД). ЦП может получить этот элемент данных, запросив МВБ поместить его на шину данных.

Команда записи заставляет модуль принять элемент данных (байт или слово) с шины данных и переслать его в РД с последующей передачей в ВУ.

 

Рис. 8.6. Программно управляемый ввод данных

 

Если к МВБ подключено несколько ВУ, то в процедуре ввода/вывода нужно производить циклический опрос всех устройств, с которыми в данный момент up-. -изводятся операции В/ВЫВ.

Из блок-схемы (см. рис. 8.6) явно виден основной недостаток программно управляемого В/ВЫВ — неэффективное использование процессора из-за ожидания готовности очередной порции информации, в течение которого никаких иных по­лезных действий ЦП не выполняет. Кроме того, пересылка даже одного слова тре­бует выполнения нескольких команд. ЦП должен тратить время на анализ битов состояния МВБ, запись в МВБ битов управления, чтение или запись данных со скоростью, определяемой внешним устройством. Все это также отрицательно ска­зывается на эффективности ввода/вывода.

Главным аргументом в пользу программно управляемого ввода/вывода является простота МВБ, поскольку основные функции по управлению В/ВЫВ берет на себя процессор. При одновременной работе с несколькими ВУ приоритет уст­ройств легко изменить программными средствами (последовательностью опроса). Наконец, подключение к СВВ новых внешних устройств или отключение ранее подключенных также реализуется без особых сложностей.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]