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

Ядро и системные регистры ATtiny2313A: регистры и биты

Регистры ядра и системы: регистр состояния SREG, указатель стека SPL, режимы сна (биты SE и SM в MCUCR), причина последнего сброса (MCUSR), управление микроконтроллером (MCUCR), делитель тактовой частоты (CLKPR), отключение тактирования модулей (PRR), калибровка RC-генератора (OSCCAL), самопрограммирование (SPMCSR), отключение BOD на время сна (BODCR) и сторожевой таймер (WDTCR).

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

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

РегистрАдресНазначениеПосле сброса
PRR0x26 (I/O 0x06)Отключение тактирования модулей0x00
BODCR0x27 (I/O 0x07)Отключение BOD на время сна0x00
GPIOR00x33 (I/O 0x13)Регистр общего назначения 00x00
GPIOR10x34 (I/O 0x14)Регистр общего назначения 10x00
GPIOR20x35 (I/O 0x15)Регистр общего назначения 20x00
WDTCR0x41 (I/O 0x21)Управление сторожевым таймером—
GTCCR0x43 (I/O 0x23)Общее управление таймерами0x00
CLKPR0x46 (I/O 0x26)Делитель тактовой частоты—
OSCCAL0x51 (I/O 0x31)Калибровка RC-генератора—
MCUSR0x54 (I/O 0x34)Причина сброса—
MCUCR0x55 (I/O 0x35)Управление микроконтроллером0x00
SPMCSR0x57 (I/O 0x37)Самопрограммирование (SPM)0x00
SPL0x5D (I/O 0x3D)Указатель стека—
SREG0x5F (I/O 0x3F)Регистр состояния0x00

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

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

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

Результат

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

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

CLKPR = 0;

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

ldi r16, 0x00
out CLKPR, r16

PRR — отключение тактирования модулей

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

Бит76543210
Имя————PRTIM1PRTIM0PRUSIPRUSART
ДоступRRRRR/WR/WR/WR/W
После сброса00000000
  • PRTIM1:0 (биты 3:2) — Отключить тактирование таймеров.
  • PRUSI (бит 1) — Отключить тактирование USI.
  • PRUSART (бит 0) — Отключить тактирование USARTundefined.

BODCR — отключение BOD на время сна

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

Бит76543210
Имя——————BPDS / BODSBPDSE / BODSE
ДоступRRRRRRR/WR/W
После сброса00000000
  • BPDS (бит 1) — Выключить BOD на время сна.
  • BPDSE (бит 0) — Разрешение изменения BODS.

GPIOR0 — регистр общего назначения 0

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

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

GPIOR1 — регистр общего назначения 1

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

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

GPIOR2 — регистр общего назначения 2

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

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

WDTCR — управление сторожевым таймером

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

Бит76543210
ИмяWDIFWDIEWDP3WDCEWDEWDP2WDP1WDP0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса0000X000
  • WDIF (бит 7) — Флаг прерывания сторожевого таймера. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
  • WDIE (бит 6) — Прерывание сторожевого таймера.
  • WDP3:0 (биты 5, 2, 1, 0) — Период сторожевого таймера.
    WDP3:0Значение
    00002K тактов генератора WDT
    00014K тактов генератора WDT
    00108K тактов генератора WDT
    001116K тактов генератора WDT
    010032K тактов генератора WDT
    010164K тактов генератора WDT
    0110128K тактов генератора WDT
    0111256K тактов генератора WDT
    1000512K тактов генератора WDT
    10011024K тактов генератора WDT
  • WDCE (бит 4) — Разрешение изменения настроек. Изменение настроек: записать WDCE = 1 вместе с WDE = 1, затем в течение четырёх тактов — новые WDE и WDP при WDCE = 0.
  • WDE (бит 3) — Сброс по сторожевому таймеру.

GTCCR — общее управление таймерами

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

Бит76543210
Имя———————PSR10
ДоступRRRRRRRR/W
После сброса00000000
  • PSR10 (бит 0) — Сброс предделителя таймеров 1 и 0.

CLKPR — делитель тактовой частоты

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

Бит76543210
ИмяCLKPCE———CLKPS3CLKPS2CLKPS1CLKPS0
ДоступR/WRRRR/WR/WR/WR/W
  • CLKPCE (бит 7) — Разрешение изменения делителя. Изменение делителя: записать CLKPCE = 1 при нулевых CLKPS, затем в течение четырёх тактов — новое CLKPS при CLKPCE = 0.
  • CLKPS3:0 (биты 3:0) — Делитель тактовой частоты.
    CLKPS3:0Значение
    0000Деление на 1
    0001Деление на 2
    0010Деление на 4
    0011Деление на 8
    0100Деление на 16
    0101Деление на 32
    0110Деление на 64
    0111Деление на 128
    1000Деление на 256

OSCCAL — калибровка RC-генератора

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

Бит76543210
Имя—CAL6CAL5CAL4CAL3CAL2CAL1CAL0
ДоступRR/WR/WR/WR/WR/WR/WR/W

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

MCUSR — причина сброса

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

Бит76543210
Имя————WDRFBORFEXTRFPORF
ДоступRRRRR/WR/WR/WR/W
  • WDRF (бит 3) — Сброс сторожевым таймером.
  • BORF (бит 2) — Сброс детектором пониженного питания.
  • EXTRF (бит 1) — Внешний сброс по выводу RESET.
  • PORF (бит 0) — Сброс при включении питания.

MCUCR — управление микроконтроллером

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

Бит76543210
ИмяPUDSM1SESM0ISC11ISC10ISC01ISC00
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • PUD (бит 7) — Запрет подтяжек всех портов.
  • SM1:0 (биты 6, 4) — Режим сна.
    SM1:0Значение
    00Idle
    01Power-down
    100Standby
    101Power-down
  • SE (бит 5) — Разрешение сна (команда SLEEP).
  • ISC11:0 (биты 3:2) — Условие срабатывания INT1.
    ISC11:0Значение
    00Низкий уровень
    01Любое изменение
    10Спад
    11Фронт
  • ISC01:0 (биты 1:0) — Условие срабатывания INT0.
    ISC01:0Значение
    00Низкий уровень
    01Любое изменение
    10Спад
    11Фронт

SPMCSR — самопрограммирование (SPM)

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

Бит76543210
Имя——RSIGCTPBRFLBPGWRTPGERSSPMEN
ДоступRRR/WR/WR/WR/WR/WR/W
После сброса00000000
  • RSIG (бит 5) — Чтение таблицы сигнатуры.
  • CTPB (бит 4) — Очистка временного буфера страницы.
  • RFLB (бит 3) — Чтение фьюзов и битов защиты.
  • PGWRT (бит 2) — Запись страницы.
  • PGERS (бит 1) — Стирание страницы.
  • SPMEN (бит 0) — Разрешение команды SPM.

SPL — указатель стека

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

Бит76543210
ИмяSP7SP6SP5SP4SP3SP2SP1SP0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W

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

SREG — регистр состояния

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

Бит76543210
ИмяITHSVNZC
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • I (бит 7) — Глобальное разрешение прерываний.
  • T (бит 6) — Бит копирования (команды BST и BLD).
  • H (бит 5) — Флаг полупереноса.
  • S (бит 4) — Флаг знака, S = N ⊕ V.
  • V (бит 3) — Флаг переполнения дополнительного кода.
  • N (бит 2) — Флаг отрицательного результата.
  • Z (бит 1) — Флаг нулевого результата.
  • C (бит 0) — Флаг переноса.

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

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

Командами IN и OUT доступны PRR (0x06), BODCR (0x07), GPIOR0 (0x13), GPIOR1 (0x14), GPIOR2 (0x15), WDTCR (0x21), GTCCR (0x23), CLKPR (0x26), OSCCAL (0x31), MCUSR (0x34), MCUCR (0x35), SPMCSR (0x37), SPL (0x3D) и SREG (0x3F); из них PRR, BODCR, GPIOR0, GPIOR1 и GPIOR2 — ещё и командами SBI, CBI, SBIS и SBIC для отдельных битов. В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.

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

Все регистры блока, для которых даташит 8246B приводит значение после сброса (PRR, BODCR, GPIOR0, GPIOR1, GPIOR2, GTCCR, MCUCR, SPMCSR и SREG), после сброса равны нулю.

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

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

Источники

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

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

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

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