АЦП ATmega2560: регистры и биты
10-битный АЦП последовательного приближения с мультиплексором входов. Опорное напряжение и вход выбирает ADMUX, включение, запуск и предделитель тактовой частоты — ADCSRA, источник автозапуска — ADCSRB, результат читается из ADC (ADCL и ADCH).
Данные: описание ATmega2560 из пакета Microchip ATmega_DFP 3.6.299 (Apache-2.0), сверено со сводкой регистров даташита 2549Q.
Регистры блока
Конструктор значения
Выберите регистр и включите нужные биты — конструктор покажет значение и строку кода на C и ассемблере. Начальное значение — после сброса.
Исходные данные
Результат
- Значение
- 0x00
- Двоичное, биты 7…0
- 0000 0000
C (avr-gcc, avr/io.h)
ADCSRA = 0;Ассемблер Microchip (m2560def.inc)
ldi r16, 0x00
sts ADCSRA, r16ADC — результат преобразования АЦП
Адрес 0x78, 16 бит: старший байт ADCH по адресу 0x79, младший ADCL по 0x78, после сброса 0x0000. Первым читают 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 |
|---|---|---|---|---|---|---|---|---|
| Имя | — | ACME | — | — | MUX5 | ADTS2 | ADTS1 | ADTS0 |
| Доступ | R | R/W | R | R | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- 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.
| Бит | 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 Внутренний источник 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 11111 0 В (GND)
DIDR2 — отключение цифровых входов ADC8–ADC15
Адрес 0x7D, 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | ADC15D | ADC14D | 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 |
- 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.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | ADC7D | ADC6D | ADC5D | ADC4D | ADC3D | ADC2D | 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.
- 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); меняет только этот бит. Готовую строку для любого набора битов даёт конструктор на этой странице.
Источники
- Microchip. Atmel. ATmega640/V-1280/V-1281/V-2560/V-2561/V datasheet (2549Q) — сводка регистров, диаграммы битов и значения после сброса
- Microchip ATmega_DFP 3.6.299, описание ATmega2560 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0
Нашли ошибку в регистрах?
Другие регистры ATmega2560
- Все регистры ATmega2560Таблица по адресам
- Аналоговый компараторACSR, ADCSRB, DIDR1
- USART0–USART3UCSR0A, UCSR0B, UCSR0C, UBRR0, UDR0, UCSR1A
- TWI (I²C)TWBR, TWSR, TWAR, TWDR, TWCR, TWAMR
- SPISPCR, SPSR, SPDR
- Порты ввода-выводаPINA, DDRA, PORTA, PINB, DDRB, PORTB
- Таймер-счётчик 0 (8 бит)TIFR0, GTCCR, TCCR0A, TCCR0B, TCNT0, OCR0A
- Таймер-счётчик 2 (8 бит, асинхронный)TIFR2, GTCCR, TIMSK2, TCCR2A, TCCR2B, TCNT2
- EEPROMEECR, EEDR, EEAR
- Таймеры-счётчики 1, 3, 4 и 5 (16 бит)TIFR1, TIMSK1, TCCR1A, TCCR1B, TCCR1C, TCNT1
- Внешние прерыванияPCIFR, EIFR, EIMSK, PCICR, EICRA, EICRB
- Ядро и системные регистрыGPIOR0, GPIOR1, GPIOR2, OCDR, SMCR, MCUSR