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

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

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

Данные: описание ATtiny85 из пакета Microchip ATtiny_DFP 3.4.278 (Apache-2.0), сверено со сводкой регистров даташита 2586Q.

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

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

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

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

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

Результат

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

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

ADCSRA = 0;

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

ldi r16, 0x00
out ADCSRA, r16

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

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

Бит76543210
ИмяBINACMEIPR——ADTS2ADTS1ADTS0
ДоступR/WR/WR/WRRR/WR/WR/W
После сброса00000000
  • BIN (бит 7) — Биполярный режим дифференциального входа.
  • IPR (бит 5) — Смена полярности дифференциального входа.
  • ADTS2:0 (биты 2:0) — Источник автозапуска АЦП.
    ADTS2:0Значение
    000Непрерывное преобразование
    001Аналоговый компаратор
    010Внешнее прерывание INT0
    011Совпадение с OCR0A
    100Переполнение таймера 0
    101Совпадение с OCR1B
    110Переполнение таймера 1
    111Захват таймера 1

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

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

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

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

Адрес 0x26 (I/O 0x06), 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

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

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

Бит76543210
ИмяREFS1REFS0ADLARREFS2MUX3MUX2MUX1MUX0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • REFS1:0 (биты 7:6) — Опорное напряжение АЦП.
  • ADLAR (бит 5) — Выравнивание результата влево.
  • REFS2 (бит 4) — Опорное напряжение АЦП, бит REFS2.
  • MUX3:0 (биты 3:0) — Вход АЦП.

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

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

Бит76543210
Имя——ADC0DADC2DADC3DADC1DAIN1DAIN0D
ДоступRRR/WR/WR/WR/WR/WR/W
После сброса00000000
  • ADC0D (бит 5) — Отключить цифровой вход ADC0.
  • ADC2D (бит 4) — Отключить цифровой вход ADC2.
  • ADC3D (бит 3) — Отключить цифровой вход ADC3.
  • ADC1D (бит 2) — Отключить цифровой вход ADC1.

Остальные биты регистра относятся к другим блокам: AIN1D — отключить цифровой вход ain1 (AC), AIN0D — отключить цифровой вход ain0 (AC).

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

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

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

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

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

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

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

Источники

  1. Microchip. Atmel. ATtiny25/45/85 datasheet (2586Q) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATtiny_DFP 3.4.278, описание ATtiny85 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

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

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

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