Краткие теоретические сведения. ATmega8535 содержит 10-разрядный АЦП последовательного приближения

ATmega8535 содержит 10-разрядный АЦП последовательного приближения. АЦП связан с 8-канальным аналоговым мультиплексором, 8 однополярных входов которого связаны с линиями порта A.

Источник опорного напряжения (ИОН) для АЦП (VИОН) определяет диапазон преобразования АЦП. Если уровень однополярного сигнала свыше VИОН, то результатом преобразования будет 0x3FF. В качестве VИОН могут выступать AVCC, внутренний ИОН 2,56В или внешний ИОН, подключенный к выв. AREF. AVCC подключается к АЦП через пассивный ключ. Внутреннее опорное напряжение 2,56В генерируется внутренним эталонным источником VBG, буферизованного внутренним усилителем. В любом случае внешний вывод AREF связан непосредственно с АЦП и, поэтому, можно снизить влияние шумов на опорный источник за счет подключения конденсатора между выводом AREF и общим. Напряжение VИОН также может быть измерено на выводе AREF высокоомным вольтметром. Обратите внимание, что VИОН является высокоомным источником и, поэтому, внешне к нему может быть подключена только емкостная нагрузка.

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

-D7,D6–REFS1,0. Биты выбора источника опорного напряжения

00-AREF, внутренний VИОН отключен

01-AVCC с внешним конденсатором на выводе AREF

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

11-Внутренний источник опорного напряжения 2.56В с внешним конденсатором на выводе AREF

-D 5–ADLAR. Бит управления представлением результата преобразования. Бит ADLAR влияет на представление результата преобразования в паре регистров результата преобразования АЦП. Если ADLAR=1, то результат преобразования будет иметь левосторонний формат, в противном случае - правосторонний.

-D4-D0–MUX4:0. Биты выбора аналогового канала и коэффициента усиления (более подробно см. раздел ХХХХ).

Регистр управления и статуса АЦП – ADCSRA

-D7–ADEN: Разрешение работы АЦП.

-D6 – ADSC. Запуск преобразования АЦП.

-D5 – ADFR. Выбор режима автоматического перезапуска АЦП

-D4 – ADIF. Флаг прерывания АЦП. Данный флаг устанавливается после завершения преобразования АЦП и обновления регистров данных. Если установлены биты ADIE и I (регистр SREG), то происходит прерывание по завершении преобразования.

-D3–ADIE. Разрешение прерывания АЦП 11001111

-D2-D0 – ADPS2:0: Биты управления предделителем АЦП. Данные биты определяют на какое значение тактовая частота ЦПУ будет отличаться от частоты входной синхронизации АЦП (более подробно см. раздел 2.7).

Пример программы разработки программы управления АЦП

Аналоговый сигнал –по входу ADC0/PA0.

Считывание результата преобразования из регистров данных АЦП и запись их в PC –по сигналу «Запрос прерывания»

Разрядность результата преобразования -8. ИОН- внешний AREF.

.include "m8535def.inc"

;---------------------------------------------------------------

;настройка векторов прерывания

.cseg

.org 0x000

rjmp RESET ;прерывание после сброса

.org $00e

;прерывание при окончании преобразования

rjmp AD_CONV

Reset:

;---------------------------------------------------------------

;Инициализация стека

ldi r16, low(RAMEND) ;загрузить в r16 младший байт

;RAMEND

out SPL,r16 ;вывести значение r16 в SPL

ldi r31, high(RAMEND) ;загрузить в r16 старший байт

;RAMEND

out SPH,r16 ;вывести значение r16 в SPH

;---------------------------------------------------------------

;Инициализация АЦП

sei ;устанавливаем флаг разрешения прерываний

ldi r16,0xсf ;разрешение работы

out adcsr,r16 ;разрешение прерывания и старт

clr r16 ;сбрасываем все биты в r16

out admux,r16 ;выбор 0 канала АЦП (порт PA0)

;и параметр усиления

ser r16 ;устанавливаем все биты в r16

out ddrc,r16 ;настройка PORTC на вывод

;---------------------------------------------------------------

;цикл ожидания

loop:

nop

nop

rjmp loop

;---------------------------------------------------------------

;подпрограмма обслуживания АЦП

AD_CONV:

sei ;устанавливаем флаг разрешения прерываний

in r16,adch ;загрузка байта результата в регистр r16

out portc,r16 ;вывод содержимого r16 в PORTC

ldi r16,0xсf ;разрешение работы

out adcsr,r16 ;разрешение прерывания и старт

reti ;возврат

Индивидуальные задания к выполнению

Лабораторной работы №3

( Время преобразования и источник опорного напряжения

выбрать самостоятельно)

1. Разработать программу для ввода аналогового сигнала по 6-му каналу в режиме приоритетного прерывания. Разрядность результата -10. Результат записать в PORTC и PORTD.

2. Разработать программу для ввода аналогового сигнала по 3-му каналу в режиме приоритетного прерывания. Разрядность результата -10. Если результат четное число, то записать в PORTC и PORTD, иначе в ОЗУ

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

4. Разработать программу для ввода аналогового сигнала по 7-му каналу в режиме опроса флажка готовности АЦП. Разрядность результата -8. Если результат четное число, то записать в PORTC, иначе в ОЗУ

5. Разработать программу определения среднего арифметического значения аналоговых сигналов на 6 и 7 входах. Чтение результата по сигналу запрос прерывания. Разрядность результатов -10. Результат сохранить в ОЗУ.

6. Разработать программу для ввода аналогового сигнала по 3-му каналу в режиме приоритетного прерывания. Разрядность результата -10. Если результат больше заданного числа X, то записать в PORTC и PORTD, иначе в ОЗУ

7. Разработать программу для ввода аналогового сигнала по 1-му каналу в 8-ми разрядном формате. Результат записать в PORTD при PB0=1, иначе в PORTС.

8. Разработать программу для ввода аналогового сигнала по 0-му каналу, если PВ7=0 иначе по 1-му каналу. Данные, в 8-ми разрядном формате, выводить в PORTС.

9. Разработать программу для ввода аналогового сигнала по 1-му каналу если PВ7=0 и РВ6=1 иначе по 0-му каналу. Данные, в 10-ти разрядном формате, выводить в PORTC и PORTD.

10. Разработать программу для ввода аналогового сигнала по 0-му каналу c выводом в PORTB и 1-му каналу с выводом в PORTD. Данные, в 8-ми разрядном формате.

11. Разработать программу для ввода аналогового сигнала по 0-му каналу в 8-ми разрядном формате. Данные выводить в PORTC 10 раз с интервалом 5с.

12. Разработать программу для ввода аналогового сигнала по 0-му каналу в 8-ми разрядном формате. Данные выводить с регулируемым интервалом в PORTB. Временной интервал регулировать по порту С.

Контрольные вопросы к лабораторной работе №3

1. Назначение подсистемы аналогового ввода сигналов (подсистемы АЦП) и примеры использования подсистемы.

2. Основные характеристик подсистемы аналогового ввода сигналов.

3. Форматы регистров ADMUX, ADSCR, их назначение и описание битов.

4. Программирование подсистемы аналогового ввода сигналов, привести пример настройки АЦП на преобразование сигнала.

5. Назначение источника опорного напряжения (ИОН), виды ИОН. Как выбрать ИОН.

6. Регистры данных АЦП ADCH/ADCL и форматы преставление данных. Привести пример считывания содержимого регистра данных АЦП.

7. Вектор прерывания АЦП и его назначение.

8. В чем отличие работы подсистемы аналогового ввода в режиме приоритетного прерывания и в режиме опроса флажка готовности АЦП?

9. От чего зависит точность преобразования АЦП?

Лабораторная работа №4.