ATMEL |
|
|
|
|
|
|
|
|
|
ÊÒÖ-ÌÊ |
РЕГИСТР САВНЕНИЯ ВЫХОДА ТАЙМЕРА/СЧЕТЧИКА0 - |
|
|
||||||||
OCR0 - (Timer/Counter0 Output Compare Register) |
|
|
|
|||||||
Áèòû |
7 |
6 |
5 |
4 |
3 |
2 |
|
1 |
0 |
|
$31 ($51) |
MSB |
|
|
|
|
|
|
|
LSB |
OCR0 |
Чтение/Запись |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
|
Начальное состояние |
0 |
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
|
РЕГИСТР СРАВНЕНИЯ ВЫХОДА ТАЙМЕРА/СЧЕТЧИКА2 - |
|
|
|
|||||||
OCR2 - (Timer/Counter2 Output Compare Register) |
|
|
|
|||||||
Áèòû |
7 |
6 |
5 |
4 |
3 |
2 |
|
1 |
0 |
|
$23 ($43) |
MSB |
|
|
|
|
|
|
|
LSB |
OCR2 |
Чтение/Запись |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
R/W |
|
|
Начальное состояние |
0 |
0 |
0 |
0 |
0 |
0 |
|
0 |
0 |
|
Регистры сравнения выходов являются 8-разрядными регистр ами с возможностью чтения/записи. Выполнение процедуры сравнения определяе тся регистрами TCCR0 и TCCR2. Совпадение при сравнении произойдет только тогда, когд а таймер/счетчик досчитает до значения содержимого OCR. Программная запись о дного и того же значения в таймер/счетчик и в регистр сравнения выхода не приведет к формированию совпадения при сравнении.
Совпадение при сравнении приведет к установке флага прер ывания по совпадению в течение тактового цикла CPU следующего за совп адением. Необходимо принимать меры предосторожности при работе таймера/счет чика0 в асинхронном режиме, т.е. устанавливать в состояние 1 бит AC0 в регистре ASSR. Пр и записи в регистр OCR0 значение, пересылается в регистр по TCK0 такту, след ующему за операцией записи.
ТАЙМЕРЫ/СЧЕТЧИКИ 0 и 2 в ШИМ РЕЖИМЕ -
Timer/Counter 0 and 2 in PWM mode
При установленном ШИМ режиме таймер/счетчик и регистр сра внения выхода (OCR0 или OCR2) формируют 8-разрядный, без ложных выбросов и с прав ильной фазой ШИМ сигнал с выходом через PB4(OC0/PWM0) или PB7(OC2/PWM2) выводы. Таймер/ счетчик работает как реверсивный счетчик, считающий от $00 д о $FF, после чего он считает в обратную сторону до нуля и только после этого на чинает новый цикл. Когда состояние счетчика совпадает с содержимым регистра срав нения выхода выводы PB4(OC0/PWM0) или PB7(OC2/PWM2) устанавливаются или очищаются, в соответств ии с установленными, в регистрах управления таймерами/счетч иками TCCR0 и TCCR2, битами COM01/COM00 или COM21/COM20. См. таблицу 13.
ÂШИМ режиме при записи содержимое регистра сравнения вых ода пересылается на временное хранение. Содержимое фиксируе тся при достижении таймером/счетчиком состояния $FF. Такой прием предохраняет от появления ШИМ импульсов увеличенной ширины (ложных выбросов) в случае н есинхронной записи OCR0 или OCR2. Пример см. на рис.34.
Âпромежуток времени между операциями записи и фиксации с читывание из OCR0 или OCR2 приведет к считыванию из места временного хранени я. Это означает, что чаще всего при чтении значения уставки считывание буд ет производиться из OCR0/
2.При состоянии регистра OCR $00 или $FF выход ШИМ будет удерживат ься
9 4
ÊÒÖ-ÌÊ
Таблица 13. Выбор режима сравнения в ШИМ режиме
COMn1 |
COMn0 |
Эффект, оказываемый на вывод Compare/PWM |
|
|
|
0 |
0 |
Не подсоединен |
0 |
1 |
Не подсоединен |
1 |
0 |
Очистка при совпадении, счет по нарастанию. Установка при совпадении, |
|
|
счет по убыванию (неинвертирующий ШИМ). |
1 |
1 |
Очистка при совпадении, счет по убыванию. Установка при совпадении, счет |
|
|
по нарастанию (инвертирующий ШИМ). |
Примечания: n = 0 или 2
íà низком или высоком уровне, в зависимости от установок COM21/COM20 или COM11/COM10. См. таблицу 14.
В ШИМ режиме флаг переполнения таймера (TOV0 или TOV2) устанавли вается при смене направления счета при $00. Прерывания по переполне нию таймеров 0 и 2 работают так же, как и в нормальном режиме таймеров/счетчи ков, т.е. они срабатывают когда TOV0 или TOV2 установлены, и разрешены прерывания по переп олнению таймера
èглобальному прерыванию. Это относится также к флагам ср авнения выхода таймеров
èпрерываниям.
Частота ШИМ будет соответствовать тактовой частоте тайм ера деленной на
510.
Изменение уставки сравнения
Текущее состояние таймера/счетчика
























Установленное 

































значение сравнения
Выход ШИМ
Синхронизированная фиксация уставки в OCR
Изменение уставки сравнения
|
|
|
|
|
|
|
|
Текущее состояние |
|
|
|
|
|
|
|
таймера/счетчика |
|
|
|
|
|
|
|
|
Установленное |
|
|
|
|
|
|
|
|
|
значение сравнения |
|
|
|
|
|
|
|
Выход ШИМ |
|
|
|
|
|
|
|
|
||
|
|
Несинхронная фиксация уставки в OCR |
Ложный выброс |
|||||
|
|
|
|
|||||
|
Рис. 34 Эффект несинхронной фиксации OCR |
|
|
|||||
|
Таблица 14. Состояния ШИМ выходов при OCRn = $00 или $FF |
|||||||
|
|
|
|
|
|
|
|
|
COMn1 |
|
COMn0 |
OCRn |
Выход PWMn |
|
|
||
1 |
|
0 |
$00 |
L - низкий уровень |
|
|
||
1 |
|
0 |
$FF |
H - высокий уровень |
|
|
||
1 |
|
1 |
$00 |
H - высокий уровень |
|
|
||
|
|
|
|
|
|
|
|
|
1 |
|
1 |
$FF |
L - низкий уровень |
|
|
||
Примечания: n = 0 или 2
9 5
ATMEL |
ÊÒÖ-ÌÊ |
АСИНХРОННАЯ РАБОТА ТАЙМЕРА/СЧЕТЧИКА0
При синхронной работе таймера/счетчика0 все операции и та ктирование идентичны работе таймера/счетчика2. Однако асинхронная ра бота имеет некоторые особенности.
• Это важно! При переключении между асинхронным и синхронны м тактированием таймера/счетчика0 регистры таймера TCNT0, OCR0 и TCCR0 могут быть повреждены. Безопасное переключение выполняется сл едующей последовательностью действий:
1.Запрещаются прерывания OCIE0 и TOIE0 таймера0.
2.Соответствующей установкой ASO выбирается источник тактового сигнала.
3.В TCNT0, OCR0 и TCCR0 записываются новые значения.
4.Если выполняется переключение в асинхронный режим: ожидать TCN0UB, OCR0UB и TCR0UB.
5.Разрешить прерывания, если это необходимо.
•Генератор оптимизирован под использование часового кристалла с частотой 32,768 кГц. Внешний тактовый сигнал, подаваемый на этот вывод, п роходит через тот же самый усилитель с полосой пропускания 256 кГц. Таким образом , внешний тактовый сигнал должен быть в диапазоне от 0 Гц до 256 кГц. Частота внешнего тактового сигнала, подаваемого на вывод TOSC1, не должна превышать одной четвертой от тактовой частоты CPU. Отметим, что тактовая частота CPU может б ыть ниже частоты XTAL, если разрешено деление частоты XTAL.
•При записи в один из регистров TCNT0, OCR0 или TCCR0 записываемая величина пересылается в регистр временного хранения и фи ксируется после двух положительных фронтов TOSC1. Пользователь не должен записыва ть новое значение прежде, чем содержимое регистра временного хранения не бу дет передано по назначению. Каждый из указанных регистров имеет свой собс твенный регистр временного хранения, это означает, к примеру, что запись в T CNT0 не исказится при записи в OCR0. Для того, чтобы убедиться в выполнении пересылк и в регистр назначения используется регистр статуса асинхронного режима (Asynchronous Statu s Register - ASSR).
•При вводе режима Sleep после записи в регистры TCNT0, OCR0 or TCCR0 пользователь должен ожидать пока записываемый регистр н е будет обновлен, если таймер/счетчик0 используется для активации прибора. В ино м случае MCU перейдет
âрежим Sleep прежде, чем изменения окажут какой либо эффект. Э то особенно важно если для активации прибора используется прерывание по ср авнению выхода0; сравнение выхода запрещается во время записи в OCR0 или TCNT0. Если цикл зап иси не завершен (т.е. пользователь введет режим Sleep прежде, чем бит OCR0UB будет сб рошен в 0) прибор никогда не получит совпадения при сравнении и MCU не будет активирован. Если таймер/счетчик0 используется для активации прибора и з режима Power Save и если пользователь намеревается возобновить режим Power Save, то необходимо предпринимать меры предосторожности - для сброса логики п рерывания необходим один цикл TOSC1. Если время между активацией и восстановление м режима Power Save меньше одного цикла TOSC1 прерывание не произойдет и прибор не будет активирован. Если пользователь сомневается в том, что про межуток времени перед восстановлением режима Power Save достаточен, необходимо исполь зовать следующий алгоритм:
1.Записать значение в TCCR0, TCNT0 или OCR0.
2.Подождать пока соответствующий флаг занятого обновления в регистре
9 6
ÊÒÖ-ÌÊ
ASSR не будет сброшен в 0. 3. Ввести режим Power Save.
•Генератор частоты 32кГц таймера/счетчика0 работает всегда, за исключением режима Power Down. При восстановления питания или активации из ре жима Power Down пользователь должен помнить о том, что генератору для ст абилизации необходимо время порядка одной секунды. Пользователю рекомендуется выждать не менее одной секунды прежде чем использовать таймер/счетчик0 после под ачи питания или активации из режима Power Down.
•Описание активации прибора из режима Power Save при асинхронном тактировании таймера. Когда условия прерывания выполнен ы, на следующем цикле тактовой частоты таймера начинается процесс активации, т .е. состояние таймера должно увеличиться как минимум на единицу, прежде, чем процессор сможет прочитать состояние счетчика. Флаги прерываний обновляются за три тактовых ци кла процессора после запуска тактовой частоты процессора. В течение этих цикло в процессор выполняет команды но условия прерывания еще не читаемы и подпрограм ма обработки прерывания не может начать выполнение.
Во время асинхронной работы синхронизация флагов прерыв аний асинхронного таймера занимает три тактовых цикла процессора плюс один цикл таймера. Таким образом содержимое таймера увеличивается минимум на еди ницу, прежде чем процессор сможет прочитать содержимое таймера вызвавше е установку флага прерывания. Вывод сравнения выхода меняет состояние в соо тветствии с тактовым сигналом таймера и не синхронизирован с тактовой частото й процессора.
РЕГИСТР СТАТУСА АСИНХРОННОГО РЕЖИМА -
ASSR - (Asynchronous Status Register)
Áèòû |
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
|
$30 ($50) |
|
- |
- |
- |
- |
AS0 |
TCN0UB |
OCR0UBTDR0UB |
ASSR |
|
Чтение/Запись |
R |
R |
R |
R |
R/W |
R |
R |
R |
||
Начальное состояние |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
|
|
• Bit 7..4 - Res: Reserved Bits - Зарезервированные биты
Эти биты в микроконтроллерах ATmega603/103 зарезервированы и при с читывании всегда будут показывать 0.
•Bit 3 - AS0: Asynchronous Timer/Counter0 - Асинхронный режим таймера/счетчика0
При установленном в состояние 1 бите таймер/счетчик0 такти руется сигналом вывода TOSC1. При очищеном бите таймер/счетчик0 тактируется внутренн им тактовым сигналом CK. При изменении состояния этого бита содержимое TCNT0 может быть повреждено.
•Bit 2 - TCN0UB: Timer/Counter0 Update Busy - Таймер/счетчик0 занят для обновления
Бит устанавливается в состояние 1 при работе таймера/счет чика0 в асинхронном режиме и записанном TCNT0. При обновлении записанного в TCNT0 знач ения содержимым регистра временного хранения бит аппаратно о чищается.
Бит в логическом состоянии 0 означает, что TCNT0 готов к обновл ению новым значением.
•Bit 1 - OCR0UB: Output Compare Register0 Update Busy - Сравнение выхода регистра0
занято для обновления
Бит устанавливается в состояние 1 при работе таймера/счет чика0 в асинхронном режиме и записанном OCR0. При обновлении записанного в OCR0 знач ения содержимым
9 7
ATMEL |
ÊÒÖ-ÌÊ |
регистра временного хранения бит аппаратно очищается.
Бит в логическом состоянии 0 означает, что OCR0 готов к обновле нию новым значением.
• Bit 0 - TCR0UB: Timer/Counter Control Register0 Update Busy - Регистр управления
таймера/счетчика0 занят для обновления
Бит устанавливается в состояние 1 при работе таймера/счет чика0 в асинхронном режиме и записанном TCCR0. При обновлении записанного в TCCR0 знач ения содержимым регистра временного хранения бит аппаратно о чищается.
Бит в логическом состоянии 0 означает, что TCCR0 готов к обновл ению новым значением. Если запись выполняется в любой из трех регист ров таймера/счетчика0 когда их флаги занятости для обновления установлены, то з аписываемое значение может быть повреждено и привести к нежелательному прерыв анию.
Считывание состояний TCNT0, OCR0 и TCCR0 отличается. При чтении состо яния TCNT0 считывается действительное содержимое, при чтении сост ояний OCR0 или TCCR0 считывается содержимое регистров временного хранения.
16-разрядный таймер/счетчик1
Блок-схема таймера/счетчика1 приведена на рис. 35
16-разрядный таймер/счетчик1 может получать тактовый сигна л от CK, CK после предварительного делителя и от внешнего вывода. Кроме тог о его можно остановить, как показано в описании регистра управления таймером/сче тчиком1 - TCCR1B (Timer/ Counter1 Control Register). В регистрах управления TCCR1A и TCCR1B находятся различные флаги, указывающие на переполнение, совпадение при сравнении и случаи захвата событий. В регистре масок прерываний TIMSK (Timer/Counter Interrupt Mask Register) устанавливаются разрешения/запрещения прерываний та ймера/счетчика1. При внешнем тактировании таймера/счетчика1 внешний сигна л синхронизируется частотой тактового генератора CPU. Для правильной работы та ймера/счетчика1 по внешнему тактовому сигналу минимальное время между двум я переключениями внешнего тактового сигнала должно быть не менее одного периода так тового сигнала CPU. Синхронизация внешнего тактового сигнала ведется нарас тающим фронтом внутреннего тактового сигнала CPU.
Наилучшие точность и разрешение 16-разрядный таймер/счетч ик1 обеспечивает при наименьшем коэффициенте предварительного деления. С другой стороны, высокий коэффициент предварительного деления удобен при реализ ации таймером/счетчиком1 низкоскоростных функций или точной синхронизации редко происходящих действий.
Таймер/счетчик1 поддерживает две функции сравнения выход а, используя регистр1 сравнения выходов A и B - OCR1A и OCR1B в качестве источников данных, с равниваемых с содержимым таймера/счетчика1. Функции сравнения выхода включают очистку счетчика по совпадению сравненияA и воздействие на выводы сравнения выхода при обоих совпадениях сравнения.
Таймер/счетчик1 может быть использован в качестве 8, 9 или 10-р азрядного широтно-импульсного модулятора. В этом режиме счетчик и р егистры OCR1A/OCR1B работают как сдвоенный самостоятельный ШИМ со сцентриро ванными импульсами, без формирования ложных импульсов. См. раздел Таймер/счетчик1 в ШИМ режиме, где подробно описана эта функция.
Функция захвата входа таймера/счетчика1 обеспечивает зах ват содержимого таймера/счетчика1 в регистр захвата входа, запускаемый вн ешним событием на выводе входа захвата PD4/(IC1). Реальные установки захвата события опр еделяются регистром управления таймером/счетчиком1 TCCR1B (Timer/Counter1 Control Register). Кроме
9 8