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

Таймер-счётчик 1 (8 бит, с PLL) ATtiny85: регистры и биты

8-битный таймер-счётчик 1 тактируется от системной частоты или от быстрой периферийной частоты PCK — 64 МГц от PLL (32 МГц в режиме LSM), с предделителем до 1/16384 (биты CS13:0). Два канала ШИМ, OCR1A и OCR1B, управляют выводами OC1A и OC1B и их инверсиями, период ШИМ задаёт OCR1C; генератор мёртвого времени (DT1A, DT1B, DTPS1) разносит фронты дополняющих выходов.

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

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

РегистрАдресНазначениеПосле сброса
DTPS10x43 (I/O 0x23)Предделитель мёртвого времени таймера 10x00
DT1B0x44 (I/O 0x24)Мёртвое время канала B таймера 10x00
DT1A0x45 (I/O 0x25)Мёртвое время канала A таймера 10x00
OCR1B0x4B (I/O 0x2B)Регистр сравнения B таймера 10x00
GTCCR0x4C (I/O 0x2C)Общее управление таймерами0x00
OCR1C0x4D (I/O 0x2D)Регистр сравнения C таймера 10xFF
OCR1A0x4E (I/O 0x2E)Регистр сравнения A таймера 10x00
TCNT10x4F (I/O 0x2F)Счётный регистр таймера 10x00
TCCR10x50 (I/O 0x30)Управление таймером 10x00
TIFR0x58 (I/O 0x38)Флаги прерываний таймера0x00
TIMSK0x59 (I/O 0x39)Маска прерываний таймера0x00

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

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

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

Результат

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

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

TCCR1 = 0;

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

ldi r16, 0x00
out TCCR1, r16

DTPS1 — предделитель мёртвого времени таймера 1

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

Бит76543210
Имя——————DTPS11DTPS10
ДоступRRRRRRR/WR/W
После сброса00000000
  • DTPS11:0 (биты 1:0) — Предделитель мёртвого времени таймера 1.

DT1B — мёртвое время канала B таймера 1

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

Бит76543210
ИмяDT1BH3DT1BH2DT1BH1DT1BH0DT1BL3DT1BL2DT1BL1DT1BL0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • DT1BH3:0 (биты 7:4) — Мёртвое время канала B, старшие 4 бита. Две тетрады регистра задают задержку фронтов двух дополняющих выходов канала — прямого и инверсного; от 0 до 15 тактов предделителя мёртвого времени.
  • DT1BL3:0 (биты 3:0) — Мёртвое время канала B, младшие 4 бита. Две тетрады регистра задают задержку фронтов двух дополняющих выходов канала — прямого и инверсного; от 0 до 15 тактов предделителя мёртвого времени.

DT1A — мёртвое время канала A таймера 1

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

Бит76543210
ИмяDT1AH3DT1AH2DT1AH1DT1AH0DT1AL3DT1AL2DT1AL1DT1AL0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • DT1AH3:0 (биты 7:4) — Мёртвое время канала A, старшие 4 бита. Две тетрады регистра задают задержку фронтов двух дополняющих выходов канала — прямого и инверсного; от 0 до 15 тактов предделителя мёртвого времени.
  • DT1AL3:0 (биты 3:0) — Мёртвое время канала A, младшие 4 бита. Две тетрады регистра задают задержку фронтов двух дополняющих выходов канала — прямого и инверсного; от 0 до 15 тактов предделителя мёртвого времени.

OCR1B — регистр сравнения B таймера 1

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

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

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

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

Бит76543210
ИмяTSMPWM1BCOM1B1COM1B0FOC1BFOC1APSR1PSR0
ДоступR/WRRRRRRR/W
После сброса00000000
  • PWM1B (бит 6) — ШИМ канала B таймера 1.
  • COM1B1:0 (биты 5:4) — Режим вывода OC1B. Что делается с выводом при совпадении, зависит от режима таймера: в режимах ШИМ те же значения битов означают другое, у каждого режима в даташите своя таблица.
  • FOC1B (бит 3) — Принудительное совпадение для OC1B.
  • FOC1A (бит 2) — Принудительное совпадение для OC1A.
  • PSR1 (бит 1) — Сброс предделителя таймера 1.

Остальные биты регистра относятся к другим блокам: TSM — режим синхронизации предделителей (TC0), PSR0 — сброс предделителя таймера 0 (TC0).

OCR1C — регистр сравнения C таймера 1

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

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

OCR1A — регистр сравнения A таймера 1

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

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

TCNT1 — счётный регистр таймера 1

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

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

TCCR1 — управление таймером 1

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

Бит76543210
ИмяCTC1PWM1ACOM1A1COM1A0CS13CS12CS11CS10
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • CTC1 (бит 7) — Сброс таймера 1 при совпадении с OCR1C.
  • PWM1A (бит 6) — ШИМ канала A таймера 1.
  • COM1A1:0 (биты 5:4) — Режим вывода OC1A. Что делается с выводом при совпадении, зависит от режима таймера: в режимах ШИМ те же значения битов означают другое, у каждого режима в даташите своя таблица.
    COM1A1:0Значение
    00Вывод не подключён (обычный режим)
    01Переключение вывода (обычный режим)
    10Сброс вывода в 0 (обычный режим)
    11Установка вывода в 1 (обычный режим)
  • CS13:0 (биты 3:0) — Тактирование таймера 1: источник и предделитель.
    CS13:0Значение
    0000Таймер остановлен
    0001clk без деления
    0010clk/2
    0011clk/4
    0100clk/8
    0101clk/16
    0110clk/32
    0111clk/64
    1000clk/128
    1001clk/256
    1010clk/512
    1011clk/1024
    1100clk/2048
    1101clk/4096
    1110clk/8192
    1111clk/16384

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

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

Бит76543210
Имя—OCF1AOCF1BOCF0AOCF0BTOV1TOV0—
ДоступRR/WR/WR/WR/WR/WR/WR
После сброса00000000
  • OCF1A (бит 6) — Флаг совпадения с OCR1A. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
  • OCF1B (бит 5) — Флаг совпадения с OCR1B. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.
  • TOV1 (бит 2) — Флаг переполнения таймера 1. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.

Остальные биты регистра относятся к другим блокам: OCF0A — флаг совпадения с ocr0a (TC0), OCF0B — флаг совпадения с ocr0b (TC0), TOV0 — флаг переполнения таймера 0 (TC0).

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

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

Бит76543210
Имя—OCIE1AOCIE1BOCIE0AOCIE0BTOIE1TOIE0—
ДоступRR/WR/WR/WR/WR/WR/WR
После сброса00000000
  • OCIE1A (бит 6) — Прерывание по совпадению с OCR1A.
  • OCIE1B (бит 5) — Прерывание по совпадению с OCR1B.
  • TOIE1 (бит 2) — Прерывание по переполнению таймера 1.

Остальные биты регистра относятся к другим блокам: OCIE0A — прерывание по совпадению с ocr0a (TC0), OCIE0B — прерывание по совпадению с ocr0b (TC0), TOIE0 — прерывание по переполнению таймера 0 (TC0).

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

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

Командами IN и OUT доступны DTPS1 (0x23), DT1B (0x24), DT1A (0x25), OCR1B (0x2B), GTCCR (0x2C), OCR1C (0x2D), OCR1A (0x2E), TCNT1 (0x2F), TCCR1 (0x30), TIFR (0x38) и TIMSK (0x39). В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.

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

После сброса OCR1C = 0xFF; остальные регистры блока обнулены. Значения — из диаграмм регистров в даташите 2586Q.

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

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

Источники

  1. Microchip. Atmel. ATtiny25/45/85 datasheet (2586Q) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATtiny_DFP 3.4.278, описание ATtiny85 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

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

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

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