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