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

USART ATtiny2313A: регистры и биты

Последовательный приёмопередатчик USART: асинхронный UART, синхронный режим с тактом на выводе XCK и режим ведущего SPI (MSPIM). Скорость задают UBRRH:UBRRL и бит U2X, формат кадра — биты UCSZ, UPM и USBS, байты передаются и принимаются через UDR.

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

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

РегистрАдресНазначениеПосле сброса
UBRRH0x22 (I/O 0x02)Скорость USART, старшие биты—
UCSRC0x23 (I/O 0x03)Формат кадра USARTundefined, регистр C0x06
UBRRL0x29 (I/O 0x09)Скорость USART, младший байт—
UCSRB0x2A (I/O 0x0A)Управление USARTundefined, регистр B0x00
UCSRA0x2B (I/O 0x0B)Состояние USARTundefined, регистр A0x20
UDR0x2C (I/O 0x0C)Данные USARTundefined0x00

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

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

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

Результат

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

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

UCSRC = (1 << UCSZ1) | (1 << UCSZ0);

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

ldi r16, 0x06
out UCSRC, r16

UBRRH — скорость USART, старшие биты

Адрес 0x22 (I/O 0x02), 8 бит.

Бит76543210
Имя————UBRRH11UBRRH10UBRRH9UBRRH8

Регистр данных: все восемь битов — одно число.

UCSRC — формат кадра USARTundefined, регистр C

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

Бит76543210
ИмяUMSEL1UMSEL0UPM1UPM0USBSUCSZ1UCSZ0UCPOL
ДоступRR/WR/WR/WR/WR/WR/WR/W
После сброса00000110
  • UMSEL1:0 (биты 7:6) — Режим USART.
    UMSEL1:0Значение
    00Асинхронный (UART)
    01Синхронный (USRT)
    11Ведущий SPI (MSPIM)
  • UPM1:0 (биты 5:4) — Контроль чётности.
    UPM1:0Значение
    00Выключен
    01Зарезервировано
    10Чётный (even)
    11Нечётный (odd)
  • USBS (бит 3) — Число стоп-битов.
    USBSЗначение
    01 стоп-бит
    12 стоп-бита
  • UCSZ1:0 (биты 2:1) — Размер символа.
  • UCPOL (бит 0) — Полярность XCK в синхронном режиме.

UBRRL — скорость USART, младший байт

Адрес 0x29 (I/O 0x09), 8 бит.

Регистр данных: все восемь битов — одно число.

UCSRB — управление USARTundefined, регистр B

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

Бит76543210
ИмяRXCIETXCIEUDRIERXENTXENUCSZ2RXB8TXB8
ДоступR/WR/WR/WR/WR/WR/WRR/W
После сброса00000000
  • RXCIE (бит 7) — Прерывание по завершению приёма.
  • TXCIE (бит 6) — Прерывание по завершению передачи.
  • UDRIE (бит 5) — Прерывание «буфер передатчика пуст».
  • RXEN (бит 4) — Приёмник включён.
  • TXEN (бит 3) — Передатчик включён.
  • UCSZ2 (бит 2) — Размер символа, старший бит.
  • RXB8 (бит 1) — Девятый бит принятого символа.
  • TXB8 (бит 0) — Девятый бит передаваемого символа.

UCSRA — состояние USARTundefined, регистр A

Адрес 0x2B (I/O 0x0B), 8 бит, после сброса 0x20.

Бит76543210
ИмяRXCTXCUDREFEDORUPEU2XMPCM
ДоступRR/WRRRRR/WR/W
После сброса00100000
  • RXC (бит 7) — Приём завершён. Равен 1, пока в приёмном буфере есть непрочитанные данные; чтение UDR его сбрасывает.
  • TXC (бит 6) — Передача завершена. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
  • UDRE (бит 5) — Буфер передатчика пуст. 1 — в UDR можно записать следующий байт; после сброса равен 1.
  • FE (бит 4) — Ошибка кадра: нет стоп-бита.
  • DOR (бит 3) — Переполнение приёмника, символ потерян.
  • UPE (бит 2) — Ошибка чётности.
  • U2X (бит 1) — Удвоение скорости в асинхронном режиме.
  • MPCM (бит 0) — Многопроцессорный режим.

UDR — данные USARTundefined

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

Регистр данных: все восемь битов — одно число.

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

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

Командами IN и OUT доступны UBRRH (0x02), UCSRC (0x03), UBRRL (0x09), UCSRB (0x0A), UCSRA (0x0B) и UDR (0x0C); из них UBRRH, UCSRC, UBRRL, UCSRB, UCSRA и UDR — ещё и командами SBI, CBI, SBIS и SBIC для отдельных битов. В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.

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

После сброса UCSRC = 0x06 и UCSRA = 0x20; остальные регистры блока обнулены. Значения — из диаграмм регистров в даташите 8246B.

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

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

Источники

  1. Microchip. Atmel. ATtiny2313A/4313 datasheet (8246B) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATtiny_DFP 3.4.278, описание ATtiny2313A (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

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

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

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