USI ATtiny2313A: регистры и биты
Универсальный последовательный интерфейс USI — аппаратная основа для SPI (трёхпроводный режим) и I²C (двухпроводный режим): сдвиговый регистр USIDR, 4-битный счётчик тактов и детектор условия START. Протокол достраивается программно: тактирование, адреса и подтверждения задаёт код.
Данные: описание ATtiny2313A из пакета Microchip ATtiny_DFP 3.4.278 (Apache-2.0), сверено со сводкой регистров даташита 8246B.
Содержание
Регистры блока
Конструктор значения
Выберите регистр и включите нужные биты — конструктор покажет значение и строку кода на C и ассемблере. Начальное значение — после сброса.
Исходные данные
Результат
- Значение
- 0x00
- Двоичное, биты 7…0
- 0000 0000
C (avr-gcc, avr/io.h)
USICR = 0;Ассемблер Microchip (tn2313adef.inc)
ldi r16, 0x00
out USICR, r16USICR — управление USI
Адрес 0x2D (I/O 0x0D), 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | USISIE | USIOIE | USIWM1 | USIWM0 | USICS1 | USICS0 | USICLK | USITC |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | W | W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- USISIE (бит 7) — Прерывание по условию START.
- USIOIE (бит 6) — Прерывание по переполнению счётчика USI.
- USIWM1:0 (биты 5:4) — Режим проводов USI.
USIWM1:0 Значение 00 USI выключен, выводы работают как порт 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.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | USISIF | USIOIF | USIPF | USIDC | USICNT3 | USICNT2 | USICNT1 | USICNT0 |
| Доступ | R/W | R/W | R/W | R | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- 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); меняет только этот бит. Готовую строку для любого набора битов даёт конструктор на этой странице.
Источники
- Microchip. Atmel. ATtiny2313A/4313 datasheet (8246B) — сводка регистров, диаграммы битов и значения после сброса
- Microchip ATtiny_DFP 3.4.278, описание ATtiny2313A (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0
Нашли ошибку в регистрах?
Другие регистры ATtiny2313A
- Все регистры ATtiny2313AТаблица по адресам
- Порты ввода-выводаPIND, DDRD, PORTD, PINB, DDRB, PORTB
- Таймер-счётчик 0 (8 бит)TCCR0A, TCNT0, TCCR0B, OCR0A, TIFR, TIMSK
- Таймер-счётчик 1 (16 бит)TCCR1C, ICR1, OCR1B, OCR1A, TCNT1, TCCR1B
- USARTUBRRH, UCSRC, UBRRL, UCSRB, UCSRA, UDR
- Аналоговый компараторDIDR, ACSR
- EEPROMEECR, EEDR, EEAR
- Внешние прерыванияPCMSK1, PCMSK2, PCMSK0, GIFR, GIMSK
- Ядро и системные регистрыPRR, BODCR, GPIOR0, GPIOR1, GPIOR2, WDTCR