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

Внешние прерывания ATmega8: регистры и биты

Внешние прерывания: входы INT0 и INT1 с выбором условия — низкий уровень, любое изменение, спад или фронт (биты ISC в MCUCR), разрешает их GICR.

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

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

РегистрАдресНазначениеПосле сброса
MCUCR0x55 (I/O 0x35)Управление микроконтроллером0x00
GIFR0x5A (I/O 0x3A)Флаги внешних прерываний0x00
GICR0x5B (I/O 0x3B)Разрешение внешних прерываний и векторы0x00

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

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

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

Результат

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

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

MCUCR = 0;

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

ldi r16, 0x00
out MCUCR, r16

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

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

Бит76543210
ИмяSESM2SM1SM0ISC11ISC10ISC01ISC00
ДоступR/WR/WR/WR/WR/WR/WR/WR/W
После сброса00000000
  • ISC11:0 (биты 3:2) — Условие срабатывания INT1.
    ISC11:0Значение
    00Низкий уровень
    01Любое изменение
    10Спад
    11Фронт
  • ISC01:0 (биты 1:0) — Условие срабатывания INT0.
    ISC01:0Значение
    00Низкий уровень
    01Любое изменение
    10Спад
    11Фронт

Остальные биты регистра относятся к другим блокам: SE — разрешение сна (команда sleep) (CPU), SM2:0 — режим сна (CPU).

GIFR — флаги внешних прерываний

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

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

GICR — разрешение внешних прерываний и векторы

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

Бит76543210
ИмяINT1INT0————IVSELIVCE
ДоступR/WR/WRRRRR/WR/W
После сброса00000000
  • INT1:0 (биты 7:6) — Разрешение прерываний INTn.
  • IVSEL (бит 1) — Векторы прерываний в загрузочной области.
  • IVCE (бит 0) — Разрешение изменения IVSEL. Изменение IVSEL: записать IVCE = 1, затем в течение четырёх тактов — новое IVSEL при IVCE = 0.

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

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

Командами IN и OUT доступны MCUCR (0x35), GIFR (0x3A) и GICR (0x3B). В программе на C разницы нет: компилятор сам выбирает команду по адресу из avr/io.h.

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

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

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

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

Источники

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

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

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

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