Микропроцессоры и микроконтроллеры

 
 
 
«People who think they know everything really annoy those of us who know we don't.»
Bjarne Stroustrup
Русский | Українська


Микропроцессоры и микроконтроллеры :: Микроконтроллерные вычислители :: 9.3 Варианты программной реализации измерения периода импульсов.Часть первая

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 до останова таймера.