135319 (721861), страница 7
Текст из файла (страница 7)
Бит 3 - CTC1: Очистка таймера счетчика 1 по совпадению: Если бит установлен (1), таймер/счетчик 1 устанавливается в 0000h в такте следующем за событием совпадения. Если бит сброшен, таймер/счетчик 1 продолжает считать, совпадение не отражается на состоянии таймера/счетчика. Поскольку совпадение обнаруживается процессором в цикле следующем
за событием совпадения, в следующем после совпадения такте в счетчик запишется число на 1 большее значения регистра совпадения. При коэффициенте деления 1, установке регистра совпадения на величину С и установленном бите CTC1, таймер принимает следующие значения:
...С-1,С,С+1,0,1...
при делении тактовой частоты на 8:
...С-1,С-1,С-1,С-1,С-1,С-1,С-1,С-1,С,С,С,С,С,С,С,С, С+1,0,0,0,0,0,0,0,0,1...
В режиме ШИМ этот бит не работает.
Биты 2,1,0 - CS12, CS11, CS10: выбор тактирования: Эти биты определяют источник счетных импульсов для таймера/счетчика 1.
Таблица 11. Выбор источника счетных импульсов
CS12 | CS11 | CS10 | Описание |
0 | 0 | 0 | Таймер/счетчик 1 остановлен |
0 | 0 | 1 | CK |
0 | 1 | 0 | CK/8 |
0 | 1 | 1 | CK/64 |
1 | 0 | 0 | CK/256 |
1 | 0 | 1 | CK/1024 |
1 | 1 | 0 | Спадающий фронт на выводе T1 |
1 | 1 | 1 | Нарастающий фронт на выводе T1 |
Условие Stop запрещает/разрешает функционирование таймера/счетчика. В режимах деления используется частота тактового генератора. При использовании работы от внешнего источника предварительно должен быть установлен соответствующий бит регистра направления данных (0 - включает ножку на ввод).
ТАЙМЕР/СЧЕТЧИК 1 - TCNT1H И TCNT1L
TCNT1H
2Dh(4Dh) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
MSB | - | - | - | - | - | - | - | |
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
TCNT1L
2Ch(4Ch) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
LSB | ||||||||
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Это 16-разрядный регистр, содержащий текущее значение таймера/счетчика 1. Чтобы чтение и запись двух байт счетчика происходило синхронно, для работы с ним используется временный регистр (TEMP). Этот вре-
менный регистр также используется при доступе к регистрам OCR1 и ICR1.
Если доступ к регистру с использованием TEMP производится и в основной программе и в обработчике прерывания, на время доступа к регистру из основной программы прерывания должны быть запрещены.
- Запись в таймер счетчик 1: При записи старшего байта в TCNT1H, записываемые данные помещаются в регистр TEMP. Затем, при записи младшего байта, он вместе с данными из TEMP переписывается в таймер/счетчик 1. Таким образом, при записи 16-разрядного значения первым должен записываться байт в TCNT1H.
- Чтение таймера/счетчика 1: При чтении младшего байта из TCNT1L, он посылается в процессор, а данные из TCNT1H переписываются в регистр TEMP, то есть одновременно читаются все 16-разрядов. При последующем чтении регистра TCNT1H, данные берутся из регистра TEMP. То есть при чтении 16-разрядного значения счетчика первым должен читаться регистр TCNT1L.
Таймер/счетчик 1 организован как суммирующий счетчик (в режиме ШИМ - суммирующий/вычитающий) с возможностью чтения и записи. Если задан источник тактовых импульсов для таймера/счетчика 1, после записи в него нового значения, счет продолжается с следующем за операцией записи
периоде тактовой частоты.
РЕГИСТР СОВПАДЕНИЯ ТАЙМЕРА/СЧЕТЧИКА 1 - OCR1H И OCR1L
OCR1H
2Bh(4Bh) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
MSB | ||||||||
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
OCR1L
3Dh(5Dh) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
LSB | ||||||||
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Регистр совпадения 16-разрядный регистр, доступный для чтения и записи. В этом регистре хранятся данные, которые непрерывно сравниваются с текущим значением таймера/счетчика 1. Действие по совпадению задается регистрами управления таймером/счетчиком 1 и регистром состояния. Поскольку регистр OCR1A является 16-разрядным, при записи нового значения в регистр, для того чтобы оба байта регистра записывались одновременно, используется временный регистр (TEMP). При записи старшего байта, данные помещаются во временный регистр, который переписывается в OCR1AH при записи младшего байта в OCR1AL. Таким образом, для записи в регистр первым должен записываться старший байт. Регистр TEMP используется при доступе к TCNT1 и ICR1, поэтому если временный регистр используется в основной программе и в прерываниях, при доступе к TEMP из основной программы прерывания должны запрещаться.
РЕГИСТР ЗАХВАТА ТАЙМЕРА/СЧЕТЧИКА 1 - ICR1H И ICR1L
ICR1H
25h(45h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
MSB | ||||||||
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
ICR1L
24h(44h) | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
LSB | ||||||||
R\W | R\W | R\W | R\W | R\W | R\W | R\W | R\W | |
Начальное значение | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Регистр захвата 16-разрядный регистр доступный только для чтения. По нарастающему или спадающему фронту (в соответствии с выбором фронта импульса захвата ICES1) сигнала на выводе ICP текущее значение таймера/счетчика 1 переписывается в регистр захвата ICR1. В это же время устанавливается флаг захвата ICF1. Поскольку регистр захвата является 16-разрядным, для чтения его значения, чтобы оба байта прочитались одновременно, используется временный регистр. При чтении младшего байта ICR1L, он посылается в ЦПУ, а старший байт регистра ICR1H переписывается во временный регистр (TEMP). При чтении старшего байта, он принимается из временного регистра. Таким образом для чтения 16-разрядного регистра первым должен читаться младший байт. Регистр TEMP используется при доступе к TCNT1 и OCR1, поэтому если временный регистр используется в основной программе и в прерываниях, при доступе к TEMP из основной программы прерывания должны запрещаться.
ТАЙМЕР/СЧЕТЧИК 1 В РЕЖИМЕ ШИМ
При выборе режима широтно-импульсной модуляции (ШИМ), таймер/счетчик 1 и регистр совпадения OCR1A формируют 8, 9 или 10-разрядный непрерывный свободный от "дрожания" и правильный по фазе сигнал, выводимый на ножку PB3(OC1). Таймер/счетчик 1 работает как реверсивный счетчик считающий от 0 до конечного значения (см. табл.10). При достижении конечного значения счетчик начинает считать в обратную сторону до нуля, после чего рабочий цикл повторяется. Когда значение счетчика совпадает с 8, 9 или 10-ю младшими битами регистра OCR1A, вывод PD1(OC1) устанавливается или сбрасывается в соответствии с установками бит COM1A1 и COM1A0 в регистре TCCR1 (см. табл.11).
Таблица 12. Конечное значение таймера и частота ШИМ.
Разрешение ШИМ | Конечное значение таймера | Частота ШИМ |
8 бит | 00FFh (255) | Ftc1/510 |
9 бит | 01FFh (511) | Ftc1/1022 |
10 бит | 03FFh (1023) | Ftc1/2046 |
Таблица 13. Установка режима совпадения при работе ШИМ
COM1A1 | COM1A0 | Влияние на вывод OC1 |
0 | 0 | не подключен |
0 | 1 | не подключен |
1 | 0 | очищается при совпадении, для возрастания счетчика и сбрасывается для уменьшения (неинвертирующий ШИМ) |
1 | 1 | очищается при совпадении, для уменьшения счетчика и сбрасывается для возрастания (инвертирующий ШИМ) |
В режиме ШИМ, при записи в регистр OCR1A, 10 младших бит передаются во временный регистр и переписываются только при достижении таймером/счетчиком конечного значения. При этом устраняется появление несимметричных импульсов (дрожания), которые неизбежны при асинхронной записи OCR1A. Во промежуток времени между записью во временный регистр и переписыванием его в OCR1, при обращении к OCR1 читается содержимое временного регистра. Если OCR1A содержит значение 0000h или конечное значение (TOP), вывод OC1 остается в том состоянии, которое определяется установками COM1A1 и COM1A0. Это показано в табл. 14.
Таблица 14. Выход ШИМ для OCR=0000h или TOP
COM1A1 | COM1A0 | OCR1A | вывод OC1 |
1 1 | 0 0 | 0000h TOP | низкий высокий |
1 1 | 1 1 | 0000h TOP | высокий низкий |
В режиме ШИМ флаг переполнения таймера 1 (TOV1) устанавливается когда счетчик изменяет направление счета в точке 0000h. Прерывание по переполнению таймера 1 работает как при нормальном режиме работы таймера/счетчика, т.е. оно выполняется, если установлен флаг TOV1 и разрешены соответствующие прерывания. То же самое касается флага совпадения и прерывания по совпадению.