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

Таблица 3.15.1 – Управление пределом измерения акселерометра

g-Select1 (P0.13)

g-Select2 (P0.14)

Предел измерения,

, В/

0

0

1,5

0,8

0

1

2 (рекомендуемый)

0,6

1

0

4

0,3

1

1

6

0,2

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

,

равное в зависимости от выбранного предела измерения 2,45; 2,25; 1,95 или 1,85 В. На остальных выходах ( и ) будет напряжение нулевого ускорения (1,65 В). Поворот микросхемы на 90º в одной из плоскостей (в положение «на боку») приведет к появлению уровня на другом выходе, а на установится

1,65 В.

3.16 Измерение интервалов времени с помощью таймера

3.16.1 Задание

Разработать программу для измерения длительности прямоугольного импульса напряжения. Диапазон измеряемых длительностей от 10 нс до c. Частота импульсов не более 500 кГц.

3.16.2 Общие рекомендации

Задача решается так, как это рассматривалось в разделе 1.13.6. Источник импульсов подключается одновременно к линиям P0.17 и P0.18, работающим в режиме захвата. Одна из них инициирует захват таймера 1 по нарастающему фронту импульса, другая — по спадающему. Процедура обработки прерывания получает управление по спадающему фронту, вычисляет разность захваченных значений и сохраняет в глобальную переменную T. Индикация запускается из основной программы примерно каждые 0,2 с (интервал формируется таймером 0).

3.16.3 Алгоритм основной программы

В данной программе ключевое влияние на погрешность измерения оказывает частота счетных импульсов таймера. Значение МГц, принимаемое по умолчанию в предыдущих работах, сейчас следует увеличить. Для этого (см. раздел 1.7.1 и рисунок 1.7.1):

а) открыть вкладку файла инициализации Startup.s, перейти на вклад-

ку Configuration Wizard;

б) установить флажок VPBDIV Setup и выбрать опцию VPB Clock = = CPU Clock;

г) убедиться, что в поле PLL Multiplier Selection выбрано значение 5. Потребуется объявить глобальную переменную T целого типа для хранения разности захваченных значений таймера. В основной программе

объявить локальную строковую переменную длиной 16 символов.

214

Процедура обработки

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

 

 

 

прерывания от таймера

Начало

6

 

Нет

 

 

Начало

 

Совпадение 0

 

 

 

 

 

1

 

 

 

1

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

Да

 

 

T=(T1CR2-T1CR3)

P0.17, P0.18

 

 

 

 

 

 

 

7

 

 

2

2

Сброс флага

 

 

 

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

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

совпадения

 

системы прерываний

ЖКИ

 

 

 

 

 

8

 

 

 

3

Формирование строки

 

 

3

 

Возврат

Настройка таймера 0 и

для T/(60·10

)

 

 

схемы совпадения,

 

 

 

 

включение таймера 0

9

 

 

 

Вывод строки

 

 

 

4

 

 

 

 

Настройка таймера 1 и

 

 

 

 

схемы захвата,

 

 

 

 

включение таймера 1

 

 

 

 

5

 

 

 

 

Настройка системы

 

 

 

 

прерываний

 

 

 

Рисунок 3.16.1 – Схема программы измерения длительности импульса

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

1.Перевести портовые лини P0.17, P0.18 в режим CAP1.2 и CAP1.3

(регистр PINSEL1).

2.Инициализация ЖКИ выполняется функцией LCDInit.

3.Таймер 0 используется для формирования интервалов индикации. Необходимо включить сброс таймера по совпадению (T0MCR); настроить схему совпадения (T0MR0) на интервал около 0,2 с (1.13.3); включить таймер 0 (T0TCR).

Внимание! В расчетах пороговых значений TxMRx в данной работе принимать МГц.

4.Таймер 1 используется для измерения длительности импульса. Необходимо включить таймер (T1TCR), затем настроить схему захвата (T1CCR), включив захват по нарастающему фронту сигнала CAP1.3 и по срезу CAP1.2, а также разрешить запрос прерывания по событию CAP1.2.

5.Включается прерывание от таймера 1.

6.Блок 6 обеспечивает выполнение команд, отвечающих за индикацию только по истечении интервала времени (0,2 с), заданного таймером 0. Здесь проверять установку флага совпадения в регистре T0IR.

7.Сбросить флаг совпадения.

8.При выполнении этого блока переменная T хранит число машинных циклов, соответствующее измеренной длительности импульса. Для того чтобы выразить ее в миллисекундах, потребуется поделить T на . Сформировать строку в формате

T=xxxxx.xxxxx ms

можно командой

215

snprintf(S,17,"T=%11.5f ms",T/60E3);

9. Вывод на ЖКИ осуществляется командой

PrintSymbol(S,0x00);

3.16.4 Алгоритм процедуры обработки прерывания

Процедура обработки прерываний содержит всего два блока.

1. Требуется сохранить разность регистров захвата (T1CR2, T1CR3) в глобальную переменную T.

2. Сбросить флаг прерывания в регистре T1IR и обнулить

VICVectAddr.

3.16.5 Повышение разрешающей способности путем усреднения

Для введения усреднения по нескольким измерениям в программу потребуется внести следующие измерения:

а) глобальную переменную T заменить на массив T из 100 элементов; б) объявить глобальный целочисленный счетчик k;

в) в основной программе объявить локальные переменные: целочисленный счетчик i и вещественную переменную tau;

г) в процедуре обработки прерывания сохранять разность регистров захвата в k-ый элемент массива T;

д) там же обеспечить инкремент счетчика k с контролем перехода через предел 99

if (++k>99) k=0;

е) непосредственно перед командой формирования строки выполнить сложение всех элементов массива T с использованием счетчика i:

for (i=0,tau=0;i<100;i++) tau+=T[i];

ж) формировать строку на основе переменной tau, деленной на число измерений (100)

snprintf(S,17,"T=%11.3f us",tau/100.0);

при этом результат выражается в микросекундах.

3.16.6 Введение поправок

Очевидно, что результат измерения интервала времени пропорционален образцовой частоте, которой в данном случае служит собственная частота кварцевого резонатора. Небольшое несоответствие резонансной частоты номинальному значению может быть в основном устранено. Это можно сделать путем непосредственного измерения частоты на контакте XTAL1 с помощью частотомера или цифрового осциллографа. При использовании качественного измерительного щупа работа тактового генератора не прекратится. Если измерить сравнительно высокую частоту (12 МГц) оказывается затруднительно, рекомендуется воспользоваться программой генератора прямоугольного колебания с помощью ШИМ (раздел 3.7) и измерять частоту сигнала на одном из выходов ШИМ. Коэффициент деления можно выбрать так, чтобы было удобно пользоваться имеющимися средствами измерения.

216