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

Таймер-счётчик 3 (16 бит) ATmega32U4: регистры и биты

16-битный таймер-счётчик 3: считает такты через предделитель; каналы сравнения OCR3A, OCR3B и OCR3C, но на вывод выходит только OC3A (ШИМ, генерация частоты); момент события на входе ICP3 запоминается в ICR3. Режим задают биты WGM33:0 в TCCR3A и TCCR3B, тактирование — CS32:0.

Данные: описание ATmega32U4 из пакета Microchip ATmega_DFP 3.6.299 (Apache-2.0), сверено со сводкой регистров даташита 7766J.

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

РегистрАдресНазначениеПосле сброса
TIFR30x38 (I/O 0x18)Флаги прерываний таймера 30x00
TIMSK30x71Маска прерываний таймера 30x00
TCCR3A0x90Управление таймером 3, регистр A0x00
TCCR3B0x91Управление таймером 3, регистр B0x00
TCCR3C0x92Управление таймером 3, регистр C0x00
TCNT30x94Счётный регистр таймера 30x0000
ICR30x96Регистр захвата таймера 30x0000
OCR3A0x98Регистр сравнения A таймера 30x0000
OCR3B0x9AРегистр сравнения B таймера 30x0000
OCR3C0x9CРегистр сравнения C таймера 30x0000

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

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

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

Результат

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

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

TCCR3A = 0;

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

ldi r16, 0x00
sts TCCR3A, r16

TIFR3 — флаги прерываний таймера 3

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

Бит76543210
Имя——ICF3—OCF3COCF3BOCF3ATOV3
ДоступRRR/WRR/WR/WR/WR/W
После сброса00000000
  • ICF3 (бит 5) — Флаг захвата таймера 3. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
  • OCF3C (бит 3) — Флаг совпадения с OCR3C. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
  • OCF3B (бит 2) — Флаг совпадения с OCR3B. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
  • OCF3A (бит 1) — Флаг совпадения с OCR3A. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
  • TOV3 (бит 0) — Флаг переполнения таймера 3. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.

TIMSK3 — маска прерываний таймера 3

Адрес 0x71, 8 бит, после сброса 0x00.

Бит76543210
Имя——ICIE3—OCIE3COCIE3BOCIE3ATOIE3
ДоступRRR/WRR/WR/WR/WR/W
После сброса00000000
  • ICIE3 (бит 5) — Прерывание по захвату таймера 3.
  • OCIE3C (бит 3) — Прерывание по совпадению с OCR3C.
  • OCIE3B (бит 2) — Прерывание по совпадению с OCR3B.
  • OCIE3A (бит 1) — Прерывание по совпадению с OCR3A.
  • TOIE3 (бит 0) — Прерывание по переполнению таймера 3.

TCCR3A — управление таймером 3, регистр A

Адрес 0x90, 8 бит, после сброса 0x00.

Бит76543210
ИмяCOM3A1COM3A0COM3B1COM3B0COM3C1COM3C0WGM31WGM30
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • COM3A1:0 (биты 7:6) — Режим вывода OC3A. Что делается с выводом при совпадении, зависит от режима таймера: в режимах ШИМ те же значения битов означают другое, у каждого режима в даташите своя таблица.
  • COM3B1:0 (биты 5:4) — Режим вывода OC3B. Что делается с выводом при совпадении, зависит от режима таймера: в режимах ШИМ те же значения битов означают другое, у каждого режима в даташите своя таблица.
  • COM3C1:0 (биты 3:2) — Режим вывода OC3C. Что делается с выводом при совпадении, зависит от режима таймера: в режимах ШИМ те же значения битов означают другое, у каждого режима в даташите своя таблица.
  • WGM31:0 (биты 1:0) — Режим работы таймера 3 (WGM).

TCCR3B — управление таймером 3, регистр B

Адрес 0x91, 8 бит, после сброса 0x00.

Бит76543210
ИмяICNC3ICES3—WGM33WGM32CS32CS31CS30
ДоступR/WR/WRR/WR/WR/WR/WR/W
После сброса00000000
  • ICNC3 (бит 7) — Подавление помех на входе захвата ICP3.
  • ICES3 (бит 6) — Фронт захвата на входе ICP3.
  • WGM33:2 (биты 4:3) — Режим работы таймера 3 (WGM).
  • CS32:0 (биты 2:0) — Тактирование таймера 3: источник и предделитель.
    CS32:0Значение
    000Таймер остановлен
    001clk без деления
    010clk/8
    011clk/64
    100clk/256
    101clk/1024
    110Внешний сигнал на входе T3, спад
    111Внешний сигнал на входе T3, фронт

TCCR3C — управление таймером 3, регистр C

Адрес 0x92, 8 бит, после сброса 0x00.

Бит76543210
ИмяFOC3A———————
ДоступWRRRRRRR
После сброса00000000
  • FOC3A (бит 7) — Принудительное совпадение для OC3A.

TCNT3 — счётный регистр таймера 3

Адрес 0x94, 16 бит: старший байт TCNT3H по адресу 0x95, младший TCNT3L по 0x94, после сброса 0x0000. В C регистр читается и пишется целиком. На ассемблере старший байт пишут первым, а читают первым младший: 16-битный обмен идёт через общий временный регистр таймера.

ICR3 — регистр захвата таймера 3

Адрес 0x96, 16 бит: старший байт ICR3H по адресу 0x97, младший ICR3L по 0x96, после сброса 0x0000. В C регистр читается и пишется целиком. На ассемблере старший байт пишут первым, а читают первым младший: 16-битный обмен идёт через общий временный регистр таймера.

OCR3A — регистр сравнения A таймера 3

Адрес 0x98, 16 бит: старший байт OCR3AH по адресу 0x99, младший OCR3AL по 0x98, после сброса 0x0000. В C регистр читается и пишется целиком. На ассемблере старший байт пишут первым, а читают первым младший: 16-битный обмен идёт через общий временный регистр таймера.

OCR3B — регистр сравнения B таймера 3

Адрес 0x9A, 16 бит: старший байт OCR3BH по адресу 0x9B, младший OCR3BL по 0x9A, после сброса 0x0000. В C регистр читается и пишется целиком. На ассемблере старший байт пишут первым, а читают первым младший: 16-битный обмен идёт через общий временный регистр таймера.

OCR3C — регистр сравнения C таймера 3

Адрес 0x9C, 16 бит: старший байт OCR3CH по адресу 0x9D, младший OCR3CL по 0x9C, после сброса 0x0000. В C регистр читается и пишется целиком. На ассемблере старший байт пишут первым, а читают первым младший: 16-битный обмен идёт через общий временный регистр таймера.

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

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

Командами IN и OUT доступны TIFR3 (0x18); из них TIFR3 — ещё и командами SBI, CBI, SBIS и SBIC для отдельных битов. TIMSK3, TCCR3A, TCCR3B, TCCR3C, TCNT3, ICR3, OCR3A, OCR3B и OCR3C лежат за пределами области ввода-вывода, их читают и пишут командами LDS и STS (или LD и ST) по адресу в пространстве данных. В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.

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

Все регистры блока, для которых даташит 7766J приводит значение после сброса (TIFR3, TIMSK3, TCCR3A, TCCR3B, TCCR3C, TCNT3, ICR3, OCR3A, OCR3B и OCR3C), после сброса равны нулю.

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

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

Источники

  1. Microchip. Atmel. ATmega16U4/32U4 datasheet (7766J) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATmega_DFP 3.6.299, описание ATmega32U4 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

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

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

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