Частотомер


Частотомер - часть 4


После заполнения регистров индикации программа начинает новый цикл индикации с нулевого разряда.

Как было сказано выше, прерывания по переполнению таймера TMR1 происходят через 0,1 секунду и используются для формирования интервалов времени измерения. Алгоритм работы прерывания показан на рисунке 1.4.

После сохранения значений регистров инкрементируется регистр секунды и включается флаг выполнения измерения. Если регистр секунды еще не равен десяти, то выполняется установка регистров таймера и завершается прерывание. Установка младшего и старшего регистров таймера выполняется так, чтобы время досчитывания таймера TMR1 до нуля машинными циклами равнялось 0,1 секунды.

Если значение регистра секунды равно десяти, то проверяется флаг десяти секунд. Если флаг установлен, значит, включен режим измерения десяти секунд, поэтому обнуляется регистр секунды и инкрементируется регистр десяти секунд. Далее проверяется значение регистра десяти секунд на равенство десяти. Если значение регистра не равно десяти, то программа устанавливает регистры таймера и завершает прерывание. Если флаг десяти секунд не установлен, значит, закончилось время измерения, равное одной секунде, или если закончилось время измерения, равное десяти секундам, программа переходит к закрытию счетного входа. Обнуляются регистры времени измерения, сбрасывается флаг измерения, устанавливаются регистры таймера и прерывание завершается.

Во время счета измеряемой частоты прерывания по переполнению таймера TMR0 (рис. 1.5) возможны с любой точки программы. Если во время прерывания от TMR0 произошло прерывание по переполнению TMR1, то будет выполнено прерывание от TMR1, а после этого будет продолжаться выполнение прерывания от TMR0. Это необходимо для того, чтобы не увеличивать длительность времени измерения, следовательно, и погрешность счета.

Схема частотомера приведена на рис. 2.

Выходы порта В микроконтроллера используются для вывода значений сегментов светодиодов, а выходы порта С – для коммутации катодов разрядов.


- Начало -  - Назад -  - Вперед -