Перейти к содержанию

АЦП ATmega2560: регистры и биты

10-битный АЦП последовательного приближения с мультиплексором входов. Опорное напряжение и вход выбирает ADMUX, включение, запуск и предделитель тактовой частоты — ADCSRA, источник автозапуска — ADCSRB, результат читается из ADC (ADCL и ADCH).

Данные: описание ATmega2560 из пакета Microchip ATmega_DFP 3.6.299 (Apache-2.0), сверено со сводкой регистров даташита 2549Q.

Регистры блока

РегистрАдресНазначениеПосле сброса
ADC0x78Результат преобразования АЦП0x0000
ADCSRA0x7AУправление АЦП, регистр A0x00
ADCSRB0x7BУправление АЦП, регистр B0x00
ADMUX0x7CОпорное напряжение и вход АЦП0x00
DIDR20x7DОтключение цифровых входов ADC8–ADC150x00
DIDR00x7EОтключение цифровых входов АЦП0x00

Конструктор значения

Выберите регистр и включите нужные биты — конструктор покажет значение и строку кода на C и ассемблере. Начальное значение — после сброса.

Исходные данные

Результат

Значение
0x00
Двоичное, биты 7…0
0000 0000

C (avr-gcc, avr/io.h)

ADCSRA = 0;

Ассемблер Microchip (m2560def.inc)

ldi r16, 0x00
sts ADCSRA, r16

ADC — результат преобразования АЦП

Адрес 0x78, 16 бит: старший байт ADCH по адресу 0x79, младший ADCL по 0x78, после сброса 0x0000. Первым читают ADCL: после этого результат не обновляется, пока не прочитан ADCH. В C регистр ADC читается целиком в нужном порядке.

ADCSRA — управление АЦП, регистр A

Адрес 0x7A, 8 бит, после сброса 0x00.

Бит76543210
ИмяADENADSCADATEADIFADIEADPS2ADPS1ADPS0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • ADEN (бит 7) — АЦП включён.
  • ADSC (бит 6) — Запуск преобразования.
  • ADATE (бит 5) — Автозапуск преобразований.
  • ADIF (бит 4) — Флаг АЦП: преобразование завершено. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
  • ADIE (бит 3) — Прерывание АЦП.
  • ADPS2:0 (биты 2:0) — Предделитель тактовой частоты АЦП.
    ADPS2:0Значение
    000Деление на 2
    001Деление на 2
    010Деление на 4
    011Деление на 8
    100Деление на 16
    101Деление на 32
    110Деление на 64
    111Деление на 128

ADCSRB — управление АЦП, регистр B

Адрес 0x7B, 8 бит, после сброса 0x00.

Бит76543210
Имя—ACME——MUX5ADTS2ADTS1ADTS0
ДоступRR/WRRR/WR/WR/WR/W
После сброса00000000
  • ACME (бит 6) — Вход компаратора от мультиплексора АЦП.
  • MUX5 (бит 3) — Старший бит выбора входа АЦП.
  • ADTS2:0 (биты 2:0) — Источник автозапуска АЦП.
    ADTS2:0Значение
    000Непрерывное преобразование
    001Аналоговый компаратор
    010Внешнее прерывание INT0
    011Совпадение с OCR0A
    100Переполнение таймера 0
    101Совпадение с OCR1B
    110Переполнение таймера 1
    111Захват таймера 1

ADMUX — опорное напряжение и вход АЦП

Адрес 0x7C, 8 бит, после сброса 0x00.

Бит76543210
ИмяREFS1REFS0ADLARMUX4MUX3MUX2MUX1MUX0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • REFS1:0 (биты 7:6) — Опорное напряжение АЦП.
    REFS1:0Значение
    00Внешнее на AREF, внутреннее выключено
    01AVCC, конденсатор на AREF
    10Внутренний источник 1,1 В, конденсатор на AREF
    11Внутренний источник 2,56 В, конденсатор на AREF
  • ADLAR (бит 5) — Выравнивание результата влево.
  • MUX4:0 (биты 4:0) — Вход АЦП.
    MUX4:0Значение
    00000Вход ADC0
    00001Вход ADC1
    00010Вход ADC2
    00011Вход ADC3
    00100Вход ADC4
    00101Вход ADC5
    00110Вход ADC6
    00111Вход ADC7
    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
    11110Внутренний источник VBG
    111110 В (GND)

DIDR2 — отключение цифровых входов ADC8–ADC15

Адрес 0x7D, 8 бит, после сброса 0x00.

Бит76543210
ИмяADC15DADC14DADC13DADC12DADC11DADC10DADC9DADC8D
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • ADC15D (бит 7) — Отключить цифровой вход ADC15.
  • ADC14D (бит 6) — Отключить цифровой вход ADC14.
  • ADC13D (бит 5) — Отключить цифровой вход ADC13.
  • ADC12D (бит 4) — Отключить цифровой вход ADC12.
  • ADC11D (бит 3) — Отключить цифровой вход ADC11.
  • ADC10D (бит 2) — Отключить цифровой вход ADC10.
  • ADC9D (бит 1) — Отключить цифровой вход ADC9.
  • ADC8D (бит 0) — Отключить цифровой вход ADC8.

DIDR0 — отключение цифровых входов АЦП

Адрес 0x7E, 8 бит, после сброса 0x00.

Бит76543210
ИмяADC7DADC6DADC5DADC4DADC3DADC2DADC1DADC0D
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • ADC7D (бит 7) — Отключить цифровой вход ADC7.
  • ADC6D (бит 6) — Отключить цифровой вход ADC6.
  • ADC5D (бит 5) — Отключить цифровой вход ADC5.
  • ADC4D (бит 4) — Отключить цифровой вход ADC4.
  • ADC3D (бит 3) — Отключить цифровой вход ADC3.
  • ADC2D (бит 2) — Отключить цифровой вход ADC2.
  • ADC1D (бит 1) — Отключить цифровой вход ADC1.
  • ADC0D (бит 0) — Отключить цифровой вход ADC0.

Частые вопросы

Какими командами ассемблера обращаться к регистрам ADC ATmega2560?

ADC, ADCSRA, ADCSRB, ADMUX, DIDR2 и DIDR0 лежат за пределами области ввода-вывода, их читают и пишут командами LDS и STS (или LD и ST) по адресу в пространстве данных. В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.

Какие значения у регистров ADC после сброса?

Все регистры блока, для которых даташит 2549Q приводит значение после сброса (ADC, ADCSRA, ADCSRB, ADMUX, DIDR2 и DIDR0), после сброса равны нулю.

Как установить биты ADCSRA на C?

Имена регистров и битов определены в avr/io.h, бит задаётся сдвигом единицы на его номер: ADCSRA = (1 << ADEN) | (1 << ADSC); записывает новое значение целиком, а ADCSRA |= (1 << ADEN); меняет только этот бит. Готовую строку для любого набора битов даёт конструктор на этой странице.

Источники

  1. Microchip. Atmel. ATmega640/V-1280/V-1281/V-2560/V-2561/V datasheet (2549Q) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATmega_DFP 3.6.299, описание ATmega2560 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

Нашли ошибку в регистрах?

Другие регистры ATmega2560

Калькуляторы и статьи