Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Уч. пос. МПТ (2.04.12).pdf
Скачиваний:
404
Добавлен:
22.03.2015
Размер:
10.95 Mб
Скачать

Измерение интервала времени связано еще c одной составляющей погрешности. Микроконтроллер реагирует на логические уровни, не соответствующие серединам фронтов импульсов (раздел 1.9.2). Это неизбежно приведет к систематическому завышению измеряемого интервала времени, если он ограничен разными (нарастающим и спадающим) фронтами. Погрешность тем больше, чем меньше скорость изменения сигнала. При сравнительно высокой скорости изменения (порядка нескольких сотен В/мкс) этот эффект дает аддитивную абсолютную погрешность примерно нс.

Рисунок 3.16.2 – Осциллограмма фронтов импульса длительностью 500 нс

собозначенными точками пересечения логических уровней и 50% амплитуды

Вкачестве иллюстрации приведем подробную осциллограмму фронтов импульса, полученную цифровым осциллографом в стробоскопическом режиме c эффективной частотой квантования 20 ГГц (рисунок 3.16.2). Длительность импульса, определяемая как интервал времени между началом нарастания и началом спада, составляет 500 нс. В то же время длительность импульса по уровню 50% амплитуды равна 503 нс, а интервал между моментами пересечения уровней логической единицы и нуля равен примерно 506 нс. Разность составляет 3,2 нс.

Указанные составляющие погрешности могут в большой степени устраняться введением поправочного множителя и вычитания аддитивного смещения, например для длительности в миллисекундах

snprintf(S,17,"T=%11.5f ms",T/60E3*0.9999-4E-6);

3.17 Измерение частоты с помощью счетчика

3.17.1 Задание

Разработать программу измерения частоты прямоугольных импульсов, поступающих на вход CAP1.3 микроконтроллера.

217

3.17.2 Основные рекомендации

Схема, отражающая принцип способ измерения частоты с помощью двух таймеров-счетчиков, показана на рисунке 3.17.1. Для формирования интервала счета 1 с используется таймер T0TC и устройство сравнения 2. Соответственно, интервал счета задается пороговым регистром T0MR2. Начало и конец интервала обозначаются перепадами логического уровня (инверсией) на выходе MAT0.2.

 

 

CAP1.3

 

 

 

 

u

x

T1TC

T1CR2

 

f

 

 

 

 

 

x

 

 

 

CAP1.2

 

 

 

 

 

 

fPCLK = 60 МГц

T0TC

A

 

 

 

 

 

 

==

0,5 Гц

 

 

 

 

 

 

 

 

 

 

 

0,5 Гц

 

 

 

 

Y

 

 

 

T0MR2

B

 

 

 

 

 

 

 

 

 

 

MAT0.2

 

 

 

 

Рисунок 3.17.1 – Схема измерения частоты с помощью двух таймеров-счетчиков

Тот же сигнал (осциллограмма на рисунке 3.17.2) через внешнее электрическое соединение поступает на стробирующий вход CAP1.2 устройства захвата T1CR2.

На счетный вход CAP1.3 счетчика T1TC поступают импульсы , частоту которых требуется измерить (на рисунке 3.17.2 внизу). Частота определяется как разность текущего и предыдущего захваченного состояния таймера.

Вычисление частоты предлагается выполнять в процедуре обработки прерывания. Прерывание вырабатывается по каждому фронту (нарастающему и спадающему) стробирующего сигнала CAP1.2.

3.17.3 Алгоритм программы

Также как в предыдущей программе, установить тактовую частоту периферийных устройств МГц. Для этого (см. раздел 1.7.1 и рисунок 1.7.1) открыть файл инициализации Startup.s, перейти на вкладку Configuration Wizard; установить флажок VPBDIV Setup и выбрать опцию VPB Clock = CPU Clock.

Директивой #include подключить файлы stdio.h и LCD.c

В программе потребуется объявить следующие глобальные переменные: а) целочисленные OldCAP и NewCAP для хранения текущего и

предыдущего захваченного состояния счетчика;

б) вещественная переменная f, хранящая частоты в герцах;

в) флаг Refresh, равенство единице которого сигнализирует о получении нового результата измерений и необходимости обновления индикатора;

г) строковая переменная S длиной 16 символов для индикации (может быть глобальной или локальной переменной основной программы).

218

Рисунок 3.17.2 – Осциллограммы сигналов при измерении частоты (время счета 1 с; частота сигнала 5 Гц)

Схема процедуры обработки прерываний показана на рисунке 3.17.3.

1.Процедура начинается со считывания последнего захваченного состояния таймера из T1CR2 в переменную NewCAP.

2.Значение частоты в килогерцах вычисляется по очевидной формуле

f=(NewCAP-OldCAP)/1000.0;

3.Заменить предыдущее состояние таймера текущим.

4.Установить в единицу флаг готовности результата Refresh.

Процедура обработки прерывания от таймера

Начало

1

NewCAP = T1CR2

2

f = (NewCAP – OldCAP) / 1000.0

3

OldCAP = NewCAP

4

Refresh = 1

5

Инициализация системы прерываний

Возврат

Основная программа

Начало

1

Выбор режима линий

P0.16, P0.17, P0.18

2

Инициализация

ЖКИ

3

Настройка таймера 0, схемы совпадения, включение таймера 0

4

Настр. таймера 1, схем захвата и совпадения, включение таймера 1

5Настройка системы прерываний

6

Нет

Refresh = 1?

 

 

Да

7

Refresh = 0

8

Формирование

строки для f

9

Вывод строки

Рисунок 3.17.3 – Схема программы частотомера

219