Микропроцессоры и микроконтроллеры

 
 
 
«Отладка кода вдвое сложнее, чем его написание. Так что если вы пишете код настолько умно, насколько можете, то вы по определению недостаточно сообразительны, чтобы его отлаживать.»
Brian W. Kernighan.
Русский | Українська


Микропроцессоры и микроконтроллеры :: RISC-микроконтроллеры семейства AVR :: Аналого-цифровой преобразователь в составе микроконтроллера

Аналого-цифровой преобразователь в составе микроконтроллера

Структура и управление АЦП

Микроконтроллеры ATmega16 оснащены 10-разрядным АЦП последовательного приближения. Основные параметры этого модуля следующие:

·        абсолютная погрешность: ±2 МЗР;

·        интегральная нелинейность: ±0.5 МЗР;

·        быстродействие до 15 тыс. выборок/с.

На входе модуля АЦП всех моделей имеется 8-канальный аналоговый мультиплексор, предоставляющий в распоряжение пользователя 8 каналов с несимметричными входами.

В модели ATmega16 входы АЦП могут также объединяться попарно для формирования в общей сложности до 13 каналов с дифференциальным входом. Два канала при этом имеют возможность 20 - и 200-кратного предварительного усиления входного сигнала. При коэффициентах усиления 1х и 20х действительная разрешающая способность – 8 разрядов, а при коэффициенте 200х – 7 разрядов.

В качестве источника опорного напряжения для АЦП может использоваться как напряжение питания микроконтроллера, так и внутренний либо внешний источник напряжения.

АЦП может функционировать в двух режимах:

·        режим одиночного преобразования, когда запуск каждого преобразования инициируется пользователем;

·        режим непрерывного преобразования, когда выполняется непрерывно через определенные интервалы времени.

Для управления модулем АЦП в микроконтроллере ATmega16 предусмотрены следующие регистры (табл. 28.2):

Таблица 28.2

Структура регистров управления модулем АЦП

Бит

Название

Описание назначения

ADCSR – регистр управления и состояния

7

ADEN

Разрешение АЦП (1 – включено, 0 – выключено)

6

ADSC

Запуск преобразования АЦП (1 – начать преобразование, запись 0 в этот бит эффекта не оказывает.)

5

ADATE

Выбор режима работы АЦП (0 – одиночный режим, 1 – циклический режим или запуск от прерывания)

4

ADIF

Флаг прерывания АЦП (Устанавливается в 1 по завершению цикла преобразования).

3

ADIE

Разрешение прерывания АЦП (При установленных в состояние 1 бите ADIE и бите I регистра SREG возникает прерывание по завершению преобразования).

2…0

ADPS2..ADPS0

Задание коэффициента деления тактовой частоты микроконтроллера для получения тактовой частоты АЦП

 

Окончание табл. 28.2

Бит

Название

Описание назначения

ADMUX– Регистр выбора мультиплексора АЦП

7,6

REFS1, REFS0

Выбор источника опорного напряжения
(в таблице биты обозначены как S1 и S0)

S1

S0

Источник опорного напряжения

0

0

Внешний ИОН, подключенный к выводу AREF;

внутренний ИОН отключен

0

1

Напряжение питания AVcc*

1

0

Зарезервировано

1

1

Внутренний ИОН напряжением 2.56 В

5

ADLAR

Выравнивание результата преобразования (рис. 3.2)

4…0

MUX4..MUX0

Биты выбора аналогового канала и коэффициента предварительного усиления (табл.3.15).

Регистр специальных функций - SFIOR

7..5

ADTS2.. ADTS0

Выбор источника запуска преобразования АЦП
при ADATE=1 (в таблице биты обозначены как 2,1 и 0)

2

1

0

Источник стартового сигнала

0

0

0

Режим непрерывного преобразования

0

0

1

Прерывание от аналогового компаратора

0

1

0

Внешнее прерывание INT0

0

1

1

Событие «Совпадение» таймера/счетчика T0

1

0

0

Переполнение таймера/счетчика T0

1

0

1

Событие «Совпадение В» таймера/счетчика T1

1

1

0

Переполнение таймера/счетчика T1

1

1

1

Событие «Захват» таймера/счетчика T1

4

ADHSM

Выбор режима ускоренного преобразования

3..0

Не используются

Регистры данных АЦП – ADCL и ADCH – фиксируют результат преобразования в зависимости от настройки ADLAR (см. рис. 28.1).

Биты результата преобразования

-

-

-

-

-

-

9

8

 

7

6

5

4

3

2

1

0

При ADLAR=0

ADCH ADCL

Биты результата преобразования

9

8

7

6

5

4

3

2

 

1

0

-

-

-

-

-

-

При ADLAR=1

ADCH ADCL

Рис. 28.1. Принцип выравнивания результата преобразования АЦП

Работа аналого-цифрового преобразователя

Работа АЦП разрешается установкой в состояние 1 бита ADEN в регистре ADCSR. Если АЦП будет выключен во время цикла преобразования, то преобразование завершено не будет (в регистрах данных АЦП останется результат предыдущего преобразования).

В режиме циклического преобразования (ADATE=1) запуск каждого следующего преобразования осуществляется автоматически после окончания текущего. В режиме одиночного преобразования оно осуществляется по команде пользователя.

Преобразование начинается с установки в состояние «1» бита начала преобразования ADSC регистра ADCSR. Этот бит находится в состоянии «1» в течение всего цикла преобразования и сбрасывается, по завершении преобразования аппаратно. Запуск преобразования по прерыванию осуществляется при установке в «1» флага выбранного прерывания. Разряд ADSC при этом аппаратно устанавливается в «1». Запуск преобразования в этих режимах также может быть осуществлен записью «1» в разряд ADSC.

Длительность цикла составляет около 15 тактов. Когда преобразование завершается, разряд ADSC аппаратно сбрасывается в «0» и результат преобразования сохраняется в регистрах данных АЦП. Одновременно устанавливается флаг прерывания ADIF регистра ADCSR и генерируется запрос на прерывание. Разрешение прерывания осуществляется установкой в «1» разряда ADIE регистра ADCSR при установленном флаге I регистра SREG.

Поскольку АЦП формирует 10-разрядный результат, то данные размещаются в двух регистрах данных ADCH и ADCL. При этом используется специальная логика защиты: при считывании данных первым должен быть считан регистр ADCL, после чего обращение ADC к регистрам данных блокируется. Обращение АЦП к ADCH и ADCL разрешается по завершении считывания содержимого регистра ADCH.

Если результат преобразование выравнивается влево и достаточно точности 8-разрядного значения, для получения результата можно прочитать только содержимое регистра ADCH.

Для каналов с несимметричным входом результат преобразования определяется выражением , где – значение входного напряжения, а – величина опорного напряжения.

Для каналов с дифференциальным входом результат преобразования определяется выражением , где – величина напряжения на положительном входе, – величина напряжения на отрицательном входе, – коэффициент усиления. Результат преобразования представляется в дополнительном коде.

Наибольшая точность преобразования достигается, если АЦП работает с тактовой частотой в диапазоне от 50 до 200 кГц.

Выводы микроконтроллера, подключенные ко входам АЦП, определяются состоянием разрядов MUX4..0 регистра ADMUX. Для каналов с дифференциальным входом указанные разряды определяют также коэффициент предварительного усиления входного сигнала. Принцип выбора входного канала представлен в табл.28.3.

Состояние разрядов MUX4..0 можно изменить в любой момент, однако, если это будет сделано во время цикла преобразования, смена канала произойдет только после завершения преобразования.

Таблица 28.3

Управление входным мультиплексором в модели ATmega16

MUX4..MUX0

Несимметричный

вход

Дифференциальный вход

Усиление

(положительный)

(отрицательный)

00000

ADC0

Не применимо

00001

ADC1

00010

ADC2

00011

ADC3

00100

ADC4

00101

ADC5

00110

ADC6

00111

ADC7

01000

Не

применимо

ADC0

ADC0

10x

01001

ADC1

ADC0

10x

01010

ADC0

ADC0

200x

01011

ADC1

ADC0

200x

01100

ADC2

ADC2

10x

01101

ADC3

ADC2

10x

01110

ADC2

ADC2

200x

01111

ADC3

ADC2

200x

10000

ADC0

ADC1

1x

10001

ADC1

ADC1

1x

10010

ADC2

ADC1

1x

10011

ADC3

ADC1

1x

10100

ADC4

ADC1

1x

10101

ADC5

ADC1

1x

10110

ADC6

ADC1

1x

10111

ADC7

ADC1

1x

11000

ADC0

ADC2

1x

11001

ADC1

ADC2

1x

11010

ADC2

ADC2

1x

11011

ADC3

ADC2

1x

11100

ADC4

ADC2

1x

11101

ADC5

ADC2

1x

11110

1.22 В

Не применимо

11111

0 В (GND)




<< Предыдущая статья
«Прерывания микроконтроллера ATmega16»