Реферат: AVR микроконтроллер AT90S2333 фирмы Atmel
Это 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 и разрешены
соответствующие прерывания. То же самое касается флага совпадения и прерывания
по совпадению.
СТОРОЖЕВОЙ ТАЙМЕР
Сторожевой таймер работает от отдельного
встроенного генератора работающего на частоте 1 MHz (это типовое значение
частоты для питания 5В). Управляя предварительным делителем сторожевого таймера
можно задавать интервал сброса таймера от 16 до 2048 mS. Команда WDR сбрасывает
сторожевой таймер. Для работы сторожевого таймера можно выбрать одно из 8-ми
значений частоты, что позволяет в широких пределах изменять время между
исполнением команды WDR и сбросом процессора. При отработке периода работы
сторожевого таймера, если не поступила команда WDR, AT90S2313 сбрасывается,
выполнение программы продолжается с вектора сброса.
Для предотвращения нежелательного отключения
сторожевого таймера, для его запрещения должна выполняться определенная
последовательность, которая описана при рассмотрении регистра WDTCR.
РЕГИСТР УПРАВЛЕНИЯ СТОРОЖЕВЫМ ТАЙМЕРОМ –
WDTCR
WDTCR
21h(41h)
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
|
|
WDTOE
|
WDE
|
WDP2
|
WDP1
|
WDP0
|
R
|
R
|
R
|
R
|
R\W
|
R\W
|
R\W
|
R\W
|
Начальное значение |
0
|
0
|
0
|
0
|
0
|
0
|
0
|
0
|
Биты 7..5
- зарезервированы. В AT90S2333/4433 эти биты зарезервированы и всегда читаются
как 0.
Бит 4 - WDTOE - разрешение выключения сторожевого таймера. При очистке бита WDE
этот бит должен быть установлен (1). Иначе, работа сторожевого таймера не
прекращается. Через четыре такта после установки этого бита, он аппаратно
сбрасывается.
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17
|