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

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

Универсальный последовательный интерфейс USI — аппаратная основа для SPI (трёхпроводный режим) и I²C (двухпроводный режим): сдвиговый регистр USIDR, 4-битный счётчик тактов и детектор условия START. Протокол достраивается программно: тактирование, адреса и подтверждения задаёт код.

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

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

РегистрАдресНазначениеПосле сброса
USICR0x2D (I/O 0x0D)Управление USI0x00
USISR0x2E (I/O 0x0E)Состояние USI0x00
USIDR0x2F (I/O 0x0F)Данные USI (сдвиговый регистр)0x00

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

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

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

Результат

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

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

USICR = 0;

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

ldi r16, 0x00
out USICR, r16

USICR — управление USI

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

Бит76543210
ИмяUSISIEUSIOIEUSIWM1USIWM0USICS1USICS0USICLKUSITC
ДоступR/WR/WR/WR/WR/WR/WWW
После сброса00000000
  • USISIE (бит 7) — Прерывание по условию START.
  • USIOIE (бит 6) — Прерывание по переполнению счётчика USI.
  • USIWM1:0 (биты 5:4) — Режим проводов USI.
    USIWM1:0Значение
    00USI выключен, выводы работают как порт
    01Трёхпроводный режим (как SPI): DO, DI, USCK
    10Двухпроводный режим (как I²C): SDA, SCL
    11Двухпроводный, SCL удерживается низким и при переполнении счётчика
  • USICS1:0 (биты 3:2) — Источник тактирования USI.
  • USICLK (бит 1) — Программный такт (строб) USI.
  • USITC (бит 0) — Переключение вывода тактирования USI.

USISR — состояние USI

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

Бит76543210
ИмяUSISIFUSIOIFUSIPFUSIDCUSICNT3USICNT2USICNT1USICNT0
ДоступR/WR/WR/WRR/WR/WR/WR/W
После сброса00000000
  • USISIF (бит 7) — Флаг условия START.
  • USIOIF (бит 6) — Флаг переполнения счётчика USI.
  • USIPF (бит 5) — Флаг условия STOP.
  • USIDC (бит 4) — Конфликт данных на выходе USI.
  • USICNT3:0 (биты 3:0) — Счётчик тактов USI.

USIDR — данные USI (сдвиговый регистр)

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

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

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

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

Командами IN и OUT доступны USICR (0x0D), USISR (0x0E) и USIDR (0x0F); из них USICR, USISR и USIDR — ещё и командами SBI, CBI, SBIS и SBIC для отдельных битов. В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.

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

Все регистры блока, для которых даташит 8246B приводит значение после сброса (USICR, USISR и USIDR), после сброса равны нулю.

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

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

Источники

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

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

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

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