АЦП ATmega32U4: регистры и биты
10-битный АЦП последовательного приближения с мультиплексором входов. Опорное напряжение и вход выбирает ADMUX, включение, запуск и предделитель тактовой частоты — ADCSRA, источник автозапуска — ADCSRB, результат читается из ADC (ADCL и ADCH).
Данные: описание ATmega32U4 из пакета Microchip ATmega_DFP 3.6.299 (Apache-2.0), сверено со сводкой регистров даташита 7766J.
Регистры блока
Конструктор значения
Выберите регистр и включите нужные биты — конструктор покажет значение и строку кода на C и ассемблере. Начальное значение — после сброса.
Исходные данные
Результат
- Значение
- 0x00
- Двоичное, биты 7…0
- 0000 0000
C (avr-gcc, avr/io.h)
ADCSRA = 0;Ассемблер Microchip (m32u4def.inc)
ldi r16, 0x00
sts ADCSRA, r16ADC — результат преобразования АЦП
Адрес 0x78, 16 бит: старший байт ADCH по адресу 0x79, младший ADCL по 0x78. Первым читают ADCL: после этого результат не обновляется, пока не прочитан ADCH. В C регистр ADC читается целиком в нужном порядке.
ADCSRA — управление АЦП, регистр A
Адрес 0x7A, 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | ADEN | ADSC | ADATE | ADIF | ADIE | ADPS2 | ADPS1 | ADPS0 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- 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.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | ADHSM | ACME | MUX5 | — | ADTS3 | ADTS2 | ADTS1 | ADTS0 |
| Доступ | R | R/W | R/W | R | R | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- 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.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | REFS1 | REFS0 | ADLAR | MUX4 | MUX3 | MUX2 | MUX1 | MUX0 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- REFS1:0 (биты 7:6) — Опорное напряжение АЦП.
REFS1:0 Значение 00 Внешнее на AREF, внутреннее выключено 01 AVCC, конденсатор на AREF 10 Зарезервировано 11 Внутренний источник 2,56 В, конденсатор на AREF - ADLAR (бит 5) — Выравнивание результата влево.
- MUX4:0 (биты 4:0) — Вход АЦП.
DIDR2 — отключение цифровых входов ADC8–ADC15
Адрес 0x7D, 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | — | — | ADC13D | ADC12D | ADC11D | ADC10D | ADC9D | ADC8D |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- ADC13D (бит 5) — Отключить цифровой вход ADC13.
- ADC12D (бит 4) — Отключить цифровой вход ADC12.
- ADC11D (бит 3) — Отключить цифровой вход ADC11.
- ADC10D (бит 2) — Отключить цифровой вход ADC10.
- ADC9D (бит 1) — Отключить цифровой вход ADC9.
- ADC8D (бит 0) — Отключить цифровой вход ADC8.
DIDR0 — отключение цифровых входов АЦП
Адрес 0x7E, 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | ADC7D | ADC6D | ADC5D | ADC4D | — | — | ADC1D | ADC0D |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- 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); меняет только этот бит. Готовую строку для любого набора битов даёт конструктор на этой странице.
Источники
- Microchip. Atmel. ATmega16U4/32U4 datasheet (7766J) — сводка регистров, диаграммы битов и значения после сброса
- Microchip ATmega_DFP 3.6.299, описание ATmega32U4 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0
Нашли ошибку в регистрах?
Другие регистры ATmega32U4
- Все регистры ATmega32U4Таблица по адресам
- Порты ввода-выводаPINB, DDRB, PORTB, PINC, DDRC, PORTC
- SPISPCR, SPSR, SPDR
- USART1UCSR1A, UCSR1B, UCSR1C, UCSR1D, UBRR1, UDR1
- EEPROMEECR, EEDR, EEAR
- Таймер-счётчик 0 (8 бит)TIFR0, GTCCR, TCCR0A, TCCR0B, TCNT0, OCR0A
- Таймер-счётчик 1 (16 бит)TIFR1, TIMSK1, TCCR1A, TCCR1B, TCCR1C, TCNT1
- Таймер-счётчик 3 (16 бит)TIFR3, TIMSK3, TCCR3A, TCCR3B, TCCR3C, TCNT3
- Таймер-счётчик 4 (10 бит, быстрый)TIFR4, TIMSK4, TCNT4, TC4H, TCCR4A, TCCR4B
- Внешние прерыванияPCIFR, EIFR, EIMSK, PCICR, EICRA, EICRB
- TWI (I²C)TWBR, TWSR, TWAR, TWDR, TWCR, TWAMR
- Аналоговый компараторACSR, ADCSRB, DIDR1
- Ядро и системные регистрыGPIOR0, GPIOR1, GPIOR2, OCDR, SMCR, MCUSR
- PLLPLLCSR, PLLFRQ
- USB-контроллерUHWCON, USBCON, USBSTA, USBINT, UDCON, UDINT