*  Разряд 2:0 - CS02:0: Настройка частоты синхронизации таймера

С помощью трех настроечных бит имеется возможность выбрать различные тактовые частоты, кратные исходной частоте синхронизации (см. табл. 56).

Таблица 56. Выбор частоты синхронизации таймера 0

CS02

CS01

CS00

Описание

0

0

0

Нет синхронизации. Таймер-счетчик 0 оставлен.

0

0

1

clkT0S/1 (без предделения)

0

1

0

clkT0S/8 (с предделением)

0

1

1

clkT0S/32 (с предделением)

1

0

0

clkT0S/64 (с предделением)

1

0

1

clkT0S/128 (с предделением)

1

1

0

clkT0S/256 (с предделением)

1

1

1

clkT0S/1024 (с предделением)

Регистр таймера-счетчика - TCNT0

Разряд

7

6

5

4

3

2

1

0

TCNT0[7:0]

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

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

Регистр таймера-счетчика характеризуется двунаправленностью доступа к 8-разрядному счетчику таймера 0. Запись в регистр TCNT0 блокирует отработку возникающего совпадения на следующем после записи такте синхронизации таймера. Изменение содержимого счетчика (TCNT0) во время счета связано с риском потери результата сравнения между TCNT0 и регистром OCR0.

Регистр порога сравнения - OCR0

Разряд

7

6

5

4

3

2

1

0

OCR0[7:0]

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

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

Регистр порога сравнения содержит 8-разр. значение, которое непрерывно сравнивается цифровым компаратором со значением 8-разр. счетчика (TCNT0). Факт совпадения значений может использоваться для генерации прерывания по выполнению условия сравнения или для генерации прямоугольных импульсов на выводе OC0.

НЕ нашли? Не то? Что вы ищете?

Асинхронная работа таймера-счетчика 0

Регистр асинхронного состояния - ASSR

Разряд

7

6

5

4

3

2

1

0

-

-

-

-

AS0

TCN0UB

OCR0UB

TCR0UB

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

Чт.

Чт

Чт

Чт

Чт./Зп.

Чт

Чт

Чт

Исх. значение

0

0

0

0

0

0

0

0

*  Разряд 3 - AS0: Разрешение асинхронного тактирования таймера-счетчика 0

Если AS0 = 0, то таймер счетчик 0 тактируется сигналом синхронизации ввода-вывода - clkI/O. Если AS0 = 1, то таймер-счетчик 0 тактируется низкочастотным кварцевым генератором, связанного с задающим кварцем через выводы TOSC1 и TOSC2. При изменении значения AS0 содержимое регистров TCNT0, OCR0 и TCCR0 может быть нарушено.

*  Разряд 2 - TCN0UB: Флаг занятости таймера-счетчика 0 при обновлении

Если таймер-счетчик 0 работает асинхронно и выполнена запись в TCNT0, то данный флаг устанавливается. После того, как содержимое TCNT0 обновляется из временного регистра, данный флаг сбрасывается аппаратно. Следовательно, когда TCN0UB=0, в TCNT0 может быть выполнена запись нового значения.

*  Разряд 1 - OCR0UB: Флаг занятости регистра порога сравнения при обновлении

Если таймер-счетчик 0 работает асинхронно и выполнена запись в регистр OCR0, то данный флаг устанавливается. По завершении обновления OCR0 из временного регистра данный флаг сбрасывается аппаратно. Если OCR0UB=0, то это означает готовность регистра OCR0 к записи нового значения.

*  Разряд 0 - TCR0UB: Флаг занятости регистра управления таймера-счетчика 0 при обновлении

Если таймер-счетчик 0 работает асинхронно и выполнена запись в регистр TCCR0, то данный флаг устанавливается. По завершении обновления TCCR0 из временного регистра данный флаг сбрасывается аппаратно. Если TCR0UB=0, то это означает готовность регистра TCCR0 к записи нового значения.

Если выполнить запись в любой из трех регистров таймера-счетчика 0, когда соответствующий флаг занятости установлен, то обновляемое значение может быть нарушено и может стать причиной несанкционированного возникновения прерывания.

Механизм чтения TCNT0, OCR0 и TCCR0 различный. Если выполняется чтение TCNT0, то считывается фактическое значение таймера. Если же считывается значение OCR0 или TCCR0, то фактически считывается содержимое временного регистра.

Асинхронная работа таймера-счетчика 0

Если таймер-счетчик 0 работает асинхронно, то необходимо учесть некоторые особенности.

*  Предупреждение: При переключении между асинхронным и синхронным тактовыми источниками таймера-счетчика содержимое регистров TCNT0, OCR0 и TCCR0 может быть нарушено. Во избежание этого необходимо придерживаться следующей безопасной последовательности переключения:

1.  Отключить прерывания таймера-счетчика 0 путем сброса бит OCIE0 и TOIE0.

2.  Выбрать необходимый тактовый источник с помощью бита AS0

3.  Выполнить запись новых значений в TCNT0, OCR0 и TCCR0.

4.  При переходе в асинхронный режим тактирования дождаться сброса флагов TCN0UB, OCR0UB и TCR0UB.

5.  Сбросить флаги прерывания таймера-счетчика 0

6.  При необходимости разрешить прерывания

*  Генератор оптимизирован под использование часового кварцевого резонатора на частоту 32768 Гц. Подключение внешнего тактового сигнала к выводу TOSC1 может сказаться на некорректности работы таймера. Тактовая частота ЦПУ должна быть минимум в четыре раза выше частоты данного генератора. o Запись в любой из регистров TCNT0, OCR0 или TCCR0 происходит за два положительных фронта TOSC1, т. к. данные предварительно помещаются во временный регистр, а затем передаются по назначению. Программист должен предусмотреть, чтобы до окончания передачи содержимого временного регистра к назначенному регистру не выполнилась еще одна запись в. этот регистр. Каждый из трех упомянутых регистров имеют свои индивидуальные временные регистры. Это означает, что, например, запись в TCNT0 не влияет на процесс записи в регистр OCR0. Чтобы определить в какой регистр была выполнена запись, реализован регистр асинхронного состояния ASSR.

*  Если экономичный режим или расширенный дежурный режим вводится после записи в TCNT0, OCR0 или TCCR0, то программист должен дождаться завершения обновления записанного регистра, в случае если таймер-счетчик 0 используется для пробуждения из этих режимов. Иначе микроконтроллер перейдет в режим сна прежде чем вступят в силу желаемые изменения. Это особенно важно, если прерывание по результату сравнения таймера-счетчика 0 используется для пробуждения микроконтроллера, т. к. функция отработки условия совпадения блокируется после записи в OCR0 или TCNT0. Если цикл записи не заканчивается и микроконтроллер переводится в режим сна прежде чем OCR0UB станет равным нулю, то микроконтроллер больше не будет прерываться при выполнении условия сравнения и, следовательно, не сможет пробудиться.

*  Если таймер-счетчик 0 используется для пробуждения микроконтроллера из экономичного режима или расширенного дежурного режима, то, если требуется перевести данный микроконтроллер снова в один из этих режимов, необходимо учесть несколько особенностей. Для сброса логики прерываний требуется один такт TOSC1. Если интервал времени между пробуждением микроконтроллера и повторным вводом режима сна меньше чем один период TOSC1, то прерывание в дальнейшем не возникнет и микроконтроллер не сможет пробудиться. Если программист не уверен в прохождении достаточного времени перед повторным вводом в экономичный режим или расширенный дежурный режим, то необходимо придерживаться следующей последовательности действий, которая гарантирует прохождение одного периода TOSC1:

1.  Запись значения в TCCR0, TCNT0 или OCR0.

2.  Ожидание сброса соответствующего флага занятости при обновлении в регистре ASSR.

3.  Ввод экономичного или расширенного дежурного режима.

*  Если выбрана асинхронная работа, то генератор на 32768 Гц таймера-счетчика 0 находится постоянно включенным, за исключением режима выключения и дежурного режима микроконтроллера. После сброса при подаче питания или пробуждения из режима выключения и дежурного режима программист должен учитывать, что для возобновления нормальной стабильной работы данного генератора требуется минимум 1 секунда. Таким образом, программисту рекомендуется включить задержку минимум на 1 сек. перед использованием таймера-счетчика 0 после подачи питания или выхода из режима выключения или дежурного режима. Содержимое всех регистров таймера-счетчика 0 необходимо рассматривать как потерянное после подачи питания или пробуждения из указанных выше режимов из-за нестабильности тактового сигнала при запуске независимо от того, какой асинхронный источник используется (генератор или внешний сигнал на выводе TOSC1).

Из за большого объема этот материал размещен на нескольких страницах:
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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66