Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МВБА_МК метода.doc
Скачиваний:
83
Добавлен:
13.04.2015
Размер:
1.45 Mб
Скачать

Interrupt [tim1_ovf] void timer1_overflow (void).

Блок сравнения таймера/счетчика Т1 содержит 3 16-разрядных регистра сравнения OCR1A, OCR1B, OCR1C. Во время работы таймера/счетчика в каждом машинном цикле выполняется непрерывное сравнение данных этих регистрах со значением в TCNT1. При равенстве значений этих регистров генерируются прерывания по сравнению (при установленных флагах TOIE1А, TOIE1В, TOIE1С в регистрах TIMSK/ЕTIMSK) и устанавливаются соответствующие флаги OCF1A, OCF1A, OCF1A в регистрах TIFR/ETIFR. Описания заголовков процедур обработки прерываний по сравнению может выглядеть следующим образом:

Interrupt [tim1_compa] void timer1_compareА (void);

Interrupt [tim1_compв] void timer1_compareВ (void);

Interrupt [tim1_compс] void timer1_compareС (void).

В стандартном режиме работы все биты управляющих регистров TCCR1A и TCCR1С устанавливаются в 0 (подробное описание данных регистров приводится в [1]). Формирование тактового сигнала таймера/счетчика осуществляется с помощью предделителя. Результирующая частота fр1 таймера/счетчика Т1 (частота обновления значений в счетном регистре TCNT1, период – Тр1) определяется значениями битов CS00, CS01, CS02 регистра TCCR1B (см. рисунок 4.6), с помощью которого устанавливаются необходимые параметры работы таймера (см. таблицу 4.7). Автоматический сброс счетного регистра TCNT1 при совпадении со значением регистра OCR1A программируется путем установки 3-го бита регистра TCCR1В в 1.

№ бита

7

6

5

4

3

2

1

0

2Eh (4Eh)

FOC0

WGM00

COM01

WGM13

WGM12

CS02

CS01

CS00

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

Описание управляющих битов регистра TCCR1B сходно с описанием битов регистра TCCR0 (см. рисунок 4.5).

Таблица 4.6 – Значения коэффициентов для предварительного делителя частоты таймера/счетчика Т1

CS02

CS01

CS00

Описание

fр1, кГц

Тр1, мкс

0

0

0

Таймер/счетчик остановлен

0

0

0

1

CLK

11000

0,09

0

1

0

CLK/8

1375

0,72

0

1

1

CLK/64

172

5,76

1

0

0

CLK/256

43

23,04

1

0

1

CLK/1024

11,7

92,16

1

1

0

Счет осуществляется по заднему фронту импульсов на линии Т1

_

_

1

1

1

Счет осуществляется по переднему фронту импульсов на линии Т1

_

_

Пример С–программы инициализации таймера–счетчика Т0 для генерирования прерываний по переполнению, работающего в стандартном режиме с частотой CLK/1024 приводится ниже:

ASSR = 0; задание синхронного режима работы;

TCCR0 = 7; задание параметров предделителя;

TIMSK = 1; установка бита TOIE0 для разрешения прерывания по переполнению таймера-счетчика Т0;

#asm("sei"); разрешить прерывания в системе.