Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 174

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 168 169 170 171 172 173 < 174 > 175 176 177 178 179 180 .. 528 >> Следующая

• контроль за изменением состояния линии ввода МК;
• измерение длительности сигнала заданного логического уровня на линии
ввода МК;
• подсчет числа импульсов внешнего сигнала на заданном временном
интервале;
• формирование на линии вывода МК сигнала заданного логического уровня с
программируемой задержкой по отношению к изменению сигнала на линии
ввода;
• формирование на линии вывода МК импульсного сигнала с программируемой
частотой и программируемым коэффициентом заполнения.
Каждая из перечисленных задач в отдельности может быть выполнена только
программными средствами, без использования специальных аппаратных
решений. Так, для формирования интервала времени следует загрузить в
регистр центрального процессора число, а затем выполнять команду
декрементирования этого регистра до тех пор, пока содержимое регистра не
станет равным нулю. Похожие решения можно предложить и для остальных
перечисленных задач. Однако все эти решения будут обладать общим
недостатком: невозможностью выполнения вычислений одновременно с отсчетом
временного интервала. Поэтому для выполнения функций, связанных с
управлением в реальном времени, в состав МК включают специальные
аппаратные средства, которые называют таймером.
В процессе развития модули таймеров в составе 8-разрядных МК непрерывно
совершенствовались. Рассмотрим принцип действия одного из первых модулей,
который входит в состав МК 8051 АН фирмы "Intel".
300
СТРУКТУРА СОВРЕМЕННЫХ 8-РАЗРЯДНЫХ МИКРОКОНТРОЛЛЕРОВ
Таймер представляет собой 16-разрядный счетчик со схемой управления (рис.
4.7). В карте памяти МК счетчик отображается двумя регистрами: ТН -
старший байт счетчика, TL - младший байт. Регистры доступны для чтения и
для записи. Направление счета счетчика - только прямое, т. е. при
поступлении тактовых импульсов десятичный эквивалент двоичного кода
счетчика изменяется в сторону увеличения. В зависимости от программных
настроек счетчик может использовать один из двух источников тактирования:
1) импульсную последовательность с выхода управляемого делителя частоты f
;
. BUS
2) внешнюю импульсную последовательность, поступающую на один из входов
МК.
В первом случае говорят, что счетчик работает в режиме таймера, во втором
-в режиме счетчика событий. При переполнении счетчика устанавливается
триггер переполнения TF, который генерирует запрос на прерывание, если
прерывания от таймера разрешены. После переполнения работа счетчика
продолжается. Последовательность изменения кодов следующая: $FF, $00, $01
и т. д. Пуск и останов счетчика могут выполняться только под управлением
программы посредством установки/сброса соответствующего бита. Программа
также может установить старший ТН и младший TL байты счетчика в
произвольное состояние или прочитать текущий код счетчика. Однако эти
операции не следует выполнять в процессе счета, так как длительность
операции чтения или записи может превысить длительность периода частоты
тактирования счетчика. Тогда за время чтения одного из байтов второй
успеет измениться. В результате будет прочитана недостоверная информация.
По этой же причине может оказаться ошибочной операция записи. Например,
пользователь записывает в регистры счетчика код $0005: сначала старший
байт $00, а затем младший - $05. Если текущее состояние
Рис. 4.7. Структура модуля таймера-счетчика
301
8-РАЗРЯДНЫЕ МИКРОКОНТРОЛЛЕРЫ
счетчика пользователю неизвестно, то может оказаться, что на момент
завершения операции записи старшего байта младший равен $FF.
Тогда в процессе записи младшего байта старший, ранее записанный, успеет
измениться, и конечный код счетчика будет равен $0105.
Если рассмотренный таймер используется для измерения временного интервала
tM3M (рис. 4.8), то необходимо выполнить следующую последовательность
действий:
1) прервать выполнение текущей программы при изменении сигнала на линии
РТх1 с "0" на "1"; в подпрограмме прерывания установить регистры счетчика
таймера в $0000 и разрешить счет;
2) при изменении сигнала на линии РТх1 с "1" на "0" еще раз прервать
выполнение программы МК; в подпрограмме прерывания остановить счет; код в
регистрах ТН и TL будет равен длительности интервала tM3M, выраженной
числом периодов частоты тактирования счетчика таймера.
Однако такой способ измерения годится для сигналов, длительность которых
составляет единицы мс и более. Моменты разрешения счета таймера t, и его
остановки t2 не совпадают с моментами изменения сигнала на входе РТх1,
так как пуск и останов выполняются в подпрограмме прерывания. Ошибка
счета равна t, -t2. Каждое из значений t, и t2 определяется временем
перехода МК к выполнению подпрограммы прерывания и временем выполнения
некоторого количества инструкций, предшествующих команде разрешения или
останова счета таймера. Вторая величина является систематической ошибкой
и может быть учтена при выполнении дальнейших расчетов, в то время как
первая - время перехода на подпрограмму прерывания - величина случайная,
Предыдущая << 1 .. 168 169 170 171 172 173 < 174 > 175 176 177 178 179 180 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed