Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[31]

необходимо выполнить соответствующие установки в регистре управления направлением (очистка переводит вывод в режим входа).

Таблица 17. Выбор источника тактового сигнала таймера/счетчика!

CS12

CS11

CS10

Описание

0

0

0

Stop условие - таймер/счетчик! остановлен.

0

0

!

CK

0

!

0

CK / 8

0

!

!

CK / 6 4

!

0

0

CK / 256

!

0

!

CK / 1024

!

!

0

Внешний тактирующий сигнал на выводе T1, нарастающий фронт

!

!

!

Внешний тактирующий сигнал на выводе T1, падающий фронт.

ТАЙМЕР/СЧЕТЧИК1 - TCNT1H и TCNT1L

Биты15 14 13 12 !! 10 9 8

$2D ($4D) $2C ($4C)

MSB

LCB

7 6 5 4 3 2 10 Чтение/ЗаписьR/W R/W R/W R/W R/W R/W R/W R/W

R/W R/W R/W R/W R/W R/W R/W R/W Начальное состояние 00000000

00000000

16-разрядный регистр содержит текущее значение 16-разрядного таймера/ счетчика1. С тем, чтобы CPU могло считывать/записывать и старший и младший байты этого регистра одновременно, обращение реализовано посредством 8-разрядного регистра временного хранения(ТЕМР). Этот регистр используется также при обращении к OCR1A, OCR1B и ICR1. Если основная программа и подпрограммы обработки прерываний используют обращение к регистрам посредством TEMP, то прерывания должны быть запрещены на время обращения из основной программы

•Запись в таймер/счетчик1 - TCNT1

Когда CPU производит запись в старший байт (TCNT1H) записываемые данные размещаются в регистре TEMP. Затем, когда CPU производит запись в младший байт (TCNT1L) данные младшего байта объединяются с байтом данных регистра TEMP и все 16 битов одновременно переписываются в регистр таймера/счетчика TCNT1. Следовательно, при 16-разрядных операциях обращение к старшему байту (TCNT1H) должно выполняться первым. При использовании таймера/ счетчика1 в качестве 8-разрядного таймера достаточно производить запись только младшего байта.

•Чтение таймера/счетчика1 - TCNT1

Когда CPU считывает младший байт (TCNT1L), то содержимое TCNT1L направляются непосредственно в CPU, содержимое старшего байта (TCNT1H) размещается в регистре TEMP и при считывании CPU старшего байта (TCNT1H) его содержимое CPU принимает из регистра TEMP. Следовательно, при 16-разрядных операциях первым должно выполняться обращение к младшему байту (TCNT1L). При


РЕГИСТРА СРАВНЕНИЯ A ВЫХОДА ТАЙМЕРА/СЧЕТЧИКА1 -OCR1AH и OCR1AL - (Timer/Counter! Output Compare Register)

Биты

$2B ($4B) $2A ($4A)

Чтение/Запись

Начальное состояние

15

14

13

12

11

10

MSB

OCR1AH OCR1AL

LSB

76543210 R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W 00000000 00000000

9

8

РЕГИСТРЫ СРАВНЕНИЯ B ВЫХОДА ТАЙМЕРА/СЧЕТЧИКА1 - OCR1BH и OCR1BL - (Timer/Counter1 Output Compare Register)

Биты15 14 13 12 11 10 9 8

OCR1BH OCR1BL

76543210 Чтение/Запись R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W

Начальное состояние 00000000

00000000

$29 ($49) $28 ($48)

MSB

LSB

16-разрядные регистры сравнения выхода обеспечивают и чтение и запись.

Регистры сравнения выхода таймера/счетчика1 хранят данные постоянно сравниваемые с состоянием таймера/счетчика1. Действие, запускаемое совпадением при сравнении определяется содержимым регистра управления и состояния таймера/ счетчика1. Совпадение при сравнении может произойти только если таймер/счетчик1 досчитает до значения содержимого OCR. Если в TCNT1 и OCR1A или OCR1B программно будут записаны одинаковые значения, то значения, то совпадение при сравнении сгенерировано не будет.

Совпадение при сравнении устанавливает флаг прерывания по совпадению в тактовом цикле CPU следующем за самим совпадением.

Поскольку регистры сравнения выхода OCR1A и OCR1B являются 16-разрядными, то для обеспечения одновременного занесения старшего и младшего байтов данных в регистры OCR1A/B используется регистр временного хранения TEMP. Когда CPU записывает старший байт, то данные временно сохраняются в регистре TEMP. Когда же CPU записывает младший байт в OCR1AL или OCR1BL, то одновременно содержимое регистра OCR1BH переписывается в OCR1AH или OCR1BH. Следовательно, при 16-разрядных операциях старшие байты регистров OCR1A/B должны записываться первыми.

использовании таймера/счетчика1 в качестве 8-разрядного таймера достаточно

производить запись только младшего байта. Таймер/счетчик1 выполнен в виде счетчика с нарастанием или реверсивного счетчика (в ШИМ режиме) и возможностью чтения/записи. Если в таймер/счетчик1 занесено некоторое значение и выбран источник тактового сигнала, то таймер/счетчик1 продолжит отсчет через один тактовый цикл после установки в нем записанного значения.


Кроме того, регистр TEMP используется при обращении к TCNT1 и ICR1. Если основная программа и подпрограммы обработки прерываний, используют обращение к регистрам посредством TEMP, то прерывания должны быть запрещены на время обращения из основной программы.

РЕГИСТР ЗАХВАТА ВХОДА ТАЙМЕРА/СЧЕТЧИКА1 -ICR1H и ICR1L - (Timer/Counter1 Input Capture Register)

Чтение/Запись

Биты

15

14

13

12

11

10

9

8

$27 ($47)

MSB

$26 ($46)

LSB

76543210 RRRRRRRR RRRRRRRR

Начальное состояние 00000000

00000000

ICR1H ICR1L

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

При обнаружении на выводе захвата входа PD4(IC1) нарастающего или падающего фронта сигнала (определяемого установкой ICES1) текущее состояние таймера/счетчика1 пересылается в регистр захвата входа ICR1. Одновременно устанавливается в состояние 1 флаг захвата входа ICF1.

Поскольку регистр захвата входа является 16-разрядным, то для обеспечения одновременного чтения старшего и младшего байтов данных регистра ICR1 используется регистр временного хранения TEMP. При считывании CPU данных младшего байта содержимое ICR1L пересылается в CPU, а содержимое старшего байта ICR1H размещается в регистре TEMP, чтение старшего байта заключается в переносе в CPU содержимого регистра временного хранения TEMP. Следовательно, при чтении всего 16-разрядного регистра операцию чтения необходимо начинать с младшего байта ICR1L. Регистр TEMP используется также при обращении к TCNT1, OCR1A и OCR1B. Если основная программа и подпрограммы обработки прерываний, используют обращение к регистрам посредством TEMP, то прерывания должны быть запрещены на время обращения из основной программы.

ТАЙМЕР/СЧЕТЧИК1 в ШИМ РЕЖИМЕ

При установленном ШИМ режиме таймер/счетчик1 и регистры сравнения выхода A и B (OCR1A и OCR1B), образуют сдвоенный 8, 9 или 10-разрядный автономный генератор ШИМ с правильным чередованием фаз, отсутствием ложных выбросов и выходами на выводы PD5(OC1A) и OC1B. Таймер/счетчик1 работает как реверсивный счетчик, считающий от $0000 до TOP (см. таблицу 18), при котором направление счета меняется и отсчет ведется до нуля, после чего цикл повторяется. Когда состояние счетчика совпадет с содержимым 10 младших битов OCR1A или OCR1B, выводы PD5(OC1A)/ OC1B устанавливаются или очищаются, в соответствии с установками битов COM1A1/ COM1A0 или COM1B1/COM1B0 в регистре управления таймером/счетчиком1 TCCR1A. Подробности см. в таблице 19.



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5] [стр.6] [стр.7] [стр.8] [стр.9] [стр.10] [стр.11] [стр.12] [стр.13] [стр.14] [стр.15] [стр.16] [стр.17] [стр.18] [стр.19] [стр.20] [стр.21] [стр.22] [стр.23] [стр.24] [стр.25] [стр.26] [стр.27] [стр.28] [стр.29] [стр.30] [стр.31] [стр.32] [стр.33] [стр.34] [стр.35] [стр.36] [стр.37] [стр.38] [стр.39] [стр.40] [стр.41] [стр.42] [стр.43] [стр.44] [стр.45] [стр.46] [стр.47] [стр.48] [стр.49] [стр.50] [стр.51]