Простые внешние устройства
У кошки четыре ноги –
Вход, выход, земля и питание.
По-видимому, самым простым из мыслимых (а также и из используемых) внешних устройств является порт вывода. Такие устройства являются стандартным компонентом большинства микропроцессорных систем. У микропроцессоров первых поколений порты реализовались отдельными микросхемами, у современных микроконтроллеров они обычно интегрированы в один кристалл с процессором.
Порт вывода представляет собой регистр и несколько выходных контактов, называемых на жаргоне микроэлектронщиков "ногами". В литературе входные и выходные контакты микросхем обычно называют просто входами и выходами. Количество выходов порта, как правило, соответствует, и никогда не превосходит количества битов в регистре. Если в бит регистра записан ноль, напряжение на выходе порта будет низким, а если единица, то, соответственно, высоким. Большинство современных микропроцессорных комплектов используют так называемые ТТЛ-совместимые напряжения, когда нулю соответствует напряжение 0 В, а единице – 5 В или, при работе от источника питания с более низким напряжением, напряжение этого самого источника (рис. 9.3).
Рис. 9.3. Принципиальная схема ТТЛ-совместимых выходных каскадов порта вывода (здесь и далее Vss – высокое напряжение питания, Vdd – ноль)
Поскольку и внутри процессора для представления нулей и единиц также используется высокое и низкое напряжение, порт полезен прежде всего тем, что имеет регистр – чтобы удержать напряжение на выходе, процессору достаточно один раз установить значение регистра.
Кроме того, польза от порта состоит в том, что поддержание напряжения на выходе может потребовать пропускания через этот выход тока. Порты современных микроконтроллеров имеют внутреннее сопротивление около 200 Ом и способны без вреда для себя пропустить через вывод ток до 25 мА. Выводы шин адреса и данных микропроцессоров, как правило, рассчитаны на гораздо меньшие токи. Кроме того, порты часто имеют встроенные механизмы защиты от короткого замыкания, статического электричества и т. д.
Применения порта вывода многообразны. Например, к нему можно присоединить светодиод и получить лампочку, миганием которой можно программно управлять (такие диоды часто используются при отладке программ для микроконтроллеров – вместо диагностической печати).
Присоединив к выводу порта динамик, можно издавать различные звуки – впрочем, чтобы получился именно звук, а не одиночный щелчок, центральный процессор должен периодически записывать в соответствующий бит порта то ноль, то единицу. Применяя широтно-импульсную модуляцию (т. е. манипулируя относительными продолжительностями периодов высокого и низкого напряжений) таким способом можно генерировать не только прямоугольный меандр, но и сигналы более сложной формы и, соответственно, звуки различного тембра. Используя переменный период, можно генерировать сигналы с частотой, не кратной тактовой частоте центрального процессора или таймера, применяемого для синхронизации (пример 6.1). Изменяя период сигнала с помощью достаточно сложных алгоритмов, можно даже получать отношение тактовой частоты и частоты сигнала, равное иррациональному числу.
Впрочем, сигналы, порожденные с помощью вышеперечисленных приемов, будут состоять не только из сигнала заданного тембра и частоты, по и из гармоник тактовой частоты. Если последняя частота достаточно высока, с этим можно смириться в надежде на то, что динамик не сможет се воспроизвести, а слушатель – уловить.
Кроме того, к выводу порта можно присоединить внешнюю цифровую, аналоговую или электромеханическую схему (например, шаговый электродвигатель), которая будет выполнять какую-то полезную работу. Таким образом, порт вывода, как правило, не является внешним устройством сам по себе, а служит интерфейсом между микропроцессором и собственно внешним устройством.
Другое столь же простое устройство – это порт ввода. Порт ввода также состоит из регистра и нескольких входных линий, соответствующих битам регистра (рис. 9.4). Бит регистра имеет значение 0, если на вход подано низко6 напряжение (точнее говоря, если во время последнего цикла тактового генератора порта на вход было подано низкое напряжение) и, наоборот, единицу – если высокое.
Рис. 9.4. Порт ввода