Оглавление |
|
|
1, Таймеры-счётчики. Источники тактовой частоты. Регистры, определяющие работу |
|
|
таймера. Предделитель таймера. Основные режимы работы таймера: стандартный |
|
|
счётный режим (Normal), режим сброса при совпадении. Источники прерываний таймера..... |
1 |
|
2. |
Управляющие регистры таймера ............................................................................................ |
2 |
3. |
Прерывания таймера ............................................................................................................... |
4 |
2. Широтно-импульсная модуляция. Понятие широтно-импульсной модуляции. Различные |
|
|
режимы широтно-импульсной модуляции. Режим быстрый ШИМ (Fast PWM). ШИМ без |
|
|
фазового сдвига (Phase Correct PWM).................................................................................................... |
4 |
|
3. Цифро-аналоговые преобразователи. Структурная схема ЦАП. Параллельная схема |
|
|
суммирования токов. Последовательная схема суммирования токов........................................ |
10 |
|
4. Аналого-цифровые преобразователи. АЦП параллельного преобразования (параллельные |
||
АЦП). АЦП последовательного приближения. Интегрирующие АЦП. Сигма-дельта АЦП. |
|
|
Схемы и принцип работы, основные преимущества и недостатки............................................. |
12 |
|
5. Структурная схема встроенного аналого-цифрового преобразователя, его основные |
|
|
параметры. Настройка АЦП, управляющие регистры. Прерывания по завершению цикла |
|
|
преобразования...................................................................................................................................... |
26 |
|
6, Передача данных с использованием асинхронного последовательного интерфейса UART. |
|
|
Общая структура асинхронного приёмопередатчика. Протокол передачи данных RS-232. |
|
|
Настройка и программирование интерфейса UART. Скорость передачи данных. ..................... |
32 |
1, Таймеры-счётчики. Источники тактовой частоты. Регистры, определяющие работу таймера. Предделитель таймера. Основные режимы работы таймера: стандартный счётный режим (Normal), режим сброса при совпадении. Источники прерываний таймера.
1. Источники тактовой частоты
Для работы любого микроконтроллера его необходимо обеспечить стабильным источником тактовых импульсов. Для микроконтроллеров фирмы Atmel возможно несколько вариантов.
•Воспользоваться внутренним генератором на RC-цепочке;
•В качестве источника тактовых импульсов может выступать внешний кварцевый резонатор (или керамический). Максимальная поддерживаемая частота – 16 МГц (помним, что энергопотребление микроконтроллера возрастает с увеличением рабочей частоты, причём значительно). Для подключения внешнего кварцевого резонатора используются специальные выводы – XTAL1 и XTAL2, также для подключения необходимо использовать дополнительные конденсаторы емкостью в 15 – 30 пФ, в зависимости от частоты. Пример подключения кварцевого резонатора приведен на рис. 2.
1
Рисунок 2 − Схемы тактирования микроконтроллера
•Вариант, нетребовательный к точности задаваемой системной частоты – воспользоваться вместо резонатора обычной RC-цепочкой, при этом для её подключения используются те же самые выводы, что и в предыдущем случае.
Емкость конденсатора RC-цепочки должна быть не ниже 22пФ. Также, с помощью фьюзбита CKOPT мы можем подключить между выводом XTAL1 и землёй внутренний конденсатор емкостью 36 пФ, что позволяет избавиться от внешнего конденсатора.
•Последний вариант – использование внешнего генератора: подключаем выход генератора к выводу XTAL1. Подобный способ тактирования микроконтроллера обеспечивает максимальную точность, единственный недостаток – подобные генераторы имеют достаточно высокую стоимость.
С помощью такого кварца можно с высокой точностью отсчитывать секундные интервалы. Для подключения часового кварца используются отдельные выводы TOSC1 и TOSC2, причём использование дополнительных внешних конденсаторов не требуется (рис. 3).
Рисунок 3 − Альтернативные схемы тактирования микроконтроллера
2. Управляющие регистры таймера
Основными управляющими регистрами являются регистры TCCRxn (Timer/Counter Control Register, для микроконтроллера AtTiny2313 предусмотрено три управляющих регистра – TCCR0A, TCCR0B и TCCR0C, которые определяют режим работы таймера и значение коэффициента предделителя.
Значение предделителя можно изменить в регистре TCCR1B, за него отвечают три бита: CS12:CS11:CS10 (Clock Select), которые как раз и определяют коэффициент деления тактовых импульсов микроконтроллера.
Рисунок 4 − регистр TCCR1B
2
Здесь возможны следующие варианты (табл. 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 |
Режим работы таймера |
TOP |
Обновление |
Установка |
|
[3:0] |
|
|
бита 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 |
ICR0 |
BOTTOM |
BOTTOM |
|
|
Correct |
|
|
|
|
|
|
|
|
|
9 |
1001 |
PWM, Phase and Frequency |
OCR0A |
BOTTOM |
BOTTOM |
|
|
Correct |
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
3 |
|
|
Режим Normal. Это наиболее простой режим работы таймеров, он же единственный режим в младших моделях семейства. В этом режиме счетный регистр функционирует как обычный суммирующий счетчик. По каждому импульсу тактового сигнала осуществляется инкремент счетного регистра. При переходе через значение $FF возникает переполнение, и счет продолжается со значения $00. В том же такте сигнала, в котором обнуляется регистр TCNTn, устанавливается в «1» флаг переполнения счетного регистра TOVn (Timer Overflow).
3. Прерывания таймера |
|
|
|
|
За прерывания от |
таймеров |
отвечают |
регистры |
TIMSK |
(Timer/Counter Interrupt Mask) и TIFR (Timer/Counter Interrupt Flag Register).
TIMSK – это регистр масок, биты, находящиеся в нем, локально разрешают прерывания. Если бит установлен, значит конкретное прерывание разрешено. Если бит сброшен в ноль, значит данное прерывание запрещено. По умолчанию после системного сброса все биты регистра TIMSK сброшены в ноль.
Рисунок 6 − регистр TIMSK
Описание разрядов регистра TIMSK для используемого контроллера приведено в табл. 3. Таблица 2 − Прерывания таймера T1
Название |
Описание источника прерывания |
|
TOIE1 |
Флаг по переполнению таймера |
|
|
|
|
OCIE1A |
Флаг по событию «Совпадение A» таймера |
|
|
|
|
OCIE1B |
Флаг по событию «Совпадение B» таймера |
|
|
|
|
ICIE1 |
Флаг по событию «Захват» таймера |
|
|
|
Наиболее интересующее нас на данный момент прерывание – TOIE1, т. е. прерывание по переполнению таймера. Задавая коэффициент предделителя таймера и используя данное прерывание, мы можем с достаточно большой точностью отсчитывать необходимые нам временные интервалы.
2. Широтно-импульсная модуляция. Понятие широтно-импульсной модуляции. Различные режимы широтно-импульсной модуляции. Режим быстрый ШИМ (Fast PWM). ШИМ без фазового сдвига (Phase Correct PWM).
Понятие широтно-импульсной модуляции.
Широтно-импульсная модуляция (Pulse-width modulation, PWM) – приближение желаемого сигнала (многоуровневого или непрерывного) к действительным бинарным сигналам с двумя
4
фиксированными уровнями – ноль или единица, так чтобы их значения за некоторый промежуток времени в среднем были равны. Формально этот процесс можно записать в следующем виде:
2
∫ ( ) = ∑ ∙ ∆
1
где ( ) – желаемый входной сигнал в пределе от 1 до 2, ∆ – продолжительность i -го ШИМ-импульса с амплитудой A; ∆ подбирается таким образом, чтобы суммарные площади (энергии) обеих величин были приблизительно равны за достаточно продолжительный промежуток времени.
ШИМ это простой и эффективный способ задания аналогового сигнала цифровым методом, что даёт нам возможность сделать простое подобие цифро-аналогового преобразователя, который не входит в состав периферии восьмибитных AVR микроконтроллеров, за исключением семейства
XMega.
В аналоговом варианте преобразование синусоидального сигнала в ШИМпоследовательность и обратно схематически выглядит следующим образом: на один из входов компаратора подается исследуемый аналоговый сигнал Uвх, на другой – сигнал опорной частоты Fоп, имеющий треугольную форму (рис. 2). При совпадении уровней двух сигналов на входах компаратора его выход переключается, формируя в результате последовательность, состоящую из прямоугольных импульсов с несущей частотой Fоп, в длительности которых закодирован уровень исходного аналогового сигнала (т. е. его амплитуда). Если далее требуется получить исходный аналоговый сигнал, эту последовательность необходимо пропустить через фильтр нижних частот, чтобы отфильтровать опорную частоту и получить исходную синусоиду. В приведённом примере в качестве фильтра нижних частот используется обычная интегрирующая RC-цепочка (для получения более точных результатов преобразования необходимо использовать фильтр более высокого порядка, желательно на операционных усилителях).
Рисунок 1 – Принцип работы ШИМ-преобразователя
При использовании ШИМ мы передаём на выход сигнал, состоящий из высоких и низких логических уровней, то есть нулей и единиц. Затем эта последовательность пропускается через интегрирующую цепочку. В результате интегрирования на выходе будет величина напряжения, равная площади под импульсами.
Меня скважность сигнала (т. е. отношение длительности периода к длительности импульса) ШИМ-последовательности, можно плавно менять эту площадь, а значит и напряжение на выходе (рис. 2).
5
Рисунок 2 – Принцип ШИМ-преобразования |
Рисунок 3 – Формирование ШИМ-сигнала |
|
в режиме быстрой модуляции |
Рассмотрим рисунок ниже:
Опорное напряжение – пилообразной формы (TCNTn)
Модулирующее (задающее) – постоянное напряжение определенной амплитуды (OCRn)
У таймера есть особый регистр сравнения OCR**. Когда значение в счётном регистре таймера достигнает значения находящегося в регистре сравнения, то могут возникнуть следующие аппаратные события:
•Прерывание по совпадению
•Изменение состояния внешнего выхода сравнения OC**
Проецируя соответсвующие сигналы на другую координатную плоскость получим следующую картину: При пересечении опорного и задающего напряжения возникает положительный импульс (верхняя полочка). Когда опорное ниже задающего – пауза. Напряжение на выводах МК имеет прямоугольного импульса. Для регулирования ширины столбцов меняют задающее напряжение. Надо снизить среднее напряжение? Повышаем задающее Среднее напряжение на нагрузке влечет изменение мощности
чЕм дольше импульс, тем больше его площадь при интегрировании, значит больше амплитуда выходного сигнала на выходе ЦАП
6
Режим Fast PWM
Вэтом режиме таймер микроконтроллера считает от нуля до 255, после достижения переполнения счетный регистр сбрасывается в ноль, и счет начинается снова (рис. 1). Когда значение в счетчике достигает значения, записанного заранее в регистр сравнения, то соответствующий ему вывод ОСхn сбрасывается в ноль. При обнулении счетчика этот вывод устанавливается в единицу.
Вобщем случае частота шим на выходе ОСхn микроконтроллера в режиме быстрой модуляции составляет:
|
1 |
|
|
|
|
|
шим = |
|
= |
|
= |
|
|
шим |
∙ ( + 1) |
( + 1) |
||||
|
|
|
– Частота мк
– Коэффициент предделителя
– тактовая частота таймера, полученная путем деления тактовой частоты нашего МК на коэффициент деления N, задаваемый с помощью соответствующих разрядов регистра управления
TCCRnB.
– разрядность ШИМ (или топовое значение, до котрого считает таймер? (с) тема)
Пример:
Частота получившегося ШИМ сигнала определяется просто: Частота процессора 8Мгц, таймер тикает до 256 с тактовой частотой. Значит один период ШИМ будет равен 8000 000/256 = 31250Гц.
Еще есть возможность повысить разрешение, сделав счет 8, 9, 10 разрядным (если разрядность таймера позволяет), но надо учитывать, что повышение разрядности, вместе с повышением дискретности выходного аналогового сигнала, резко снижает частоту ШИМ.
Как это выглядит на практике
У таймера T1 есть два особых регистра сравнения OCR1A и OCR1B. Когда значение в счётном регистре таймера достигает значения, находящегося в регистре сравнения, то могут возникнуть следующие аппаратные события:
7
•Прерывание по совпадению
•Изменение состояния внешнего выхода сравнения OC1A или OC1B (обведены красным на схеме расположения выводов AtTiny2313, рис. 5).
Рисунок 4 – Расположение выходов сравнения, работающими с ШИМ
Пусть мы настроили наш ШИМ генератор таким образом, чтобы в момент времени, когда значение в счетном регистре TCNT1 больше, чем в регистре сравнения, то на выходе у нас была логическая единица, а когда меньше, то ноль.
При этом таймер будет считать, как ему и положено, от нуля до 255, с той частотой, которую мы настроим при помощи системы предделителя.
После переполнения таймер сбрасывается в ноль и счёт продолжается заново.
На выходе имеем прямоугольные импульсы. Если мы попробуем увеличить значение в регистре сравнения, то ширина импульсов станет уже (рис. 3).
Рисунок 5 – Изменение ширины импульсов
Phase Correct PWM
ШИМ с корректной (или точной) фазой. В данном случае шестнадцатиразрядный счетчик работает как реверсивный. При этом он непрерывно считает сначала от нуля до максимального значения модуля счета (который определяется либо заданной разрядностью, либо содержимым режима захвата), затем обратно до нуля. При достижении нуля счет опять начинается в сторону увеличения, далее цикл повторяется. Вывод OCxn при первом совпадении сбрасывается в ноль, при втором устанавливается обратно в единицу (рис. 1). Частота ШИМ при этом падает вдвое вследствие увеличения периода.
8
Рисунок 6 – Сравнение режимов работы ШИМ
Рассмотрим поподробнее регистры, ответственные за реализацию различных режимов ШИМ (табл. 1). Регистр TCCR0A – биты COM0A1:COM0A0 и COM0B1:COM0B0 определяют поведение выводов сравнения OC0A и OC0B соответственно.
|
|
Таблица 1. Режимы работы вывода Ocnx |
|
|
|
COMnx1 |
COMnx0 |
Режим работы вывода Ocnx |
|
|
|
0 |
0 |
Вывод не подсоединен к регистру сравнения |
|
|
|
0 |
1 |
Поведение вывода зависит от режима, заданного в WGM |
|
|
|
10 Прямой ШИМ (сброс при совпадении и установка при обнулении счета)
1 |
1 |
Инверсный ШИМ (сброс при обнулении и установка при совпадении) |
|
|
|
Регистр TCCR0A – биты WGM01 и WGM00 (совместно с битами WGM02 и WGM03, которые находятся в регистре TCCR0B) задают режим работы генератора (табл. 2).
Таблица 2. Задание режимов работы ШИМ
WGMn3 |
WGMn2 |
WGMn1 |
WGMn0 |
Режим работы |
TOP |
|
|
|
|
|
|
0 |
1 |
0 |
1 |
Fast PWM, 8 бит |
0x00FF |
|
|
|
|
|
|
0 |
1 |
1 |
0 |
Fast PWM, 9 бит |
0x01FF |
|
|
|
|
|
|
0 |
1 |
1 |
1 |
Fast PWM, 10 бит |
0x03FF |
|
|
|
|
|
|
9
3. Цифро-аналоговые преобразователи. Структурная схема ЦАП. Параллельная схема суммирования токов. Последовательная схема суммирования токов.
Микросхемы ЦАП классифицируются по следующим признакам:
•По виду выходного сигнала: с токовым выходом и выходом в виде напряжения
•По типу цифрового интерфейса: с последовательным вводом и с параллельным вводом входного кода
•По числу ЦАП на кристалле: одноканальные и многоканальные
•По быстродействию: стандартные и высокого быстродействия
Рисунок 1 – Структурная схема ЦАП
Рисунок 2 – Параллельная схема суммирования токов
10