Координация взаимодействия с внешними устройствами
Внешние устройства, как правило, работают асинхронно по отношению к МП. Например, терминал, состоящий из клавиатуры и печатающего устройства, порождает данные при каждом нажатии кнопки и воспринимает данные со скоростью, определяемой конструкцией печатающего механизма. При этом возникает проблема согласования моментов срабатывания внешнего устройства и МП. В противном случае при вводе передача может произойти в тот момент, когда данные еще не готовы, а при выводе – когда предыдущие данные еще не восприняты устройством. Поэтому взаимодействие между внешним устройством и МП должно происходить по определенным правилам, называемыми протоколом взаимодействия.
Процесс передачи данных между МП и УВВ состоит из трех операций:
1. Запуск (инициация) действия в устройстве;
2. Проверка микропроцессором готовности порта;
3. Собственно передача данных.
Существует три метода организации ввода/вывода:
1. Пуск со стороны программы;
2. Пуск со стороны устройства;
3. Общая схема обмена.
Пуск со стороны программы.
При этом методе сигналы запуска посылаются от МП к устройству ввода/вывода в моменты времени, определяемые программой. Устройство реагирует на эти сигналы выдачей очередного слова в порт ввода или приемом слова из порта вывода. После того как пройдет время, достаточное для завершения действия в устройстве (определяется программистом при изучении схемы устройства) программа может снова обращаться к порту.
На рис. 5.4 приведена схема формирования сигналов пуска для МП. Установка триггеров осуществляется теми же сигналами, которые использовались на рис. 5.1 для управления передачей данных между МП и соответствующим регистром порта.
Рис. 5.4. Схема формирования сигналов пуска для МП
Выходной сигнал от каждого триггера поступает в устройство и вызывает в нем выполнение действия, например запуск АЦП на преобразование аналогового сигнала. После завершения действия устройство подает сигнал сброса соответствующего управляющего триггера. Этим обеспечивается выполнение действия в устройстве.
Пуск со стороны устройства.
При этом методе организации ввода/вывода действие в устройстве по поводу каждого акта обмена данными инициируется самим устройством. В этом случае программа должна получать информацию о завершении действия в устройстве и о готовности порта к очередной передаче данных. Для этого служит флаг готовности порта, который устанавливается устройством и периодически опрашивается программой, ожидающей обмена с данным портом.
Для опроса состояния одного или группы устройств устанавливается вспомогательный порт ввода – порт состояний. Разряды, входящие в этот порт, характеризуют те или иные условия, относящиеся к группе устройств, в частности состояния готовности их портов.
Общая схема обмена
Если объединить оба рассмотренных выше метода, то получаем общую схему обмена. В этом случае программа инициирует действие в устройстве, и проверяет готовность порта. На рис. 5.5 совместно с рис.5.1 приведена схема общего интерфейса, включающая порт состояния и порт управления.
Рис. 5.5. Схема порта состояния и порта управления в иллюстративном микропроцессоре
Порт состояния – это порт ввода, через который МП может получить наиболее важную информацию о состоянии устройства. В частности, неготовность вводного порта данных определяется битом 7(Рис.5.5), а неготовность выводного порта данных – битом «0». Оба эти бита поступают с выходов RS-триггеров. В каждом из этих триггеров устанавливается «1» на время выполнения передачи данных между МП и портом, т.е. на время, когда порт занят. Это же состояние сообщает устройству о необходимости выполнить соответствующее действие, то есть выдать новые данные в случае порта ввода или принять данные в случае порта вывода. Завершив действие, устройство сбрасывает соответствующий бит состояния, и это говорит МП о готовности порта. Остальные 6 битов состояния могут характеризовать другие возможные ситуации в устройстве.
Порт управления – это выводной порт, который служит для передачи команд устройству от МП. Две из этих команд соответствуют битам 0 и 7 и называются «активация ввода» и «активация вывода». Назначение этих команд – чтение или запись целого блока данных. Например, при чтении магнитной ленты бит «активация ввода» устанавливается в «1» в начале блока данных и сбрасывается в «0» после того, как под магнитными головками пройдут все слова блока данных.
В устройстве значения этих командных битов объединяются вентилем И с битами неготовности портов (с выходами RS-триггеров) для того, чтобы начать или продолжить выполнение действия в устройстве, связанных с актами передачи данных. Так, например, движение ленты и чтение информации с нее продолжается только, если оба бита «активация ввода» и «неготовность порта» имеют значение «1». Оставшиеся 6 управляющих битов можно использовать для выполнения таких функций, как «перемотка ленты», «пропуск блока», «сброс флагов ошибок» и т.д.
Прерывания программы
Прерыванием программы в микропроцессорной системе называется способность МП прервать выполняемую программу в ответ на внешнее событие и выполнить программу, специально предназначенную для обработки этого события.
Применение прерываний по готовности порта, как правило, удобнее и эффективнее, чем непрерывное опрашивание его состояния. При этом МП освобождается для выполнения других функций.
Прерывание программы напоминает переход на подпрограмму с той разницей, что оно инициируется не командой в программе, а приходом внешнего сигнала по управляющей линии. Этот сигнал называется запросом на прерывание. Так же как и подпрограмма, программа обработки прерывания размещается в памяти, начиная с ячейки, в которую должно подаваться управление.
Обнаружив запрос на прерывание, МП откладывает выполнение текущей программы и начинает выполнять программу прерывания. Программа прерывания обычно заканчивается командой возврата, после которой продолжается выполнение прерванной программы.
МП обладает возможностью запрещать (блокировать) прерывания на какие-то отрезки времени, когда их обработка по тем или иным причинам неудобна. При заблокированных прерываниях поступающие запросы на прерывания игнорируются.
При двух и более запросах на прерывание, поступающих от нескольких устройств возникает проблема идентификации устройства, приславшего запрос, с тем, чтобы можно было выполнить действия по обслуживанию именно этого устройства.
Существует два основных метода устранения этой проблемы.
1. Разрабатывается главная программа обработки прерываний, которая при поступлении запроса проверяет состояние каждого устройства и находит устройство, требующее обслуживание. Такую схему часто называют системой прерываний с программным опросом.
2. Разрабатывается аппаратура которая идентифицирует устройство, приславшее запрос. Такую систему прерываний называют векторной приоритетной системой.
|