Таймер-счётчик 4 (10 бит, быстрый) ATmega32U4: регистры и биты
10-битный быстрый таймер-счётчик 4: тактируется от системной частоты или от PLL через делитель PLLTM, каналы сравнения OCR4A, OCR4B и OCR4D управляют выводами OC4A, OC4B и OC4D и их инверсиями, период ШИМ задаёт OCR4C. Генератор мёртвого времени (DT4) разносит фронты дополняющих выходов, защита от аварии (TCCR4D) отключает выходы по выводу или по компаратору. Старшие два бита 10-битных значений проходят через общий регистр TC4H.
Данные: описание ATmega32U4 из пакета Microchip ATmega_DFP 3.6.299 (Apache-2.0), сверено со сводкой регистров даташита 7766J.
Регистры блока
| Регистр | Адрес | Назначение | После сброса |
|---|---|---|---|
| TIFR4 | 0x39 (I/O 0x19) | Флаги прерываний таймера 4 | 0x00 |
| TIMSK4 | 0x72 | Маска прерываний таймера 4 | 0x00 |
| TCNT4 | 0xBE | Счётный регистр таймера 4 | 0x00 |
| TC4H | 0xBF | Старшие биты таймера 4 (общий временный регистр) | 0x00 |
| TCCR4A | 0xC0 | Управление таймером 4, регистр A | 0x00 |
| TCCR4B | 0xC1 | Управление таймером 4, регистр B | 0x00 |
| TCCR4C | 0xC2 | Управление таймером 4, регистр C | 0x00 |
| TCCR4D | 0xC3 | Управление таймером 4, регистр D | 0x00 |
| TCCR4E | 0xC4 | Управление таймером 4, регистр E | 0x00 |
| OCR4A | 0xCF | Регистр сравнения A таймера 4 | 0x00 |
| OCR4B | 0xD0 | Регистр сравнения B таймера 4 | 0x00 |
| OCR4C | 0xD1 | Регистр сравнения C таймера 4 | — |
| OCR4D | 0xD2 | Регистр сравнения D таймера 4 | 0x00 |
| DT4 | 0xD4 | Мёртвое время таймера 4 | 0x00 |
Конструктор значения
Выберите регистр и включите нужные биты — конструктор покажет значение и строку кода на C и ассемблере. Начальное значение — после сброса.
Исходные данные
Результат
- Значение
- 0x00
- Двоичное, биты 7…0
- 0000 0000
C (avr-gcc, avr/io.h)
TCCR4A = 0;Ассемблер Microchip (m32u4def.inc)
ldi r16, 0x00
sts TCCR4A, r16TIFR4 — флаги прерываний таймера 4
Адрес 0x39 (I/O 0x19), 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | OCF4D | OCF4A | OCF4B | — | — | TOV4 | — | — |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- OCF4D (бит 7) — Флаг совпадения с OCR4D. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
- OCF4A (бит 6) — Флаг совпадения с OCR4A. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
- OCF4B (бит 5) — Флаг совпадения с OCR4B. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
- TOV4 (бит 2) — Флаг переполнения таймера 4. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
TIMSK4 — маска прерываний таймера 4
Адрес 0x72, 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | OCIE4D | OCIE4A | OCIE4B | — | — | TOIE4 | — | — |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- OCIE4D (бит 7) — Прерывание по совпадению с OCR4D.
- OCIE4A (бит 6) — Прерывание по совпадению с OCR4A.
- OCIE4B (бит 5) — Прерывание по совпадению с OCR4B.
- TOIE4 (бит 2) — Прерывание по переполнению таймера 4.
TCNT4 — счётный регистр таймера 4
Адрес 0xBE, 8 бит, после сброса 0x00.
Регистр данных: все восемь битов — одно число.
TC4H — старшие биты таймера 4 (общий временный регистр)
Адрес 0xBF, 8 бит, после сброса 0x00.
Регистр данных: все восемь битов — одно число.
TCCR4A — управление таймером 4, регистр A
Адрес 0xC0, 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | COM4A1 | COM4A0 | COM4B1 | COM4B0 | FOC4A | FOC4B | PWM4A | PWM4B |
| Доступ | R/W | R/W | R/W | R/W | W | W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- COM4A1:0 (биты 7:6) — Режим вывода OC4A. Что делается с выводом при совпадении, зависит от режима таймера: в режимах ШИМ те же значения битов означают другое, у каждого режима в даташите своя таблица.
- COM4B1:0 (биты 5:4) — Режим вывода OC4B. Что делается с выводом при совпадении, зависит от режима таймера: в режимах ШИМ те же значения битов означают другое, у каждого режима в даташите своя таблица.
- FOC4A (бит 3) — Принудительное совпадение для OC4A.
- FOC4B (бит 2) — Принудительное совпадение для OC4B.
- PWM4A (бит 1) — ШИМ канала A таймера 4.
- PWM4B (бит 0) — ШИМ канала B таймера 4.
TCCR4B — управление таймером 4, регистр B
Адрес 0xC1, 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | PWM4X | PSR4 | DTPS41 | DTPS40 | CS43 | CS42 | CS41 | CS40 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- PWM4X (бит 7) — Инверсия выходов ШИМ таймера 4.
- PSR4 (бит 6) — Сброс предделителя таймера 4.
- DTPS41:0 (биты 5:4) — Предделитель мёртвого времени таймера 4.
- CS43:0 (биты 3:0) — Тактирование таймера 4: источник и предделитель.
TCCR4C — управление таймером 4, регистр C
Адрес 0xC2, 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | COM4A1S | COM4A0S | COM4B1S | COM4B0S | COM4D1 / COM4D1S | COM4D0 / COM4D0S | FOC4D | PWM4D |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- COM4A1S (бит 7) — Копия бита COM4A1.
- COM4A0S (бит 6) — Копия бита COM4A0.
- COM4B1S (бит 5) — Копия бита COM4B1.
- COM4B0S (бит 4) — Копия бита COM4B0.
- COM4D1:0 (биты 3:2) — Режим вывода OC4D. Что делается с выводом при совпадении, зависит от режима таймера: в режимах ШИМ те же значения битов означают другое, у каждого режима в даташите своя таблица.
- FOC4D (бит 1) — Принудительное совпадение для OC4D.
- PWM4D (бит 0) — ШИМ канала D таймера 4.
TCCR4D — управление таймером 4, регистр D
Адрес 0xC3, 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | FPIE4 | FPEN4 | FPNC4 | FPES4 | FPAC4 | FPF4 | WGM41 | WGM40 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- FPIE4 (бит 7) — Прерывание защиты от аварии.
- FPEN4 (бит 6) — Защита от аварии включена.
- FPNC4 (бит 5) — Подавление помех на входе защиты.
- FPES4 (бит 4) — Фронт срабатывания защиты.
- FPAC4 (бит 3) — Защита по аналоговому компаратору.
- FPF4 (бит 2) — Флаг срабатывания защиты.
- WGM41:0 (биты 1:0) — Режим работы таймера 4 (WGM).
TCCR4E — управление таймером 4, регистр E
Адрес 0xC4, 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | TLOCK4 | ENHC4 | OC4OE5 | OC4OE4 | OC4OE3 | OC4OE2 | OC4OE1 | OC4OE0 |
| Доступ | R | R | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- TLOCK4 (бит 7) — Блокировка обновления регистров сравнения.
- ENHC4 (бит 6) — Расширенный режим: ещё один бит точности сравнения.
- OC4OE5:0 (биты 5:0) — Разрешение выходов OC4x и их инверсий.
OCR4A — регистр сравнения A таймера 4
Адрес 0xCF, 8 бит, после сброса 0x00.
Регистр данных: все восемь битов — одно число.
OCR4B — регистр сравнения B таймера 4
Адрес 0xD0, 8 бит, после сброса 0x00.
Регистр данных: все восемь битов — одно число.
OCR4C — регистр сравнения C таймера 4
Адрес 0xD1, 8 бит.
Регистр данных: все восемь битов — одно число.
OCR4D — регистр сравнения D таймера 4
Адрес 0xD2, 8 бит, после сброса 0x00.
Регистр данных: все восемь битов — одно число.
DT4 — мёртвое время таймера 4
Адрес 0xD4, 8 бит, после сброса 0x00.
| Бит | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
|---|---|---|---|---|---|---|---|---|
| Имя | DT4H3 | DT4H2 | DT4H1 | DT4H0 | DT4L3 | DT4L2 | DT4L1 | DT4L0 |
| Доступ | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W |
| После сброса | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
- DT4H3:0 (биты 7:4) — Мёртвое время таймера 4, старшие 4 бита.
- DT4L3:0 (биты 3:0) — Мёртвое время таймера 4, младшие 4 бита.
Частые вопросы
Какими командами ассемблера обращаться к регистрам TC4 ATmega32U4?
Командами IN и OUT доступны TIFR4 (0x19); из них TIFR4 — ещё и командами SBI, CBI, SBIS и SBIC для отдельных битов. TIMSK4, TCNT4, TC4H, TCCR4A, TCCR4B, TCCR4C, TCCR4D, TCCR4E, OCR4A, OCR4B, OCR4C, OCR4D и DT4 лежат за пределами области ввода-вывода, их читают и пишут командами LDS и STS (или LD и ST) по адресу в пространстве данных. В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.
Какие значения у регистров TC4 после сброса?
Все регистры блока, для которых даташит 7766J приводит значение после сброса (TIFR4, TIMSK4, TCNT4, TC4H, TCCR4A, TCCR4B, TCCR4C, TCCR4D, TCCR4E, OCR4A, OCR4B, OCR4D и DT4), после сброса равны нулю.
Как установить биты TCCR4C на C?
Имена регистров и битов определены в avr/io.h, бит задаётся сдвигом единицы на его номер: TCCR4C = (1 << COM4A1S) | (1 << COM4A0S); записывает новое значение целиком, а TCCR4C |= (1 << COM4A1S); меняет только этот бит. Готовую строку для любого набора битов даёт конструктор на этой странице.
Источники
- Microchip. Atmel. ATmega16U4/32U4 datasheet (7766J) — сводка регистров, диаграммы битов и значения после сброса
- Microchip ATmega_DFP 3.6.299, описание ATmega32U4 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0
Нашли ошибку в регистрах?
Другие регистры ATmega32U4
- Все регистры ATmega32U4Таблица по адресам
- Порты ввода-выводаPINB, DDRB, PORTB, PINC, DDRC, PORTC
- SPISPCR, SPSR, SPDR
- USART1UCSR1A, UCSR1B, UCSR1C, UCSR1D, UBRR1, UDR1
- EEPROMEECR, EEDR, EEAR
- Таймер-счётчик 0 (8 бит)TIFR0, GTCCR, TCCR0A, TCCR0B, TCNT0, OCR0A
- Таймер-счётчик 1 (16 бит)TIFR1, TIMSK1, TCCR1A, TCCR1B, TCCR1C, TCNT1
- Таймер-счётчик 3 (16 бит)TIFR3, TIMSK3, TCCR3A, TCCR3B, TCCR3C, TCNT3
- Внешние прерыванияPCIFR, EIFR, EIMSK, PCICR, EICRA, EICRB
- TWI (I²C)TWBR, TWSR, TWAR, TWDR, TWCR, TWAMR
- АЦПADC, ADCSRA, ADCSRB, ADMUX, DIDR2, DIDR0
- Аналоговый компараторACSR, ADCSRB, DIDR1
- Ядро и системные регистрыGPIOR0, GPIOR1, GPIOR2, OCDR, SMCR, MCUSR
- PLLPLLCSR, PLLFRQ
- USB-контроллерUHWCON, USBCON, USBSTA, USBINT, UDCON, UDINT