9.3 Варианты программной реализации измерения периода импульсов.Часть первая
Варианты программной реализации измерения периода импульсов
3. Измерение периода следования импульсов – один из способов определения их частоты. Такой подход применяют, когда частота импульсов невелика, т.е. для непосредственного измерения частоты путем подсчета импульсов нужен значительный интервал времени (несколько секунд). Принцип измерения периода внешних импульсов ТИ состоит в подсчете синхронных импульсов от эталонного генератора (например, ГТИ МК), которые поместятся в период ТИ. Для такого подсчета используют таймер МК в режиме тайминга, а внешние импульсы (период которых измеряется) определяют моменты фиксации значения от таймера. Два базовых способа реализации такого подхода к измерению периода показаны на рис. 1.3.
Рисунок 1.3 – Иллюстрация способов измерения периода импульсов
Первый способ – внешние импульсы фиксируют как сигналы прерывания (INT0 или INT1), а в процедуре обработки прерывания текущее значение таймера Т0 или Т1 можно “сбрасывать” в регистры для дальнейшей обработки. Как пример представлена программа с использованием прерывания INT0 и таймера T0.
org 0000h
jmp start ; Вектор стартового перехода
org 0003h
jmp pr_INT0 ; Переход на обработку прерывания
org 0030h ; Блок инициализации
start: mov TMOD,#00000001b ; Настройка таймера Т0
mov TL0,#0 ; Обнуление таймера Т0, который считает
mov TH0,#0 ; импульсы от ГТИ
setb IT0 ; Прерывание фиксируется по срезу
mov IE,#10000001b ; Разрешение прерывания от INТ0
. . . ; Другие действия в программе
“int”. . . ; На одной из команд возникает прерывание INT0
. . . ; Другие действия в программе
Pr_INT0: ; Процедура обработки прерывания INТ0
clr TR0 ; Останов таймера Т0
mov R3,TL0 ; Фиксация результата измерения (К)
mov R4,TH0
mov TL0,#0 ; Обнуление таймера Т0, который считает
mov TH0,#0 ; импульсы от ГТИ
setb TR0 ; Запуск таймера Т0
reti ; Возврат в основную программу
Отметим, что первый проход через процедуру Pr_INT0 буде “холостым”, т.к. таймер еще не запущен. Кроме того, для повышения точности нужно учитывать время от появления сигналу INT0 до останова таймера.
|