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

Таймер-счётчик 0 (8 бит) ATmega8: регистры и биты

8-битный таймер-счётчик 0: считает такты через предделитель или импульсы на входе T0; блока сравнения у него нет — только счёт и прерывание по переполнению. Тактирование — CS02:0.

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

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

РегистрАдресНазначениеПосле сброса
TCNT00x52 (I/O 0x32)Счётный регистр таймера 00x00
TCCR00x53 (I/O 0x33)Управление таймером 00x00
TIFR0x58 (I/O 0x38)Флаги прерываний таймера0x00
TIMSK0x59 (I/O 0x39)Маска прерываний таймера0x00

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

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

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

Результат

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

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

TCCR0 = 0;

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

ldi r16, 0x00
out TCCR0, r16

TCNT0 — счётный регистр таймера 0

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

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

TCCR0 — управление таймером 0

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

Бит76543210
Имя—————CS02CS01CS00
ДоступRRRRRR/WR/WR/W
После сброса00000000
  • CS02 (бит 2) — Тактирование таймера 0, бит CS02.
  • CS01 (бит 1) — Тактирование таймера 0, бит CS01.
  • CS00 (бит 0) — Тактирование таймера 0, бит CS00.

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

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

Бит76543210
ИмяOCF2TOV2ICF1OCF1AOCF1BTOV1—TOV0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • TOV0 (бит 0) — Флаг переполнения таймера 0. Ставится аппаратно, сбрасывается при входе в обработчик прерывания или записью единицы в этот бит.

Остальные биты регистра относятся к другим блокам: OCF2 — флаг совпадения с ocr2 (TC2), TOV2 — флаг переполнения таймера 2 (TC2), ICF1 — флаг захвата таймера 1 (TC1), OCF1A — флаг совпадения с ocr1a (TC1), OCF1B — флаг совпадения с ocr1b (TC1), TOV1 — флаг переполнения таймера 1 (TC1).

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

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

Бит76543210
ИмяOCIE2TOIE2TICIE1OCIE1AOCIE1BTOIE1—TOIE0
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • TOIE0 (бит 0) — Прерывание по переполнению таймера 0.

Остальные биты регистра относятся к другим блокам: OCIE2 — прерывание по совпадению с ocr2 (TC2), TOIE2 — прерывание по переполнению таймера 2 (TC2), TICIE1 — прерывание по захвату таймера 1 (TC1), OCIE1A — прерывание по совпадению с ocr1a (TC1), OCIE1B — прерывание по совпадению с ocr1b (TC1), TOIE1 — прерывание по переполнению таймера 1 (TC1).

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

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

Командами IN и OUT доступны TCNT0 (0x32), TCCR0 (0x33), TIFR (0x38) и TIMSK (0x39). В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.

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

Все регистры блока, для которых даташит 2486AA приводит значение после сброса (TCNT0, TCCR0, TIFR и TIMSK), после сброса равны нулю.

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

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

Источники

  1. Microchip. Atmel. ATmega8(L) datasheet (2486AA) — сводка регистров, диаграммы битов и значения после сброса
  2. Microchip ATmega_DFP 3.6.299, описание ATmega8 (ATDF) — регистры, битовые поля и их значения, лицензия Apache-2.0

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

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

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