Работа №5 цифровые системы на базе микроконтроллера atmega103: реализация таймерных функций 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Работа №5 цифровые системы на базе микроконтроллера atmega103: реализация таймерных функций



Цель работы: изучение функционирования таймеров-счетчиков микроконтроллера ATmega103, получение практических навыков программирования микроконтроллерных систем для работы в реальном масштабе времени.

Введение

Микроконтроллер ATmega103 имеет три счетчика-таймера: два 8-разрядных и один 16-разрядный. Таймер 0, в дополнение к обычному режиму, может тактироваться асинхронно от внешнего генератора. Этот генератор оптимизирован под использование кварцевого кристалла на частоту 32768 кГц, что позволяет использовать Таймер 0 как часы реального времени (Real Time Clock - RTC).

Таймер 0 оснащен своим собственным предделителем. Таймеры 1 и 2 используют общий 10- разрядный предварительный делитель. Эти два таймера-счетчика можно использовать как таймеры встроенной временной базой или как счетчики, переключаемые по состоянию на внешнем выводе.

Предварительные делители таймеров/счетчиков

Предварительный делитель Таймеров/счетчиков 1 и 2 содержит четыре ступени деления: СК/8, СК/64, СК/256 и СК/1024, где СК - тактовый сигнал процессора, (который может быть ниже XTAL из-за делителя). Кроме СК, в качестве источников тактовых сигналов для Таймеров/счетчиков 1 и 2 могут использоваться сигналы от внешних источников, а также нулевой тактовый сигнал (stop).

Исходный сигнал для предделителя Таймера/счетчика 0 обозначен РСК0. Его цепь по умолчанию подключена к основному тактовому сигналу СК. При установке бита AS0 в регистре ASSR Таймер/счетчик0 будет тактироваться сигналом с вывода TOSC1, что позволяет использовать его в качестве часов реального времени.

8-разрядные таймеры/счетчики Т/С0 и Т/С2

8-разрядный Таймер/счетчик0 получает непосредственно тактовый сигнал РСК0 или его производное значение после прохождения через предварительный делитель.

8-разрядный таймер/счетчик2 получает тактовый сигнал непосредственно от СК, либо после прохождения его через предварительный делитель, или с внешнего вывода. Оба таймера/счетчика могут быть остановлены, как это указано в описании регистров управления таймерами/счетчиками TCCR0 и TCCR2.    

В регистре флагов прерывания таймеров/счетчиков TIFR хранятся различные флаги состояния (переполнения, совпадения при сравнении и захвата события). Значения битов управления хранятся в регистрах управления таймерами/счетчиками TCCR0 и TCCR2 Разрешение и запрещение прерываний производится посредством регистра масок прерываний таймеров/счетчиков TIMSK.

При тактировании Таймера/счетчика2 внешним сигналом этот сигнал синхронизируется с тактовой частотой процессора. Для обеспечения правильной синхронизации необходимо, чтобы минимальное время между двумя входящими тактовыми импульсами было не менее одного цикла внутреннего тактового сигнала процессора.

Точность и разрешение 8-разрядных таймеров/счетчиков растет с уменьшением коэффициента предварительного деления. Высокий коэффициент предварительного деления удобно использовать при реализации медленных операций или точной синхронизации редко происходящих действий.

Оба таймера/счетчика поддерживают две функции сравнения выхода, используя регистры сравнения выходов OCR0 и OCR2 как источники данных, сравниваемых с содержимым таймеров/счетчиков. В функции сравнения выхода входит очистка счетчика при совпадении, а также формирование, при совпадении, активных сигналов на выводах PB4(OC0/PWM0) и PB7(OC2/PWM2).

Таймеры/счетчики 0 и 2 можно использовать как 8-разрядные широтно-импульсные модуляторы (PWM). В этом режиме таймер/счетчик, совместно с регистром совпадения выхода, работает как автономный ШИМ с центрированными импульсами без ложных выбросов.

Рисунок 5.1 – Регистр управления таймером/счетчиком – TCCR0, TCCR2

Bit 7 - Зарезервированный бит

Bit 6 - Разрешение режима широтно-импулъсного модулятора. Установленный (= 1) бит разрешает режим ШИМ для таймеров/счетчиков 0 или 2.

Bits 5,4 - Режим сравнения выхода, биты 1 и 0. Биты COMn1 и СОМn0 управляют состоянием выводов PB4(OC0/PWM0) или PB7(OC2/PWM2) после совпадения по Таймеру 2. Поскольку это альтернативная функция выводов порта, то соответствующий бит направления вывода должен быть установлен в состояние 1. Коды управления приведены в таблице 5.1.

 

Таблица 5.1 – Выбор  режима сравнения

COMn1 СОМ n0 * Описание
0 0 Таймер/счетчик отсоединен от выходного вывода OCn/PWMn
0 1 Переключение выходной линии OCn/PWMn
1 0 Очистка выходной линии OCn/PWMn (установка в состояние 0)
1 1 Установка выходной линии OCn/PWMn (установка в состояние 1)

Примечания: n = 0 или 2

В режиме ШИМ функции этих битов отличаются.

 

Bit 3 - Очистить таймер/счетчик при совпадении. При установленном бите СТС0 или СТС2 таймер/счетчик сбрасывается в состояние $00 в течение одного цикла процессора после наступления совпадения. Если бит управления сброшен, то таймер продолжает считать и не используется в процедуре сравнения. Поскольку факт совпадение детектируется в цикле процессора, следующем за совпадением, эта функция будет вести себя несколько по другому, если коэффициент предварительного деления больше 1. Если коэффициент деления равен 1 и в регистр сравнения А занесено значение С, таймер считает так, как это делается при установленном бите СТС0/2.

...С-2 | С-1 |С|0| 1 |

Если установлен коэффициент деления 8, таймер будет считать в следующем порядке:

 ...|С-2,С-2,С-2,С-2,С-2,С-2,С-2,С-2|С-1,С-1,С-1,С-1,С-1,С-1,С-1,С-1|С,0,0,0,0,0,0,0,0|1, 1, 1,...

В режиме ШИМ состояние этого бита значения не имеет.

Bits 2,1,0 - Биты выбора тактовой частоты. Биты 2, 1 и 0 выбора тактовой частоты Таймера 2 подключают выход определенной ступени предварительного делителя.

 

Таблица 5.2 – Выбор коэффициента деления частоты для Таймера 0

CS02 CS01 CS00 Описание
0 0 0 Таймер/счетчик0 остановлен
0 0 1 РСК0
0 1 0 РСК0 / 8
0 1 1 РСК0 / 32
1 0 0 РСК0 / 64
1 0 1 РСК0 /128
1 1 0 РСК0 / 256
1 1 1 РСК0/1024

 

Таблица 5.3 – Выбор коэффициента деления частоты для Таймера 2

CS22 CS21 CS20 Описание
0 0 0 Таймер/счетчик0 остановлен
0 0 1 СК
0 1 0 СК / 8
0 1 1 СК / 64
1 0 0 СК / 256
1 0 1 СК / 1024
1 1 0 Внешний вывод PD7(T2), падающий фронт
1 1 1 Внешний вывод PD7(T2), нарастающий фронт

 

Условие Stop обеспечивает реализацию функции разрешения/запрещения таймера. Режим деления синхросигнала реализуется непосредственным делением тактовой частоты процессора СК. Если для тактирования Таймера/счетчика 2 используется внешний источник, то переключения на выводе PD7/(T2) будут воздействовать на счетчик, даже если этот вывод сконфигурирован как выход.

Эти два 8-разрядных регистра являются регистрами счета таймеров/счетчиков. Оба таймера/счетчика работают как инкрементирующие, либо как реверсивные (в ШИМ режиме) счетчики с возможностью чтения/записи. Если в таймер/счетчик записано некоторое значение и выбран источник тактового сигнала, то он продолжит счет с записанного значения с указанной тактовой частотой со следующего цикла таймера.

 

 

 

Рисунок 5.2 – Таймер/счетчик 0 и  Таймер/счетчик 2 – TCNT0 и TCNT2

 

 

Рисунок 5.3 – Регистр сравнения Таймера/счетчика 0- OCR0 и Таймера/счетчика 2 - OCR2

 

Регистры сравнения выходов являются 8-разрядными регистрами с возможностью чтения/записи. Выбор процедуры сравнения определяется регистрами TCCR0 и TCCR2. Совпадение при сравнении произойдет только тогда, когда таймер/счетчик досчитает до значения содержимого OCR. Программная запись одного и того же значения в таймер/счетчик и в регистр сравнения выхода не приведет к формированию совпадения при сравнении.

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

 

 

Таймеры/счетчики 0 и 2 в ШИМ режиме

При установленном режиме ШИМ таймер/счетчик и регистр сравнения выхода (OCR0 или OCR2) формируют 8-разрядный, без ложных выбросов и с правильной фазой, ШИМ-сигнал на выводах PB4(OC0/PWM0) или PB7(OC2/PWM2). Таймер/счетчик работает как реверсивный счетчик, считающий от $00 до $FF, после чего он считает в обратную сторону до нуля и только после этого начинает новый цикл. Когда состояние счетчика совпадает с содержимым регистра сравнения выхода, значения на выводах PB4(OC0/PWM0) или PB7(OC2/PWM2) устанавливаются в 1 или 0, в зависимости от установленных в регистрах управления TCCR0 и TCCR2 битами COM01/COM00 или COM21/COM20 (Табл. 5.4).

 

 

Таблица 5.4 – Выбор режима сравнения в ШИМ режиме

СОМ n1 СОМ n0 Влияние на вывод Compare / PWM
0 0 Не подсоединен
0 1 Не подсоединен
1 0 Очистка при совпадении, счет по нарастанию. Установка при совпадении, счет по убыванию (неинвертирующий ШИМ)
1 1 Очистка при совпадении, счет по убыванию. Установка при совпадении, счет по нарастанию (инвертирующий ШИМ)

 

В режиме ШИМ при записи в регистр сравнения выхода значение вначале пересылается в ячейку памяти на временное хранение. Значение фиксируется в регистре OCR0/OCR2 после достижения таймером/счетчиком состояния $FF. Такой прием предохраняет от появления ШИМ импульсов увеличенной ширины (ложных выбросов) в случае несинхронной записи OCR0 или OCR2.

В промежуток времени между операциями записи и фиксации, считывание из OCR0 или OCR2 приведет к считыванию из ячейки временного хранения. Это означает, что чаще всего при чтении значение будет читаться из OCR0/2. Когда регистр OCR перейдет через $00 или $FF, значение выхода ШИМ изменится на низкое или высокое, в зависимости от установок СОМ21/СОМ20 или СОМ11/СОM10 (Табл.5.5.)

 

Таблица 5.5. Состояния ШИМ выходов при OCRn = $00 или $FF
СОМn1 СОМn0 OCRn Выход PWMn
1 0 $00 L - низкий уровень
1 0 $FF H - высокий уровень
1 1 $00 Н - высокий уровень
1 1 $FF L - низкий уровень

Примечание: n =0 или 2

В режиме ШИМ флаг переполнения таймера (TOV0 или TOV2) устанавливается при смене направления счета при значении $00. Прерывания по переполнению Таймеров 0 и 2 работают так же, как и в нормальном режиме таймеров/счетчиков, т.е. они срабатывают, когда TOV0 или TOV2 установлены, и разрешены прерывания по переполнению таймера и глобальное прерывание. Это относится также к флагам и прерываниям сравнения выхода таймеров.

Частота ШИМ будет соответствовать тактовой частоте таймера, деленной на 510.

Асинхронная работа Таймера/счетчика 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, не должна превышать одной четвертой от тактовой частоты процессора. Отметим, что тактовая частота процессора может быть ниже частоты XTAL, если разрешено деление частоты XTAL.

При записи в один из регистров TCNT0, OCR0 или TCCR0 записываемая величина пересылается в регистр временного хранения и фиксируется после двух положительных фронтов сигнала TOSC1. Пользователь не должен записывать новое значение прежде, чем содержимое регистра временного хранения не будет передано по назначению. Каждый из указанных регистров имеет свой собственный регистр временного хранения, это означает, к примеру, что содержимое TCNT0 не исказится при записи в OCR0. Чтобы убедиться в выполнении пересылки в регистр назначения используется регистр статуса асинхронного режима (Asynchronous Status Register -ASSR).

При переходе в режим энергосбережения после записи в регистры TCNT0, OCR0 или TCCR0, пользователь должен ожидать, пока записываемый регистр не будет обновлен, если Таймер/счетчик0 используется для активации прибора. В ином случае процессор перейдет в режим Sleep прежде, чем изменения окажут какой либо эффект. Это особенно важно, если для активации прибора используется прерывание по сравнению выхода 0; сравнение выхода запрещается во время записи в OCR0 или TCNT0. Если цикл записи не завершен (т.е. введет режим Sleep прежде, чем бит OCR0UB сброшен в 0), прибор никогда не получит совпадения при сравнении и процессор не будет активирован.

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

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

2. Подождать пока соответствующий флаг в регистре ASSR не будет сброшен в 0.

3. Ввести режим Power Save.

Генератор частоты 32кГц Таймера/счетчика 0 работает всегда, за исключением режима Power Down. При восстановлении питания или активации из режима Power Down пользователь должен помнить о том, что генератору для стабилизации необходимо время порядка одной секунды. Пользователю рекомендуется выждать не менее одной секунды прежде чем использовать Таймер/счетчик 0 после подачи питания или активации из режима Power Down.

Описание активации прибора из режима Power Save при асинхронном тактировании таймера. Когда условия прерывания выполнены, на следующем цикле тактовой частоты таймера начинается процесс активации, т.е. состояние таймера должно увеличиться как минимум на единицу, прежде, чем процессор сможет прочитать состояние счетчика. Флаги прерываний обновляются за три тактовых цикла процессора после запуска тактовой частоты процессора. В течение этих циклов процессор выполняет команды, но условия прерывания еще не читаемы и подпрограмма обработки прерывания не может начать выполнение.

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

 

 

Рисунок 5.4 – Регистр статуса асинхронного режима-ASSR

 

Bit 7.. 4: - Зарезервированные биты

Bit 3 - Асинхронный режим Таймера/счетчика0. При установленном бите AS0 Таймер/счетчик 0 тактируется сигналом с вывода TOSC1. При очищенном бите Таймер/счетчик 0 тактируется внутренним тактовым сигналом СК. При изменении состояния этого бита содержимое TCNT0 может быть повреждено.

Bit 2 - TCN 0 UB: Таймер/счетчик0 занят для обновления. Бит устанавливается при работе Таймера/счетчика 0 в асинхронном режиме и записанном TCNT0. При обновлении значения TCNT0 из регистра временного хранения, этот бит аппаратно очищается. Бит TCN0UB = 0 означает, что регистр TCNT0 готов к обновлению новым значением.

Bit 1 – OCR 0 UB: Выход сравнения регистра 0 занят для обновления. Бит устанавливается при работе Таймера/счетчика0 в асинхронном режиме и записанном OCR0. При обновлении записанного в OCR0 значения содержимым регистра временного хранения бит аппаратно очищается. Бит OCR0UB = 0 означает, что регистр OCR0 готов к обновлению новым значением.

Bit 0 – TCR0UB: Регистр управления Таймера/счетчика 0 занят для обновления. Бит устанавливается при работе Таймера/счетчика 0 в асинхронном режиме и записанном TCCR0. При обновлении записанного в TCCR0 значения содержимым регистра временного хранения бит аппаратно очищается. Бит TCR0UB = 0 означает, что регистр TCCR0 готов к обновлению новым значением.

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

Чтение состояний TCNT0, OCR0 и TCCR0 отличается. При чтении TCNT0 считывается его действительное содержимое, при чтении из OCR0 или TCCR0 считывается содержимое регистра временного хранения.

 

16-разрядный Таймер/счетчик 1

16-разрядный таймер/счетчик1 может использовать непосредственно тактовый сигнал СК, СК после предварительного делителя, либо сигнал с внешнего вывода. Кроме того, его можно остановить, как указано в описании регистра управления таймером/счетчиком1 - TCCR1B. В регистрах управления TCCR1A и TCCR1B находятся флаги, указывающие на переполнение, совпадение при сравнении и захват событий. В регистре масок прерываний TIMSK устанавливаются разрешения/запрещения прерываний Таймера/счетчика 1. При внешнем тактировании Таймера/счетчика 1 внешний сигнал привязывается к частоте процессора, синхронизация ведется нарастающим фронтом тактового сигнала процессора. Для правильной работы Таймера/счетчика 1 от внешнего тактового сигнала минимальное время между двумя переключениями тактового сигнала должно быть не менее одного периода тактового сигнала процессора.

Наилучшие точность и разрешение Таймер/счетчик 1 обеспечивает при наименьшем коэффициенте предварительного деления. С другой стороны, высокий коэффициент предварительного деления удобен при реализации низкоскоростных функций или точной синхронизации редко происходящих действий. Таймер/счетчик 1 поддерживает две функции сравнения выхода, используя регистры сравнения выходов А и В - OCR1A и OCR1B в качестве источников данных, сравниваемых с содержимым Таймера/счетчика 1. Функции сравнения выхода включают очистку счетчика по совпадению сравнения А и воздействие на состояние выводов при обоих совпадениях сравнения.

Таймер/счетчик 1 может быть использован в качестве 8-, 9- или 10-разрядного широтно- импульсного модулятора. В этом режиме счетчик и регистры OCR1A/OCR1B работают как сдвоенный самостоятельный ШИМ с центрированными импульсами, без ложных импульсов.

Функция захвата входа Таймера/счетчика 1 обеспечивает захват содержимого Таймера/счетчика 1 в регистр захвата, запускаемый внешним событием на выводе PD4/(IC1). Условия захвата события определяются регистром управления TCCR1B. Кроме того, для переключения входа захвата может быть использован аналоговый компаратор.

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

 

Рисунок 5.5 – Регистр управления А Таймера/счетчика1 - TCCR1A

Bits 7,6 - C 0 M 1 A 1, COM 1 A 0: Режим сравнения выхода 1 A, биты 1 и 0. Управляющие биты СOМ1А1 и СОМ1А0 определяют характер сигнала на выводе, следующего за совпадением при сравнении таймера/счетчика1. Выходной сигнал поступает на вывод ОС1А (Output CompareA).. Поскольку это альтернативная функция порта I/O, то соответствующий бит управления направлением должен быть установлен в 1 (вывод работает на выход). Коды управления представлены в табл. 5.6.

 

Таблица 5.6 – Выбор  режима сравнения 1

СОМ1Х1 СОМ1Х 0 Описание
0 0 Таймер/счетчик1 отключен от вывода выхода ОС1х
0 1 Переключение выходной линии ОС1х
1 0 Очистка выходной линии ОС1х (на линии низкий уровень)
1 1 Установка выходной линии ОС1х (на линии высокий уровень)

Примечание: х=А или В

Bits 5,4 - СОМ1В1, СОМ1В0: Режим сравнения выхода 1В, биты 1 и 0. Биты СОМ1В1 и СОМ1В0 определяют характер сигнала на выходе, который формируется вслед за совпадением при сравнении Таймера/счетчика 1. Сигнал поступает на вывод ОС1В. Поскольку это альтернативная функция порта I/O, то соответствующий бит управления направлением должен быть установлен в 1 (вывод работает на выход). Конфигурация управления представлена в табл. 5.6. В ШИМ режиме функции этих битов отличаются.

При изменении значений битов COM1X 1/COM1X0 прерывания по сравнению выхода1 должны быть запрещены очисткой битов разрешения прерывания в регистре TIMSK. В противном случае при изменении битов может произойти прерывание.

Bits 3..2 - Зарезервированные биты

Bits 1..0- PWM 11, Р WM10: Биты выбора режима ШИМ Эти биты определяют установку режима ШИМ, как это показано в табл.5.7.

 

Таблица 5.7 – Выбор типа режима ШИМ

PWM11 PWM10 Описание
0 0 Работа таймера/счетчика1 в ШИМ режиме запрещена
0 1 Работа таймера/счетчика1 в 8-разрядном ШИМ режиме
1 0 Работа таймера/счетчика1 в 9-разрядном ШИМ режиме
1 1 Работа таймера/счетчика1 в 10-разрядном ШИМ режиме

 

Рисунок 5.6 –Регистр управления В Таймера/счетчика1 - TCCR1B

 

Bit 7 - ICNC 1: Установка режима подавления шума на входе захвата 1. При бите ICNC1 функция подавления шума входного триггера захвата запрещена. Вход захвата переключается по первому нарастающему/падающему фронту, поступившему на вывод входа захвата PD4(IC1). При установленном бите ICNC1 выполняются четыре последовательных опроса состояния вывода PD4(IC1) и все четыре выборки должны иметь одинаковый уровень, определяемый битом ICEA1. Частота опроса соответствует частоте XTAL.

Bit 6 – ICES 1: Выбор фронта срабатывания на входе захвата 1. При сброшенном бите ICES1 содержимое Таймера/счетчика1 по падающему фронту на выводе PD4(IC1) пересылается в регистр ICR1. При установленном бите ICES1 содержимое Таймера/счетчика1 пересылается в регистр ICR1 по нарастающему фронту на выводе PD4(IC1).

Bits 5,4 - Res: Reserved bits - Зарезервированные биты.

Bit 3 - CTC 1: Очистка таймера/счетчика 1 no совпадению. При установленном бите СТС1 Таймер/счетчик 1 сбрасывается в состояние $0000 в течение тактового цикла, следующего за совпадением при сравнении А. Если бит СТС1 очищен, Таймер/счетчик1 продолжает отсчет и не реагирует на совпадение при сравнении. Поскольку совпадение при сравнении детектируется в течение тактового цикла процессора, следующего за совпадением, то поведение функции будет отличаться при установке коэффициента предварительного деления таймера/счетчика1, большем 1. При коэффициенте предварительного деления 1 и значении С в регистре сравнения А, таймер будет считать в соответствии с установкой CTC1:

 

..|С-2 | С-1 | С | 0 | 1 |...

При установленном коэффициенте предварительного деления 8, таймер будет считать:

..|С-2, С-2, С-2, С-2, С-2, С-2, С-2, С-2| С-1, С-1, С-1, С-1, С-1, С-1, С-1, С-1| С, 0, 0, 0, 0, 0, 0, 0|...

В ШИМ режиме состояние бита СТС1 значения не имеет.

Bits 2,1,0 – CS12, CS 11, CS 10: Выбор источника тактовой частоты, биты 2, 1 и 0. Установкой состояния этих битов производится выбор источника тактового сигнала (в том числе коэффициента предварительного деления).

Условие Stop выполняет функцию разрешения/запрещения Таймера/счетчика1. В режимах с предварительным делением на соответствующий коэффициент делится частота СК тактового генератора. При использовании внешнего тактирования необходимо выполнить соответствующие установки в регистре управления направлением (очистка переводит вывод в режим входа).

 

Таблица 5.8 – Выбор  источника тактового сигнала Таймера/счетчика 1

CS12 CS11 CS10 Описание
0 0 0 Stop условие - таймер/счетчик1 остановить
0 0 1 СК
0 1 0 СК/8
0 1 1 СК / 64
1 0 0 СК / 256
1 0 1 СК /1024
1 1 0 Внешний тактирующий сигнал на выводе Т1, нарастающий фронт
1 1 1 Внешний тактирующий сигнал на выводе Т1, падающий фронт

 


 

Рисунок 5.7 – Таймер/счетчик 1 – TCNTH и TCNT1L

 

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

Запись в TCNT1:

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

Чтение TCNT1:

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

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

 

Рисунок 5.7 – Регистры сравнения А выхода Таймера/счетчика 1 – OCR1AH и OCR1AL и В выхода Таймера/счетчика 1 - OCR1BH и OCR1BL

 

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

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

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

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

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

Рисунок 5.8 – Регистр захвата входа Таймера/счетчика 1 - ICR1H и ICR1L

 

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

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

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

 

Таймер/счетчик1 в ШИМ режиме

При установленном режиме ШИМ Таймер/счетчик 1 и регистры сравнения (OCR1A и OCR1B), образуют сдвоенный 8-, 9- или 10-разрядный автономный генератор ШИМ с выходами на выводы PD5(OC1A) и OС1В. Таймер/счетчик 1 работает как реверсивный счетчик, считающий от $0000 до верхней границы (табл. 5.9). При значение счета совпадает с содержимым 10 младших битов регистров OCR1A или OCR1B, сигнал на выводах РВ5(ОС1А)/РВ6(ОС1В) принимает значение 0 или 1, в соответствии с установками битов СОМ1А1/СОМ1А0 или СОМ1В1/СОМ1В0 регистра управления TCCR1A. Подробности в табл. 5.10.

 

Таблица 5.9 – Верхние  значения таймера и частота ШИМ

Разрешение ШИМ ТОР значения таймера Частота ШИМ
8-разрядное $00FF(255) f ТС1/510
9-разрядное $01FF(511) fTC1/1022
10-разрядное $03FF(1023) fTC1 /2046
  Таблица 5.10 – Выбор  режима сравнения 1 в режиме ШИМ
СОМ1х1 COM1x0 Выходной сигнал на ОСХ1
0 0 Не подключен
0 1 Не подключен
1 0 Очищается по совпадению при счете вверх. Устанавливается по совпадению при счете вниз (не инвертированный ШИМ).
1 1 Очищается по совпадению при счете вниз. Устанавливается по совпадению при счете вверх (инвертированный ШИМ).

Примечание: х=А или В

Отметим, что в режиме ШИМ младшие 10 разрядов OCR1A/OCR1B при записи пересылаются в ячейки временного хранения. Они фиксируются при достижении Таймером/счетчиком1 значения верхней границы. Таким образом обеспечивается защита от появления уширенных импульсов (из-за ложных выбросов - glitches) при несинхронной записи OCR1A/OCR1B.

При чтении OCR1A или OCR1B, в промежутке времени между записью и фиксацией, будет прочитано содержимое ячейки временного хранения. Это означает, что всегда из OCR1A/B будет считываться ранее записанное значение.

Когда OCR1 содержит $0000 или значение верхней границы, вывод ОС1А/ОС1В принимает значения 0 или 1, соответственно установкам СОМ1А1/СОМ1А0 или СОМ1В1/СОМ1В0 (табл. 5.11).

 

Таблица 5.11 – Состояние выходов в режиме ШИМ при OCR1x=$0000 или TOP

СОМ1Х1

COM1X0

OCR1X Состояние выводов ОС1Х

1

0 $0000 L

1

0 ТОР Н

1

1 $0000 Н

1

1 TOP L
         

Примечание: х=А или В

В режиме ШИМ флаг переполнения (TOV1) устанавливается по достижении значения $0000. Прерывание по переполнению таймера 1 работает так же, как и в обычном режиме таймера/счетчика, т.е. оно обрабатывается, когда TOV1 установлен и разрешены прерывания по переполнению таймера 1 и глобальное прерывание. Это относится и к прерыванию по сравнению выхода таймера 1.

Сторожевой таймер (Watchdog Timer)

Сторожевой таймер тактируется отдельным встроенным генератором, работающим с частотой 1 Мгц при напряжении питания VCС= 5В). Установкой коэффициента предварительного деления можно изменять длительность интервала до сброса по сторожевому таймеру от 16 тыс. до 2048 тыс. циклов (от 16 до 2048 мс). Команда WDR (Watchdog Reset) сбрасывает сторожевой таймер.

С момента сброса сторожевого таймера молено установить восемь значений периодов тактового сигнала, устанавливая, таким образом длительность периода сброса (табл.5.12). Если период сброса завершается и в течение этого периода не поступил другой сигнал сброса сторожевого таймера, микроконтроллер ATmega103 сбрасывается и его работа продолжается с вектора сброса.

Прежде, чем разрешать сторожевой таймер, необходимо выполнить команду WDR и загрузить значение в счетчик.

 

 

Рисунок 5.9 – Регистр управления сторожевым таймером – WDTCR

Bits 7.. 5 - Res: Reserved bits- Зарезервированные биты.

Bit 4 - WDTOE: Разрешение отключения сторожевого таймера. Данные биты должны быть установлены при очистке бита WDE. В ином случае сторожевой таймер не будет запрещен. Установленный бит аппаратно очищается после четырех тактовых циклов.

Bit 3 - WDE: Разрешение сторожевого таймера. Если бит WDE установлен сторожевой таймер разрешен, а если бит WDE очищен, то функционирование сторожевого таймера запрещено. Бит WDE может быть очищен, только если установлен бит WDTOE. Для запрещения разрешенного сторожевого таймера необходимо выполнить следующую процедуру:

1. В одной операции записать логическую 1 в WDTOE и WDE. Логическая 1 должна быть записана в WDE, даже если этот бит был установлен перед началом операции запрета сторожевого таймера.

2. За время последующих четырех тактов циклов записать логический 0 в WDE. Сторожевой таймер будет запрещен.

Bit 2..0 - WDP 2, WDP 1, WDP 0: биты установки коэффициента предварительного деления сторожевого таймера. Состояние битов WDP2, WDP1 и WDP0 определяет коэффициент деления тактовой частоты сторожевого таймера. Коэффициенты и соответствующие им промежутки времени указаны в табл.5.12.

 

Таблица 5.12 – Выбор коэффициента деления тактовой частоты сторожевого таймера



Поделиться:


Последнее изменение этой страницы: 2019-11-02; просмотров: 120; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.198.49 (0.129 с.)