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

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

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

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

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

РегистрАдресНазначениеПосле сброса
ADC0x78Результат преобразования АЦП—
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 (m32u4def.inc)

ldi r16, 0x00
sts ADCSRA, r16

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

Адрес 0x78, 16 бит: старший байт ADCH по адресу 0x79, младший ADCL по 0x78. Первым читают 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
ИмяADHSMACMEMUX5—ADTS3ADTS2ADTS1ADTS0
ДоступRR/WR/WRRR/WR/WR/W
После сброса00000000
  • ADHSM (бит 7) — Быстрый режим АЦП.
  • MUX5 (бит 5) — Старший бит выбора входа АЦП.
  • ADTS3:0 (биты 3:0) — Источник автозапуска АЦП.
    ADTS3:0Значение
    0000Непрерывное преобразование
    0001Аналоговый компаратор
    0010Внешнее прерывание INT0
    0011Совпадение с OCR0A
    0100Переполнение таймера 0
    0101Совпадение с OCR1B
    0110Переполнение таймера 1
    0111Захват таймера 1
    1000Переполнение таймера 4
    1001Совпадение с OCR4A
    1010Совпадение с OCR4B
    1011Совпадение с OCR4D

Остальные биты регистра относятся к другим блокам: ACME — вход компаратора от мультиплексора ацп (AC).

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Зарезервировано
    11Внутренний источник 2,56 В, конденсатор на AREF
  • ADLAR (бит 5) — Выравнивание результата влево.
  • MUX4:0 (биты 4:0) — Вход АЦП.

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

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

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

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

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

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

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

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

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

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

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

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

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

Источники

  1. Microchip. Atmel. ATmega16U4/32U4 datasheet (7766J) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATmega_DFP 3.6.299, описание ATmega32U4 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

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

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

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