Во многих приложениях в процессе работы используются подпрограммы временной задержки. Выполнение заданной задержки — обычная задача для микропроцессора, обладающего скоростью вычислений, которая значительно превосходит скорость протекания многих физических явлений.
Можно привести много примеров использования этой подпрограммы: задание частоты мигания светодиода, счет времени в часах или генерация калиброванных по длительности импульсов для самых различных целей — от запуска серводвигателя и до создания последовательности двоичных слов. При этом можно задавать различные временные промежутки: от нескольких микросекунд до многих часов.
Однако во всех случаях применяется принцип повторения (нередко многократного) одной или нескольких команд, задающих калиброванную базовую задержку. Таким образом, чтобы обеспечить ожидание в течение 20 мс, нужно 20 раз выполнить подпрограмму задержки на 1 мс или 200 раз повторить подпрограмму задержки на 100 мкс.
Многие процессоры содержат на кристалле таймер, обычно построенный на каскадном соединении делителей частоты. На его вход подается сигнал тактовой частоты. Управление таймером может включать разнообразные опции, например установку заданного начального значения, автоматический запуск по сигналу прерывания в конце счета или при подаче внешнего управляющего сигнала и др. Специальные функции таймера предназначены в основном для фиксации отрезков относительно большой длительности и не всегда просты в реализации. Поэтому разработчику часто приходится искать другие способы для осуществления нужных временных задержек.
В этих случаях очень важно иметь точные характеристики микропроцессора, чтобы знать длительность выполнения каждой из команд. Данные величины указываются в виде числа машинных циклов, равных, как правило, части периода тактового генератора. Так, для некоторого цикла в документации может быть указано время:
Теперь следует вставить ее в цикл, который увеличит задержку в нужное число раз. Поскольку речь идет о подпрограмме, продолжительность операций вызова и возвращения должна входить в общую временную задержку, как показано на рис. 4.5.
Команда пор (операция без какого-либо действия) обеспечивает дополнительную задержку (1 мкс) с целью получения нужного результата. Наконец, следует добавить, что для формирования некоторых нестандартных длительностей можно воздействовать на частоту кварцевого тактового генератора, которая лежит в основе всех расчетов времени задержки.
ФОРМИРОВАНИЕ СИГНАЛА СИНХРОНИЗАЦИИ
Иногда для синхронизации операций измерения или счета необходимо использовать внешнее задающее устройство. Обычно опорный сигнал подается на вход прерывания микропроцессора. При этом не всегда нужно выполнять прерывание, иногда можно обойтись операцией простого программного считывания. Достаточно дождаться изменения состояния на входе и убедиться в том, что счетчик в этот момент показывает заданное значение.
Электрическая сеть — довольно точный источник задающего сигнала. При ее использовании обычно удается исключить ошибки считывания, вызываемые внешними помехами. В регулирующих устройствах с широтно-импульсной модуляцией (см.
Принцип запуска схемы синхронизации от сети подобен принципу генерации сигнала установки системы в исходное состояние (см. раздел «
Полученный прямоугольный сигнал подается на вход прерывания (или на другой вход) через резистор ограничения тока. При необходимости этот сигнал можно использовать в качестве опорного для внутреннего таймера.
ОХЛАЖДЕНИЕ АППАРАТУРЫ
Современные микропроцессоры и микроконтроллеры потребляют значительно меньше энергии, чем модели предыдущих поколений.
В некоторых случаях мощность уменьшилась в 50-100 раз. Одновременно с этим можно наблюдать впечатляющий рост возможностей и быстродействия электронных устройств. Тем не менее мощность, рассеиваемая процессором, продолжает оставаться его важной характеристикой. Особенно это касается материнских плат IBM-совместимых компьютеров.