- •«Инструментальные средства разработки аппаратно-программных систем»
- •Оглавление
- •7 Инструментальные средства разработки систем управления на
- •Введение. Управляющие системы на микроконтроллерах.
- •Характеристика микроконтроллеров семейства avr
- •1.1 Особенности микроконтроллеров
- •1.2 Характеристики микроконтроллера aTмega16
- •1.3 Условное графическое обозначение микроконтроллера
- •2 Архитектура микроконтроллера
- •2.1 Структура микроконтроллера
- •2.2 Организация программной памяти
- •Организация памяти данных
- •2.4 Арифметико-логическое устройство и регистр состояния процессора
- •Методы адресации. Форматы команд
- •Система команд
- •2.6.1 Команды передачи данных (пересылки)
- •2.6.2 Команды передачи управления
- •2.6.3 Команды арифметики и логики (вычислительные)
- •2.6.4 Команды сдвигов и операций с битами
- •2.7 Функционирование конвейера
- •3 Встроенные устройства
- •3. 1 Параллельные порты ввода/вывода
- •Подсистема прерываний микроконтроллера
- •Регистр флагов прерываний таймеров/счетчиков – tifr
- •Таймеры/счетчики
- •Общие сведения
- •Таймер/счетчик т0.
- •3.3.3 Таймер/счетчик т1.
- •Сторожевой таймер (Watchdog Timer).
- •3.4 Последовательные интерфейсы -spi и uart
- •3.4.1 Последовательный периферийный интерфейс - spi
- •3.4.2 Uart - универсальный последовательный порт
- •3.5 Аналоговый компаратор и ацп
- •3.5.1 Аналоговый компаратор
- •3.5.2 Аналого-цифровой преобразователь
- •3.6 Энергонезависимая память данных
- •4 Ассемблер микроконтроллеров avr
- •5 Взаимодействие микроконтроллера с объектом управления
- •5.1 Формирование временных интервалов (задержек)
- •5.1.1 Программный способ формирования временных интервалов
- •Ext_l: ldi r17, X ;х – число внутренних циклов
- •Ext_l: ldi r17, 53 ;Загрузка в r17 константы внутреннего цикла
- •5.2 Генерация импульсных сигналов управления с использованием программных задержек
- •5.2.1 Генерация последовательности импульсов с использованием программных задержек
- •5.2.2 Генерация пакета импульсов
- •5.2.3 Генератор заданного числа пакетов импульсов
- •Формирование импульсных сигналов управления с использованием таймеров микроконтроллера
- •5.4 Ожидание внешних событий
- •5.5 Обработка динамического дисплея
- •5.6 Особенности схемы дисплея в учебной системе управления.
- •5.7 Часы
- •5.8 Измерение временных параметров импульсов
- •5.9 Обработка клавиатуры
- •6 Программирование микроконтроллеров aТmega16
- •7 Инструментальные средства разработки сисТем управления на микроконтроллерах aTmega16
- •Дубров ф.И. Встроенные системы управления на микроконтроллере aTmega16
3.5.2 Аналого-цифровой преобразователь
Микроконтроллер оснащен 10-разрядным АЦП последовательного приближения. Блок АЦП включает: 8-канальный аналоговый мультиплексор, позволяющий использовать любой вывод порта А в качестве входа АЦП во время преобразования. Основные характеристики встроенного блока АЦП:
Разрешение 10 разрядов
Точность ±2 единицы младшего разряда
Время преобразования 70...280 мксек
8 мультиплексируемых входных каналов
Режимы однократного и непрерывного преобразования
Прерывание по завершению ADC преобразования
Быстродействие 15000 выборок в секунду
Режим подавления шумов в режиме Sleep.
В АЦП используется метод последовательных приближений. В состав АЦП входят основные блоки: регистр последовательных приближений, 10-разрядный цифроаналоговый преобразователь (ЦАП), аналоговый компаратор и устройство выборки/хранения (УВХ).
В устройстве выборки/хранения Рис.46 значение входного аналогового сигнала запоминается и сохраняется постоянным на время преобразования. При замыкании ключа S1 конденсатор заряжается до напряжения входного сигнала. После этого ключ размыкается и производится преобразование. После окончания преобразования замыкается ключ S2 и происходит разряд конденсатора. Далее процесс повторяется. Дискретные напряжения на конденсаторе называются выборками (дискретами или отсчетами) аналогового сигнала.
Рисунок 46
Работа АЦП в четырехразрядном варианте при величине входного напряжения 11,9 единиц (Рис.47) Первым тактовым импульсом в регистре последовательных приближений устанавливается код 1000. Он поступает на входы ЦАП, на выходе которого устанавливается образцовое напряжение 8 единиц. В компараторе производится сравнение входного напряженияUвх с 8. Так как Uвх>8, то на выходе компаратора уровень логического нуля и старший разряд регистра остается в предыдущем состоянии. В следующем такте в регистре устанавливается в единицу следующий разряд и его выходной код равен1100. На выходе ЦАП устанавливается напряжение 12 единиц.
Рисунок 47
Так как Uвх<12, то на выходе компаратора уровень логической единицы, которым сбрасывается установленный разряд регистра. В третьем такте устанавливается следующий разряд регистра, т.е. код в регистре будет 1010. На выходе ЦАП устанавливается напряжение равное 10. Так как Uвх>10, то на выходе компаратора уровень логического нуля и разряд регистра остается в установленном состоянии. В четвертом такте устанавливается в единицу последний разряд регистр. В регистре будет код 1011. Так как он меньше чем 11,9, то на выходе компаратора уровень нуля и разряд регистра остается в установленном состоянии. Таким образом, выходной код равен 1011,т.е. примерно 11,9 и он помещается в регистр результата ADC.
Абсолютная погрешность равна одной единице младшего разряда кода. Очевидно, что для уменьшения погрешности преобразования необходимо увеличить разрядность АЦП.
ЦАП представляет собой матрицу прецизионных резисторов (делитель напряжения) с ключами их коммутации. Функция ЦАП заключается в формировании эталонных напряжений, соответствующих весовым коэффициентам входного двоичного кода: 512,256,…2,1. Питание делителя производится от источника образцового напряжения (ИОН). В качестве ИОН может быть выбран либо встроенный источник напряжением 2,56В, либо внешний источник, подключенный к выводу AREF микроконтроллера, либо напряжение питания АЦП (вывод AVCC микроконтроллера). При использовании встроенного источника напряжение, соответствующее младшему разряду кода АЦП, равно 2,56В/1024=2,5мВ.
Входные аналоговые напряжения подаются на входы портаА (через PINы) микроконтроллера (Рис.48). К этим разрядам подключен аналоговый мультиплексор, с помощью которого производится подключение соответствующего внешнего напряжения непосредственно к АЦП. Возможна оцифровка как входных напряжений с каждого входа, которые поступают через аналоговый мультиплексор MUX(+) так и разности напряжений между одним из входов ADC0 – ADC2, выбранных мультиплексором MUX(-) и одним из входов ADC0 – ADC7, выбранных мультиплексором MUX(+). Напряжения с выбранных входов поступают на входы предварительного дифференциального усилителя с программированным коэффициентом усиления. Входное напряжение, либо разность напряжений подается на вход схемы выборки-хранения и компаратора АЦП.
АЦП имеет режимы: непрерывного и одиночного преобразования. Режим одиночного преобразования может быть произведен программно (установкой бита запуска АЦП), а также по прерыванию от некоторых устройств (со входа INT0, по переполнению Т0 и Т1 и др.). В режиме непрерывного преобразования новый цикл преобразования начинается после записи результата в регистр ADC.
Длительность цикла преобразования составляет 13-14 тактов. Выборка и запоминание аналогового сигнала производится за 1,5-2,5 тактов. После завершения преобразования устанавливается флаг “преобразование завершено” и может быть вызвана подпрограмма обработки соответствующего прерывания.
Для формирования тактовой частоты АЦП используется делитель тактовой частоты микроконтроллера. Наивысшая точность преобразования достигается, если тактовая частота АЦП находится в пределах 50 – 200 кГц. Если точность преобразования меньше чем 10 разрядов достаточна, то можно использовать более высокую частоту и отбрасывать младшие разряды кода результата.
Выходной код АЦП помещается в регистр результата ADC, физически размещенный в двух 8-разрядных регистрах ADCH и ADCL. Возможны два варианта размещения результата. При выравнивании вправо 8 младших разрядов кода помещаются в регистр ADCL, а два старших разряда кода помещаются в два младших разряда регистра ADCH. При выравнивании влево 8 старших разрядов кода помещаются в регистр ADCН, а два младших разряда кода помещаются в два старших разряда регистра ADCL. Должна соблюдаться
Рисунок 48
последовательность считывания результата: сначала должно считываться содержимое регистра ADCL, а затем ADCH.
В блоке АЦП для управления используются регистры ADCSRA,ADCSRB,ADMUX и четыре разряда регистра специальных функций SFIOR.
Формат регистра ADCSRA и описание его разрядов представлены на рис.49 и в таблицах 30 и 31.
Структурная схема модуля АЦП представлена на рис. 48.
Формат регистра ADCSRA и функции его разрядов представлены на рис.49 и в таблицах 30 и 31.
7 6 5 4 3 2 1 0
ADEN |
ADSC |
ADATE |
ADIF |
ADIE |
ADPS2 |
ADPS1 |
ADPS0 |
Рисунок 49
Таблица 30
Разряд |
Имя |
Описание |
7 |
ADEN |
Включение АЦП, 0- АЦП выключен |
6 |
ADSC |
Запуск преобразования одиночного или первого |
5 |
ADATE |
Режим работы, 0- одиночное преобразование, 1-непрер. |
4 |
ADIF |
Флаг прерывания по окончанию преобразования |
3 |
ADIE |
Разрешение прерывания по завершению преобразования. |
2-0 |
ADPS2-ADPS0 |
Выбор частоты преобразования (тактовой) |
Таблица 31
ADPS2 – ADPS1 |
Коэффициент деления делителя |
000 |
2 |
001 |
2 |
010 |
4 |
011 |
8 |
100 |
16 |
101 |
32 |
110 |
64 |
111 |
128 |
Формат регистра ADMUX и описание его разрядов представлены на рис.50 и в таблицах 32 - 35.
7 6 5 4 3 2 1 0
RES1 |
REFS0 |
ADLAR |
MUX4 |
MUX3 |
MUX2 |
MUX1 |
MUX0 |
Рисунок 50
Таблица 32
Разряд |
Имя разряда |
Описание |
7,6 |
REFS1- REFS0 |
Выбор источника образцового напряжения |
5 |
ADLAR |
Выравнивание результата преобразования |
3 – 4 |
MUX3 - 4 |
Выбор входного канала |
2 - 0 |
MUX2-0 |
Выбор входного канала |
Таблица 33
REFS1- REFS2 |
Источник образцового напряжения |
00 |
Внешний ИОН,внутрений ИОН 2.56В отключен |
01 |
Напряжение питания AVCC |
10 |
- |
11 |
Внутрений ИОН 2,56В |
ADLAR = 0 – выравнивание результата влево.
Управление входными мультиплексорами производится разрядами MUX4 – MUX0. При указанных в таблице 34 комбинациях производится измерение напряжения с выбранного входа порта А. При комбинациях, указанных в таблице 35 производится измерение разности напряжений между входами, с соответствующим усилением разности напряжений.
Таблица 34
MUX4 – MUX0 |
Подключение к АЦП напряжения с входа МК |
00000 |
ADC0 |
00001 |
ADC1 |
00010 |
ADC2 |
00011 |
ADC3 |
00100 |
ADC4 |
00101 |
ADC5 |
00110 |
ADC6 |
00111 |
ADC7 |
11110 |
1,22Вольт от внутреннего источника |
11111 |
0 Вольт |
Если АЦП работает в режиме однократного преобразования, то каждое преобразование должно инициировано пользователем. Работа АЦП разрешается установкой бита ADEN в регистре ADCSR. Первому преобразованию после разрешения АЦП предшествует пустое стартовое преобразование. Для пользователя это означает, что первое преобразование будет занимать на 13 циклов больше, чем обычно.
Таблица 35
MUX4 – MUX0 |
Дифференциальный вход |
Предварительное усиление входного напряжения |
|
Положительный + |
Отрицательный |
||
01000 |
ADC0 |
ADC0 |
10 |
01001 |
ADC1 |
ADC0 |
10 |
01010 |
ADC0 |
ADC0 |
200 |
01011 |
ADC1 |
ADC0 |
200 |
01100 |
ADC2 |
ADC2 |
10 |
01101 |
ADC3 |
ADC2 |
10 |
01110 |
ADC2 |
ADC2 |
200 |
01111 |
ADC3 |
ADC2 |
200 |
10000 |
ADC0 |
ADC1 |
1 |
10001 |
ADC1 |
ADC1 |
1 |
10010 |
ADC2 |
ADC1 |
1 |
10011 |
ADC3 |
ADC1 |
1 |
10100 |
ADC4 |
ADC1 |
1 |
10101 |
ADC5 |
ADC1 |
1 |
10110 |
ADC6 |
ADC1 |
1 |
10111 |
ADC7 |
ADC1 |
1 |
11000 |
ADC0 |
ADC2 |
1 |
11001 |
ADC1 |
ADC2 |
1 |
11010 |
ADC2 |
ADC2 |
1 |
11011 |
ADC3 |
ADC2 |
1 |
11100 |
ADC4 |
ADC2 |
1 |
11101 |
ADC5 |
ADC2 |
1 |
Формат регистра SFIOR
ADTS2 |
ADTS1 |
ADTS0 |
ADHSM |
- |
- |
- |
- |
Рисунок 51
Таблица 36
ADTS2-ADTS0 |
Источник запуска АЦП |
000 |
Режим непрерывного преобразования |
001 |
Прерывание от аналогового компаратора |
010 |
Внешнее прерывание INT0 |
011 |
Прерывание по совпадению Т0 |
100 |
Прерывание по переполнению Т0 |
101 |
Прерывание по совпадению в канале В таймера Т1 |
110 |
Прерывание по переполнению Т1 |
111 |
Прерывание по захвату Т1 |
Преобразование инициируется записью логической единицы в бит ADSC. Этот бит остается установленным все время преобразования и сбрасывается аппаратно, когда преобразование завершено. Если во время преобразования производится смена выбранного канала, АЦП завершит текущее преобразование перед переходом на новое преобразование.
Преобразование может быть запущено по любому событию, представленному в таблице 36. Событие задается разрядами регистра SFIOR.
При запуске АЦП установкой бита ADSC преобразование начинается по заднему фронту импульса синхросигнала АЦП. Один такт синхросигнала требуется на выборку-сохранение значения аналогового сигнала, после чего 13 тактов затрачивается на собственно преобразование и запись результата в регистры ADCL, ADCH. Далее перед новым преобразованием блоку АЦП необходим еще интервал в 2 такта, но если бит ADSC установлен, преобразование начнется немедленно.
Подавление шума АЦП. Блок АЦП включает схему подавления шума, которая разрешает преобразование в режиме Idle, что позволяет снизить шумы, создаваемые процессором.
Для реализации этой функции необходимо выполнить следующее:
Отключить АЦП очисткой бита ADEN.
Включить АЦП и одновременно запустить преобразование установкой битов ADEN и ADSC. Таким образом запускается пустое преобразование, за которым последует рабочее преобразование.
В течение 14 тактов АЦП-преобразования ввести Idle режим.
Если до завершения рабочего преобразования не произойдет другого прерывания, то прерывание АЦП активирует процессор и будет выполнена его процедура обслуживания.