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

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

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

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

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

РегистрАдресНазначениеПосле сброса
ADC0x24 (I/O 0x04)Результат преобразования АЦП0x0000
ADCSRA0x26 (I/O 0x06)Управление АЦП, регистр A0x00
ADMUX0x27 (I/O 0x07)Опорное напряжение и вход АЦП0x00

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

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

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

Результат

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

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

ADCSRA = 0;

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

ldi r16, 0x00
out ADCSRA, r16

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

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

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

Адрес 0x26 (I/O 0x06), 8 бит, после сброса 0x00.

Бит76543210
ИмяADENADSCADFRADIFADIEADPS2ADPS1ADPS0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • ADEN (бит 7) — АЦП включён.
  • ADSC (бит 6) — Запуск преобразования.
  • ADFR (бит 5) — Непрерывное преобразование (Free Running).
  • 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

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

Адрес 0x27 (I/O 0x07), 8 бит, после сброса 0x00.

Бит76543210
ИмяREFS1REFS0ADLAR—MUX3MUX2MUX1MUX0
ДоступR/WR/WR/WRR/WR/WR/WR/W
После сброса00000000
  • REFS1:0 (биты 7:6) — Опорное напряжение АЦП.
    REFS1:0Значение
    00Внешнее на AREF, внутреннее выключено
    01AVCC, конденсатор на AREF
    10Зарезервировано
    11Внутренний источник 2,56 В, конденсатор на AREF
  • ADLAR (бит 5) — Выравнивание результата влево.
  • MUX3:0 (биты 3:0) — Вход АЦП.

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

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

Командами IN и OUT доступны ADCL и ADCH (0x04 и 0x05), ADCSRA (0x06) и ADMUX (0x07); из них ADC, ADCSRA и ADMUX — ещё и командами SBI, CBI, SBIS и SBIC для отдельных битов. В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.

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

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

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

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

Источники

  1. Microchip. Atmel. ATmega8(L) datasheet (2486AA) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATmega_DFP 3.6.299, описание ATmega8 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

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

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

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