RSS

Получение односекундных импульсов на PIC-контроллере с нулевой суммарной погрешностью.

25 Июн
Получение односекундных импульсов на PIC-контроллере с нулевой суммарной погрешностью.

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

Пример кода:

код на языке «microC» для генерации односекундных периодов (кварц 4 мгц, таймер 1 мгц);

// использует одну переменную;

unsigned long bres;

// конфигурирование прерываний

option_reg

OPTION_REG = 0b10001000;

// TMR0 on, 1:1 prescale
// подтягивающие резисторы — откл (1)
// фронт для INT — задний(0)
// тактовый сигнал для TMR0 — внутр.(0)
// фронт для приращения TMR0 — (*)
// включение предделителя — перед WDT (0)
// коэффициент деления предделителя — 1:1 (000)

// ОБРАБОТКА ПРЕРЫВАНИЙ
void interrupt()
{
// прерывание по TMR0:
if (INTCON.T0IF){
// формирование секундных импульсов

// прибавляет 256 отсчётов
bres += 256;

// 1 000 000 если достигнута 1 секунда!

if(bres >= 1000000)
{
// вычитание 1 секунды, сохранение ошибки.
bres -= 1000000;

// здесь производим выполнение ежесекундных действий (не перегружать прерывания!)
}

INTCON.T0IF = 0;
}
// КОНЕЦ ОБРАБОТКИ ПРЕРЫВАНИЙ

При использовании других кварцев необходимо пересчитать коэффициенты. Например для кварца 20 мгц (таймер 5 мгц) подставляем значение
5 000 000.

 

Реклама
 

Метки: , ,

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

w

Connecting to %s

 
%d такие блоггеры, как: