Прибор для измерения частоты на базе микроконтроллера MSP430, страница 3

·   Основная, или тело обработчика – непосредственная процедура обработки прерывания (инкрементирование счетчиков, изменение статусных байтов и т.д.).

Такты от запроса на прерывание до первой инструкции обработчика прерываний – 6

Такты на возвращение из обработчика прерываний (RETI) – 5

Итого:            11 тактов

     При включении питания МК, fMCLK по умолчанию выставляется равной 1.048 MHz, т.е. период 1 такта CPU равен 0.95 мкс (в активном режиме). Положим, что на тело обработчика прерываний от Basic Timer необходимо примерно 10 тактов, а для порта Port0 – 30 тактов. Тогда суммарное время обработки прерываний будет равно:

(10 + 11 + 30 + 11) * 0.95 мкс = 58.9 мкс

Очевидно, что для сигналов в частотном диапазоне 10 – 1000 Гц, т.е. с периодом 0.1 – 0.001 с, обработчики прерываний не вызывают потери данных и не вносят погрешностей в измерения.

     Полезно определить, какую часть времени CPU будет работать в активном режиме, и на какую часть времени его можно перевести в режим малого энергопотребления, например LPM3. Рассматриваем худший случай, когда оба входных сигнала имеют частоту 1000 Гц. Basic Timer настроен на частоту 0.5 Гц.

Ucpu = 1 / fMCLK   *   sum (Nint * frep)  ,

где      fMCLK – частота тактирования CPU, Гц

         Nint – количество тактов для обработчика прерываний 

         Frep – частота срабатывания прерывания, Гц

Ucpu = 1 / 1.048 MHz  *  (21 * 0.5  +  41 * 1000)  = 0.0391

Итак, максимальная загрузка процессора составляет 3.91%, т.е. 96.09% времени работы прибора CPU можно перевести в режим малого энергопотребления.

Методическая погрешность – это неотъемлемая часть измерений частоты и вносит самый существенный вклад в общую погрешность измерений. Этот вид погрешности можно минимизировать, выбрав адекватный метод измерения с учетом требуемого диапазона частот и частоты тактирования используемой аппаратной части прибора (в данной работе это микроконтроллер MSP430).

    Частота – количество импульсов или тактов данного сигнала зарегистрированных за 1 секунду. Существует два основных метода измерения частоты:

1.  Обратный способ – измерение периода сигнала T (f=1/T)

2.  Подсчет числа импульсов сигнала в течение известного интервала времени

Проанализируем каждый из этих методов и выберем наиболее оптимальный для нашего прибора.

1 метод. Обратный способ – измерение периода сигнала T (f=1/T)

     Самый простой способ измерить частоту сигнала – это найти его период. Чтобы измерить период, нужно подсчитать, сколько приходится импульсов N некоторого сигнала с известной частотой Fk между двумя последовательными нарастающими или спадающими фронтами измеряемого сигнала. Тогда искомый период T равен:

Tx  =  N / Fk

Оценим погрешность измерений данным методом:

Fk = частота известного сигнала

Fx = измеряемая частота с нулевой погрешностью
Fm= измеренная частота с некоторой погрешностью

Fk должна быть >> Fx.

N = Fk / Fx,  Fk / Fx   +/-  1 

Так как мы не можем контролировать соотношение фаз между измеряемым сигналом и сигналом с известной частотой, то расхождение в счете N может быть +/- 1.

Fm  =  Fk /

Fm  =  Fk / (Fk / Fx   +   1),    Fk  /  (Fk / Fx),   Fk  / (Fk / Fx    -    1)

Упрощаем и получаем: Fm  =  Fk * Fx / (Fk  +  Fx),   Fx,  Fk * Fx / (Fk  -  Fx)

Погрешность будет следующая: error = abs(Fm – Fx) / Fx

Если Fm = Fx, то error = 0.

Если Fm > Fx, то error = Fx / (Fk - Fx).

Если Fm < Fx, то error = Fx / (Fk + Fx).

Итак, error = max ( Fx / (Fk - Fx), Fx /(Fk + Fx)  ) = Fx / (Fk – Fx)

Для Fx = 10 Hz и погрешности не более 0.1%, получаем, что Fk должна быть больше или равна 10010 Hz.

Для Fx = 1000 Hz и погрешности не более 0.1%, получаем, что Fk должна быть больше или равна 1001000 Hz, или чуть больше 1 MHz.

Итак, описанный метод измерения периода достаточно прост в реализации, но имеет очевидные достаточно серьезные недостатки.  Так как нам требуется два параллельных измерительных канала, то нам потребуется два таймера, тактируемых частотой примерно  1 MHz. Микроконтроллеры MSP430 имеют базовый генератор, который тактируется внешним кварцевым резонатором и вырабатывает f ACLK, равную 32768 Hz. Из этого следует, что мы не можем отключить умножитель частоты. Умножитель частоты является самым энергоемким блоком, и также с ростом частоты функционирования возрастает энергопотребление, что приводит к лишним экономическим затратам и поэтому не желательно.