Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба 4 / Лаба 4.docx
Скачиваний:
4
Добавлен:
08.04.2022
Размер:
586.88 Кб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра БТС

ИНДИВИДУАЛЬНОЕ

ДОМАШНЕЕ ЗАДАНИЕ №4

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

Тема: Работа с АЦП

Студент гр. 7501

Исаков А.О.

Преподаватель

Анисимов А.А.

Санкт-Петербург

2020

Цель работы: написать на языке Assembler программу для работы с АЦП.

Используемые инструменты: отладочная плата ATtiny2313, интегрированная среда разработки AVR Atmel Studio 7.

Основные теоретические положения

Все микроконтроллеры семейства AtMega и некоторые из семейства Tiny имеют встроенный блок аналого-цифрового преобразования (АЦП). Он может использоваться для замены простого, но значительно менее функционального компаратора. Этот АЦП десятиразрядный и многоканальный (количество каналов может варьироваться от 4 до 16 в зависимости от модели микроконтроллера).

Модуль АЦП всего один, на его входе стоит аналоговый мультиплексор, подключающий этот вход к различным выводам МК, что позволяет проводить разделенные во времени измерения сразу нескольких независимых аналоговых величин. Входы мультиплексора могут работать как по отдельности (в несимметричном режиме, измеряя напряжение относительно земли), так и объединяться в пары (только для некоторых моделей микроконтроллеров), измеряя дифференциальное напряжение. Также опционально возможно усиление входного сигнала с фиксированным коэффициентом 10 или 100.

Встроенный АЦП представляет собой преобразователь последовательного приближения с устройством выборки-хранения и фиксированным числом тактов преобразования, равным 13 (14 для дифференциального измерения). Данный класс АЦП занимает промежуточное положение по быстродействию, стоимости и разрешающей способности между последовательно-параллельными и сигма-дельта АЦП и находит широкое применение в системах управления, контроля и цифровой обработки сигналов.

Для выполнения первого преобразования (при первоначальной настройке АЦП) требуется 25 тактов. Тактовая частота преобразования формируется с помощью делителя от опорной частоты микроконтроллера при помощи соответствующего управляющего регистра, рекомендованная частота преобразования – от 50 до 200 кГц, в этом диапазоне наиболее вероятно получение наиболее достоверного результата измерения. Модуль АЦП имеет разрешение в 10 бит, и, по заявлениям разработчиков, абсолютная погрешность не превышает двух младших значащих разрядов (погрешность не более 0,25 % шкалы измерения). Для достижения подобных результатов необходимо применение как аппаратных, так и программных способов повышения точности измерений, с которыми можно дополнительно ознакомиться в фирменной документации.

Также возможно два режима преобразования:

  • непрерывный (free-running mode), когда по завершении одного цикла преобразования сразу же следует другой;

  • одиночный (single), когда последовательность циклов регулируется вручную.

Первый способ не отличается высокой точностью измерений и целесообразен только при необходимости максимальной скорости преобразований.

Настройка ацп

Регистры, задающие режим работы аналого-цифрового преобразователя.

ADMUX (ADC Multiplexer Selection Register) – регистр, определяющий текущий канал АЦП, источник опорного напряжения и режим хранения данных. В этом регистре нас больше всего интересуют биты, описанные далее.

REFS1:0 (Reference Selection Bits) – определяют источник опорного напряжения, относительно которого будет происходить преобразование. Опорное напряжение должно быть как можно более стабильным, без помех и колебаний по напряжению – от этого во многом зависит точность работы АЦП. Все возможные варианты приведены в табл.1.

Таблица 1 – Выбор источника опорного напряжения АЦП

REFS[1:0]

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

00

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

01

Внутренний ИОН на 1.1 В

10

Внутренний ИОН на 2.2 В

11

Внутренний ИОН на 4.3 В

Внутренний источник опорного напряжения не очень точный и подходит только для нетребовательных приложений.

MUX4:0 (Analog Channel and Gain Selection Bits) – данные биты определяют текущий вход, с которого мы будем считывать аналоговый сигнал. Также с помощью этих битов выставляется коэффициент усиления при измерении в дифференциальном режиме. Возможные конфигурации для выбора текущего источника входного сигнала представлены в табл. 2.

Таблица 2 – Выбор текущего канала АЦП

MUX4...0

Номер канала

00000

ADC0

00001

ADC1

00010

ADC2

00011

ADC3

00100

ADC4

00101

ADC5

00110

ADC6

00111

ADC7

Данные с АЦП записываются в регистровую пару ADCH:ADCL, откуда их можно считать для дальнейшей обработки. Причем здесь есть один важный момент. Регистровая пара 16 разрядная, а АЦП имеет разрядность 10 бит. В итоге лишь один регистр занят полностью, а второй занимают лишь оставшиеся два бита. Исходя из этого факта, выравнивание может производиться как по правому краю – старшие два бита в ADCH, а младшие в ADCL, так и по левому – старшие биты в ADCH, а два младших бита в ADCL:

[9][8][7][6][5][4][3][2]:[1][0][x][x][x][x][x][x]

[x][x][x][x][x][x][9][8]:[7][6][5][4][3][2][1][0]

Для чего хранение данных АЦП-преобразования организовано именно таким образом? Так как в двух младших битах чаще всего достаточно сложно получить значимые данные (скорее всего, мы получим там помехи), можно использовать выравнивание по правому краю и считывать данные преобразования только из одного регистра ADCH, экономя время и программный код. За выравнивание отвечает бит ADLAR. Записывая в него логический ноль, получаем выравнивание по правой границе, записываем единицу – по левой.

Рассмотрим подробнее управляющий регистр ADCSRA (ADC Control and Status Register A), отвечающий за работу АЦП:

ADEN (ADC Enable) – записывая единицу в этот бит, разрешаем использование АЦП.

ADIE (ADC Interrupt Enable) – разрешение прерывания по завершению цикла преобразования.

ADPS2:0 (ADC Prescaler Select Bits) – позволяет выбрать коэффициент делителя тактовых импульсов для установки частоты преобразований (в непрерывном режиме). Значение коэффициента делителя определяется в соответствии с табл. 3.

Таблица 3 – Выбор коэффициента деления

ADPS2

ADPS1

ADPS0

Коэффициент деления

0

0

0

2

0

0

1

2

0

1

0

4

0

1

1

8

1

0

0

16

1

0

1

32

1

1

0

64

1

1

1

128

ADFR (ADC Free Running Select) – записывая единицу в этот бит, выбираем непрерывный режим преобразования.

ADSC (ADC Start Conversion) – записывая единицу в этот бит, мы начинаем очередной цикл преобразования в одиночном режиме работы (или первый цикл при непрерывном), который занимает 13 тактов (первый цикл – 25 тактов, здесь осуществляется первоначальная инициализация АЦП), при условии, что с помощью бита ADEN разрешено использование АЦП.

Соседние файлы в папке Лаба 4