МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра БТС
ИНДИВИДУАЛЬНОЕ
ДОМАШНЕЕ ЗАДАНИЕ №2
по дисциплине «Микропроцессорные системы»
Тема: Программирование таймера
Студентка гр. 7501 |
|
Кирьянова А.М |
Преподаватель |
|
Анисимов А.А. |
Санкт-Петербург
2020
Цель работы: запрограммировать задержки для мигания светодиодом на языках С и Assembler.
Используемые инструменты: Отладочная плата ATTINY2313, интегрированная среда разработки AVR Atmel Studio 7.
Основные теоретические положения
Устройство отладочной платы attiny2313
ATtiny2313 низкопотребляющий 8 битный КМОП микроконтроллер с AVR RISC архитектурой.
AVR ядро объединяет богатую систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством (АЛУ), что позволяет получить доступ к двум независимым регистрам при выполнении одной команды.
Рисунок 1 Устройство отладочной платы ATTINY2313
Источники тактовой частоты
Для работы любого микроконтроллера его необходимо обеспечить стабильным источником тактовых импульсов. Для микроконтроллеров фирмы Atmel возможно несколько вариантов.
Воспользоваться внутренним генератором на RC-цепочке;
В качестве источника тактовых импульсов может выступать внешний кварцевый резонатор (или керамический). Максимальная поддерживаемая частота – 16 МГц (помним, что энергопотребление микроконтроллера возрастает с увеличением рабочей частоты, причём значительно). Для подключения внешнего кварцевого резонатора используются специальные выводы – XTAL1 и XTAL2, также для подключения необходимо использовать дополнительные конденсаторы емкостью в 15 – 30 пФ, в зависимости от частоты. Пример подключения кварцевого резонатора приведен на рис. 2.
Рисунок 2 Схемы тактирования микроконтроллера
Вариант, нетребовательный к точности задаваемой системной частоты – воспользоваться вместо резонатора обычной RC-цепочкой, при этом для её подключения используются те же самые выводы, что и в предыдущем случае.
Емкость конденсатора RC-цепочки должна быть не ниже 22пФ. Также, с помощью фьюз-бита CKOPT мы можем подключить между выводом XTAL1 и землёй внутренний конденсатор емкостью 36 пФ, что позволяет избавиться от внешнего конденсатора.
Последний вариант – использование внешнего генератора: подключаем выход генератора к выводу XTAL1. Подобный способ тактирования микроконтроллера обеспечивает максимальную точность, единственный недостаток – подобные генераторы имеют достаточно высокую стоимость.
С помощью такого кварца можно с высокой точностью отсчитывать секундные интервалы. Для подключения часового кварца используются отдельные выводы TOSC1 и TOSC2, причём использование дополнительных внешних конденсаторов не требуется (рис. 3).
Рисунок 3 Альтернативные схемы тактирования микроконтроллера
Управляющие регистры таймера
Основными управляющими регистрами являются регистры TCCRxn (Timer/Counter Control Register, для микроконтроллера AtTiny2313 предусмотрено три управляющих регистра – TCCR0A, TCCR0B и TCCR0C, которые определяет режим работы таймера и значение коэффициента предделителя.
Значение предделителя можно изменить в регистре TCCR1B, за него отвечают три бита: CS12:CS11:CS10 (Clock Select), которые как раз и определяют коэффициент деления тактовых импульсов микроконтроллера.
Рисунок 4 регистр TCCR1B
Здесь возможны следующие варианты (табл. 1).
Таблица 1 Биты, определяющие значение предделителя таймера
CS02 |
CS01 |
CS01 |
Описание |
0 |
0 |
0 |
Нет источника импульсов (Таймер остановлен) |
0 |
0 |
1 |
clkIO/1 (No prescaling) |
0 |
1 |
0 |
clkIO/8 (From prescaler) |
0 |
1 |
1 |
clkIO/64 (From prescaler) |
1 |
0 |
0 |
clkIO/256 (From prescaler) |
1 |
0 |
1 |
clkIO/1024 (From prescaler) |
1 |
1 |
0 |
External clock source on T1. Clock on falling edge. |
1 |
1 |
1 |
External clock source on T1. Clock on rising edge. |
Режим работы таймера T1 определяется состоянием четырех битов WGM10…WGM13, которые находятся в двух разных управляющих регистрах TCCR1A и TCCR1B (что в целом не очень удобно).
Рисунок 5 регистры TCCR1A и TCCR1B
Зависимость режима работы таймера от состояния этих разрядов показана в табл. 2.
Таблица 2 Режимы работы таймера
№ |
WGM1 [3:0] |
Режим работы таймера |
TOP |
Обновление бита OCR1x |
Установка прерыв. TOV1 |
0 |
0000 |
Normal |
0xFFFF |
Immediate |
MAX |
1 |
0001 |
PWM, Phase Correct, 8-bit |
0x00FF |
TOP |
BOTTOM |
2 |
0010 |
PWM, Phase Correct, 9-bit |
0x01FF |
TOP |
BOTTOM |
3 |
0011 |
PWM, Phase Correct, 10-bit |
0x03FF |
TOP |
BOTTOM |
4 |
0100 |
CTC (Clear Timer on Compare) |
OCR0A |
Immediate |
MAX |
5 |
0101 |
Fast PWM, 8-bit |
0x00FF |
TOP |
TOP |
6 |
0110 |
Fast PWM, 9-bit |
0x01FF |
TOP |
TOP |
7 |
0111 |
Fast PWM, 10-bit |
0x03FF |
TOP |
TOP |
8 |
1000 |
PWM, Phase and Frequency Correct |
ICR0 |
BOTTOM |
BOTTOM |
9 |
1001 |
PWM, Phase and Frequency Correct |
OCR0A |
BOTTOM |
BOTTOM |
10 |
1010 |
PWM, Phase Correct |
ICR0 |
TOP |
BOTTOM |
11 |
1011 |
PWM, Phase Correct |
OCR0A |
TOP |
BOTTOM |
12 |
1100 |
CTC (Clear Timer on Compare) |
ICR0 |
Immediate |
MAX |
13 |
1101 |
Reserved |
- |
- |
- |
14 |
1110 |
Fast PWM |
ICR0 |
TOP |
TOP |
15 |
1111 |
Fast PWM |
OCR0A |
TOP |
TOP |
Режим Normal. Это наиболее простой режим работы таймеров, он же единственный режим в младших моделях семейства. В этом режиме счетный регистр функционирует как обычный суммирующий счетчик. По каждому импульсу тактового сигнала осуществляется инкремент счетного регистра. При переходе через значение $FF возникает переполнение, и счет продолжается со значения $00. В том же такте сигнала, в котором обнуляется регистр TCNTn, устанавливается в «1» флаг переполнения счетного регистра TOVn (Timer Overflow).