USART1 ATmega32U4: регистры и биты
Последовательный приёмопередатчик USART1: асинхронный UART, синхронный режим с тактом на выводе XCK1 и режим ведущего SPI (MSPIM). Скорость задают UBRR1 и бит U2X1, формат кадра — биты UCSZ, UPM и USBS, байты передаются и принимаются через UDR1.
Данные: описание ATmega32U4 из пакета Microchip ATmega_DFP 3.6.299 (Apache-2.0), сверено со сводкой регистров даташита 7766J.
Регистры блока
Конструктор значения
Выберите регистр и включите нужные биты — конструктор покажет значение и строку кода на C и ассемблере. Начальное значение — после сброса.
Исходные данные
Результат
- Значение
- 0x20
- Двоичное, биты 7…0
- 0010 0000
C (avr-gcc, avr/io.h)
UCSR1A = (1 << UDRE1);Ассемблер Microchip (m32u4def.inc)
ldi r16, 0x20
sts UCSR1A, r16UCSR1A — состояние USART1, регистр A
Адрес 0xC8, 8 бит, после сброса 0x20.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | RXC1 | TXC1 | UDRE1 | FE1 | DOR1 | UPE1 / PE1 | U2X1 | MPCM1 |
| Доступ | R | R/W | R | R | R | R | R/W | R/W |
| После сброса | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
- RXC1 (бит 7) — Приём завершён. Равен 1, пока в приёмном буфере есть непрочитанные данные; чтение UDR его сбрасывает.
- TXC1 (бит 6) — Передача завершена. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
- UDRE1 (бит 5) — Буфер передатчика пуст. 1 — в UDR можно записать следующий байт; после сброса равен 1.
- FE1 (бит 4) — Ошибка кадра: нет стоп-бита.
- DOR1 (бит 3) — Переполнение приёмника, символ потерян.
- UPE1 (бит 2) — Ошибка чётности.
- U2X1 (бит 1) — Удвоение скорости в асинхронном режиме.
- MPCM1 (бит 0) — Многопроцессорный режим.
UCSR1B — управление USART1, регистр B
Адрес 0xC9, 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | RXCIE1 | TXCIE1 | UDRIE1 | RXEN1 | TXEN1 | UCSZ12 | RXB81 | TXB81 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- RXCIE1 (бит 7) — Прерывание по завершению приёма.
- TXCIE1 (бит 6) — Прерывание по завершению передачи.
- UDRIE1 (бит 5) — Прерывание «буфер передатчика пуст».
- RXEN1 (бит 4) — Приёмник включён.
- TXEN1 (бит 3) — Передатчик включён.
- UCSZ12 (бит 2) — Размер символа, старший бит.
- RXB81 (бит 1) — Девятый бит принятого символа.
- TXB81 (бит 0) — Девятый бит передаваемого символа.
UCSR1C — формат кадра USART1, регистр C
Адрес 0xCA, 8 бит, после сброса 0x06.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | UMSEL11 | UMSEL10 | UPM11 | UPM10 | USBS1 | UCSZ11 | UCSZ10 | UCPOL1 |
| Доступ | R/W | R/W | R | R | R | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0 |
- UMSEL11:0 (биты 7:6) — Режим USART.
UMSEL11:0 Значение 00 Асинхронный (UART) 01 Синхронный (USRT) 11 Ведущий SPI (MSPIM) - UPM11:0 (биты 5:4) — Контроль чётности.
UPM11:0 Значение 00 Выключен 01 Зарезервировано 10 Чётный (even) 11 Нечётный (odd) - USBS1 (бит 3) — Число стоп-битов.
USBS1 Значение 0 1 стоп-бит 1 2 стоп-бита - UCSZ11:0 (биты 2:1) — Размер символа.
- UCPOL1 (бит 0) — Полярность XCK в синхронном режиме.
UCSR1D — управление потоком USART1 (RTS и CTS)
Адрес 0xCB, 8 бит.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | — | — | — | — | — | — | CTSEN | RTSEN |
- CTSEN (бит 1) — Управление потоком по CTS.
- RTSEN (бит 0) — Управление потоком по RTS.
UBRR1 — скорость USART1
Адрес 0xCC, 16 бит: старший байт UBRR1H по адресу 0xCD, младший UBRR1L по 0xCC. UBRR1H записывают раньше UBRR1L: запись в UBRR1L сразу перезапускает делитель скорости.
UDR1 — данные USART1
Адрес 0xCE, 8 бит, после сброса 0x00.
Регистр данных: все восемь битов — одно число.
Частые вопросы
Какими командами ассемблера обращаться к регистрам USART1 ATmega32U4?
UCSR1A, UCSR1B, UCSR1C, UCSR1D, UBRR1 и UDR1 лежат за пределами области ввода-вывода, их читают и пишут командами LDS и STS (или LD и ST) по адресу в пространстве данных. В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.
Какие значения у регистров USART1 после сброса?
После сброса UCSR1A = 0x20 и UCSR1C = 0x06; остальные регистры блока обнулены. Значения — из диаграмм регистров в даташите 7766J.
Как установить биты UCSR1A на C?
Имена регистров и битов определены в avr/io.h, бит задаётся сдвигом единицы на его номер: UCSR1A = (1 << RXC1) | (1 << TXC1); записывает новое значение целиком, а UCSR1A |= (1 << RXC1); меняет только этот бит. Готовую строку для любого набора битов даёт конструктор на этой странице.
Источники
- 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
- 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
- АЦПADC, ADCSRA, ADCSRB, ADMUX, DIDR2, DIDR0
- Аналоговый компараторACSR, ADCSRB, DIDR1
- Ядро и системные регистрыGPIOR0, GPIOR1, GPIOR2, OCDR, SMCR, MCUSR
- PLLPLLCSR, PLLFRQ
- USB-контроллерUHWCON, USBCON, USBSTA, USBINT, UDCON, UDINT