Параллельный ввод-вывод данных.
Основной интерфейс между микроконтроллером и внешними устройствами реализуется через параллельные порты ввода-вывода. Во многих микроконтроллерах выводы этих портов служат также для выполнения других функций, например, последовательного или аналогового ввода-вывода. При первом знакомстве с микроконтроллером очень важно понять, как осуществляется параллельный ввод-вывод данных.
В большинстве микроконтроллеров отдельные выводы портов могут быть запрограммированы на ввод или вывод данных. Типичная схема подключения внешнего вывода показана на рис. 2.24. Необходимо обратить особое внимание на то, что при вводе данных считывается значение сигнала, поступающего на внешний вывод, а не содержимое триггера данных. Если к внешнему выводу подключены выходы других устройств, то они могут установить свой уровень выходного сигнала, который будет считан вместо ожидаемого значения данных, записанных в триггер. В некоторых микроконтроллерах существует возможность выбора между чтением данных, установленных на выходе триггера или на внешнем выводе.
Могут возникнуть некоторые проблемы в микроконтроллерах, которые выполняют чтение данных и их запись в регистр порта с помощью одной команды. При этом ввод неправильных данных приведет к их записи в триггер в результате выполнения команды чтения/записи.
Рис. 2.24 - Типовая схема подключения внешнего вывода
Другой распространенный вариант подключения внешнего вывода - это схема с «открытым коллектором» (в действительности с «открытым стоком»), показанная на рис.2.25. Состояние данного вывода соответствует состоянию подключенной к нему шины до тех пор, пока он не будет переключен на работу в режиме выхода и установлен в состояние 0. В этом случае вывод соединен с «землей» через MOS-транзистор, который управляется логической схемой «И», подключенной к выходам триггеров управления и данных.
Рис. 2.25 - Схема подключения вывода с открытым коллектором.
Такое подключение вывода позволяет создавать шины с объединением выходов устройств по схеме «монтажное И». В этой схеме шина подключается к напряжению питания Vdd (логическая 1) через резистор, а к потенциалу «земли» (логический 0) - через несколько ключей или транзисторов. При их включении на шине устанавливается низкий потенциал. Примером применения данной схемы включения является двунаправленная шина с несколькими источниками информации, каждый из которых может передавать данные, переводя шину в состояние с низким потенциалом (логический 0).
Обычный выход (рис. 2.24) функционирует как выход с открытым коллектором. если он работает в режиме ввода и переходит в режим вывода только для выдачи «0». Когда на шину необходимо вывести «0», то сначала «0» записывается в триггер данных, а затем с помощью триггера управления на выходе устанавливается низкий уровень потенциала.
Триггер управления разрешает вывод данных на шину. Как показано на приведенных схемах, в современных микроконтроллерах обеспечивается индивидуальный доступ к триггерам данных и управления с помощью адресной шины. В некоторых более старых типах микроконтроллеров выводы объединяются в группы по 4 или 8 разрядов, которые программируются на совместную работу в качестве входов или выходов. В этом случае при разработке устройств требуется более тщательно планировать работу аппаратного и программного обеспечения, чтобы обеспечить выполнение внешними выводами требуемых функций.
Внешний вход может быть также использован для подачи запроса прерывания. Это обычно реализуется, когда вывод работает в режиме ввода.