Измеритель временных интервалов

В данной статье было разработано устройство измерения временных интервалов. По заданию временной интервал может лежать в пределах 1мс- 32С.
Дляизмерения временного интервала между двумя событиями, необходимо измеряемыйинтервал «заполнить» импульсами, а затем сосчитать количество импульсов.

Применительнок микроконтроллеру это означает:

- поопределению события, соответествущего началу временного интервала, запустить«генератор», производящий последовательность импульсов  определенной длительности,

-организовать подсчет импульсов данной последовательности,

- пособытию, соответествущего концу временного интервала, остановить «генератор»,

-«выдать» значение количества импульсов в заданные порты,

    -«обнулить» значение счетчика импульсов

 

 

 Функциональная схема измерения временных интервалов 

 

Описание алгоритма работы устройства.

 

 

 
В начале программы перечисляются все вектора прерываний этого процессора, первым прерываниемявляется вектор сброса (rjmp RESET).

В этой подпрограммеинициализируются необходимые периферийные узлы микроконтроллера, а именно:

- порт А настраивается на вывод

- порт С настраивается на вывод

- порт D настраивается на ввод

- настраивается прерывание int1 (прерывание по спаду импульса)

- настраивается прерывание int0 (прерывание по фронту импульса)

- определяется вершина стека

Инициализирующая часть программы заканчивается командой SEI – разрешение работы прерываний

            Далее попрограмме следует основной цикл. В нем производится  «пустая» операция.

По пришествии фронта импульса (на выводе int1(PD3)), генерируется прерывание int1, счетчик команд«уходит» их основного цикла в таблицу векторов прерываний на адрес $0004, там находится команда перехода на обработчик прерывания EXT_INT1.

В подпрограмме обработки прерывания производитсянастройка таймера-счетчика Т0.

Таймеру задается число для сравнения (125), значениепредделителя (8), режим работы (сброс по совпадению). Это означает, что восемьтактов работы процессора значение в счетчике будет увеличиваться. Когда онодостигнет 125, (125*8=1000, при тактовой частоте в 1МГц, период тактовойчастоты достигнет 1 мкс, 1000 мкс - 1мсек) возникнет прерывание по совпадениюТ0. Таким образом, каждую 1мсек, Т0 будет вызывать прерывание. Командой reti, обработчик прерываниязаканчивается, счетчик команд возвращается в основной цикл (туда, где был допрерывания).

            Каждую1мсек  Т0 вызывет прерывание TIM0_COMP. Вэтом прерывании  производится однаоперация – увеличение регистровой пары Z на единицу. На этом прерывание изаканчивается.

 
  По пришествии спада импульса(на выводе int0 (PD2)), генерируется прерывание int0. В этой подпрограммесодержимое индексного регистра Zкопируется в порты (А и С), далее содержимое счетного регистра обнуляется.Следом останавливается таймер-счетчик Т0 (в управляющий регистр счетчиказаносится 0). На этом прерывание заканчивается.
 
 

 Принципиальная электрическая схема

 

Приложение :  проект + схемы