Курсовая работа: Устройство управления системой измерения веса

TCNT1 - данный регистр служит для загрузки и считывания показаний счетчика/таймера.

15 14 13 12 11 10 9 8
MSB
LSB
7 6 5 4 3 2 1 0

Рис. 3.8 – регистр текущего значения счетчика TCNT1

TCCR1B – регистр управления таймером/счетчиком1

7 6 5 4 3 2 1 0
ICNC1 ICES1 - WGM13 WGM2 CS12 CS11 CS10
R/W R/W R/W R/W R/W R/W R/W R/W

Рис. 3.9 – Регистр управления таймером/счетчиком1 TCCR1B

Биты 2, 1, 0 – выбор коэффициента деления предварительного делителя.

CS02 CS01 CS00 Значение
0 0 0 Стоп
0 0 1 СК
0 1 0 СК/8
0 1 1 СК/64
1 0 0 СК/256
1 0 1 СК/1024
1 1 0 Вн. Сигнал Т1, нар. фронт
1 1 1 Вн. Сигнал Т1, спад. фронт

Рис. 3.10–Выбор коэффициента деления предварительного делителя.

Инициализация таймера/счетчика1 происходит только при вызове функции Time wate (), которая устанавливается делитель частоты на 1024, путем записи значения PrescalerTmr1= 5 в регистр TCCR1B.

OCR1A – регистр совпадения А таймера/счетчика1. В этом регистре хранятся данные, которые непрерывно сравниваются с текущим значением таймера/счетчика1. Действие по совпадению задается регистрами управления таймером/счетчиком1 и регистром состояния.

15 14 13 12 11 10 9 8
MSB
LSB
7 6 5 4 3 2 1 0

Рис. 3.11 - регистр совпадения А таймера/счетчика1 OCR1A

Рассчитаем значение, которое необходимо занести в OCR1A для сравнения с содержимым таймера/счетчика1.

Количество тактовых импульсов, которые приходят на таймер/счетчик1 за 1 секунду, рассчитывается по формуле:

, где

К – значение делителя частоты

f – значение частоты генератора

Выбираем значение делителя частоты 1024, т.к. это максимально возможный коэффициент деления/задержки. Частота генератора задается путем подключения кварцевого резонатора к соответствующим выводам контроллера. В данном случае был выбран кварц на 7, 3728*106 Гц.

Т.к. необходима выдержка в 5 секунд то:

7200*5=36000

Т.к. прерывание по совпадению таймера/счетчика1 происходит только на следующий такт после совпадения, необходимо от значения 36000 вычесть 1. Это значение присваивается переменной comp_t1=35999, которая заносится в OCR1A.

voidTime_wate(void)

{#asm("cli")

TCCR1B = PrescalerTmr1;

OCR1A = comp_t1;

#asm("sei")

while (Tmr1Flag == 0)

}

3.3 Процедура обработки нажатия кнопки Пуск

Процедура обработки нажатия кнопки Пуск, вызывается при переполнении таймера/счетчика0. Использование таймера для проверки состояния порта через заданные интервалы времени является некоторой защитой от импульсных помех. Еще более повысить устойчивость приема сигнала от датчика импульсов в условиях помех можно за счет использования мажоритарного элемента. Если известно текущее состояние входного сигнала и два его предшествующих состояния, то значение сигнала определяется по следующему принципу:

OldOldPortSignal OldPortSignal NewPortSignal RealSignal Comment
0 0 0 0 НОЛЬ!
0 0 1 0 Кажется, ноль
0 1 0 0 Кажется, ноль
0 1 1 1 Кажется, единица
1 0 0 0 Кажется, ноль
1 0 1 1 Кажется, единица
1 1 0 1 Кажется, единица
1 1 1 1 ЕДИНИЦА!

void CheckButton (void)

К-во Просмотров: 527
Бесплатно скачать Курсовая работа: Устройство управления системой измерения веса