- •4. Архитектура мк aTmega16
- •Пространство ввода/вывода avr-мк
- •Регистр статуса
- •Указатель стека
- •Регистр управления/статуса приемопередатчика scon
- •Прерывания и их обработка
- •10. Внешние прерывания
- •12.Таймеры/счетчики мк aTmega16
- •Регистр управления таймером/счетчиком 0
- •Таймер/счетчик 0
- •Регистр совпадения таймера/счетчика 0
- •Регистр масок прерываний от таймеров/ счетчиков
- •Регистр флагов прерываний от т аймеров/счетчиков
- •Общий регистр управления прерываниями
- •Регистр флагов внешних прерыван ий
- •14.Таймер/счетчик 2
- •Регистр статуса асинхронного режима
- •Дополнение: Таймер-счетчик тс/2 с расширенными возможностями Таймер счетчик т/с2 микроконтроллера 8052
- •Регистр управление таймера/счетчика 2 t2com
- •Режимы работы таймера/счетчика 2
- •Регистр режима таймера/счетчика 2 т2моd
- •Дополнительный регистр приоритетов прерываний iрн
- •16.Особенности подключения датчиков с механическими контактами к мк
- •2. Классификация.
- •18. Аналоговый компаратор avr-мк
- •20. Двоично-десятичные коды
- •1. Форматы представления десятичных чисел
- •2. Преобразование целых 16-битных чисел в двоично-десятичные числа
- •3. Преобразование двоичной дроби в двоично-десятичную дробь
Общий регистр управления прерываниями
Общий
регистр
управления
прерываниями
(GICR
-
General
Interrupt
Control
Register)
задает
место
расположения
таблицы
векторов
прерываний
и
управляет
разрешением
внешних
прерываний.
-
Адрес: $3B ($5B)
7
6
5
4 3 2 1
0
GICR Биты
INT1
INT0
INT2
- - - IVSEL
IVCE
Чтение/запись
R/W
R/W
R/W
R R R R/W
R/W
Начальное состояние
0
0
0
0 0 0 0
0
Bits 0 - IVСE: Interrupt Vector Change Enable – бит разрешения изменения таблицы прерываний.
Если бит установлен (лог. 1), разрешено изменение бита выбора таблицы векторов прерываний. Бит сбрасывается в течение четырех тактов тактового генератора после операции записи в него логического уровня или после записи бита выбора таблицы векторов прерываний.
Bits 1 - IVSEL: Interrupt Vector Select – бит выбора таблицы прерываний. Если бит сброшен (лог. 0), таблица векторов прерываний размещается в начале памяти программ. Если бит установлен, таблица векторов прерываний размещается в начале загрузочной области памяти программ. Адрес начала загрузочной области определяется установкой специальных битов конфигурации BOOTSZ, устанавливаемых при программировании МК.
Bits 5 – 7 - INT1/0/2: External Interrupt Request 1/0/2 Enable – бит разрешения запроса внешнего прерывания 1/0/2.
Если соответствующий бит установлен (лог. 1) и установлен бит глобального разрешения прерываний I в регистре статуса, то разрешены запросы внешних прерываний 1/0/2. Любая активность на соответствующем выводе приведет к возникновению разрешенного прерывания, даже если вывод сконфигурирован как выход. При возникновении прерывания выполнение основной программы прерывается и осуществляется переход по адресу вектора возникшего прерывания. При этом в регистре флагов внешних прерываний устанавливается флаг возникшего прерывания.
Регистр флагов внешних прерыван ий
Возникновение
внешних
прерываний
индицируется
установкой
флагов
регистра
флагов
внешних
прерываний
(GIFR
-
General
Interrupt
Flag
Register).
Адрес: $38 ($58) |
7 |
6 |
5 |
4 |
|
3 |
|
2 |
|
1 |
|
0 |
GIFR Биты |
INTF1 |
INTF0 |
INTF2 |
- |
|
- |
|
- |
|
- |
|
- |
Чтение/запись |
R/W |
R/W |
R/W |
R |
|
R |
|
R |
|
R |
|
R |
Начальное состояние |
0 |
0 |
0 |
0 |
|
0 |
|
0 |
|
0 |
|
0 |
Bits 7 – 5 – INTF1 – INTF2: External Interrupt 1 – 2 Flags – флаги внешних прерываний 1 – 2.
При поступлении запроса на прерывание на какой-либо из выводов INT0 – INT2, будет установлен в состояние лог. 1 соответствующий флаг прерывания INTF0 – INTF2. Если бит I регистра статуса и соответствующий
бит разрешения INT0– INT2 в общем регистре управления прерываниями будут установлены, то MК перейдет на начало вектора прерывания. По завершении подпрограммы прерывания флаг очищается. Кроме того, его можно очистить, записав в него лог. 1.
Bits 4 – 0 - Res: Reserved Bits – зарезервированные биты.
Эти биты зарезервированы и при считывании всегда покажут состояние лог. 0.
Дополнение:
Описание работы таймера/счётчика 0. Прерывания от TC0
Таймер/счётчик 0 (TC0) представляет из себя 8-битный модуль, содержащий 3 регистра. В регистре TCNT0 происходит счёт импульсов. Регистр доступен как для чтения, так и для записи, т.е. можно задать некое начальное значение и ТС0 продолжит счёт от этого значения. Счёт идёт на увеличение. Скорость и режимы счёта можно задать с регистра TCCR0. Общий вид регистра TCCR0:
Тактовая частота процессора подаётся на вход схемы деления частоты ТС0. Делённая частота попадает на счётную схему. Режимы деления задаются в трёх младших битах регистра TCCR0:
Таким образом, если в эти три бита записаны 000, то ТС0 остановлен. Если 001, то ТС0 считает импульсы частоты процессора. И если один так процессора длится 1 мс, то в в TCNT0 значение будет увеличиваться каждую 1 мс. Если записано 101, то схема предделения будет тактовую частоту процессора делить на 1024, и один раз за 1024 такта процессора ТС0 будет увеличивать значение в TCNT0. External Clock Source - режим счёта внешних импульсов, поступающих на вывод T0. Остальные биты позволяют устанавливать такие режимы счётчика, при которых он будет своё состояние показывать на выводe OC0.
Регистр OCR0 служит для задания значения, при достижении которого в режиме счёта, ТС0 генерирует прерывание.
Обработка прерываний от TC0
ТС0 при переполнении значения TCNT0 посылает процессору сигнал Timer/Counter 0 Overflow. Также процессору посылается сигнал Timer/Counter 0 Compare Match при совпадении значений в регистрах TCNT0 и OCR0. Реакция процессора на эти сигналы (вызов соответствующих прерываний) зависит от значения
регистров TIMSK и флага I в Status регистре процессора.
Для задания реакции на события TC0 в регистре TIMSK служат два бита:
Бит 0 - TOIE0 - Когда этот бит установлен в 1 и разрешены прерывания, процессор реагирует на сигнал переполнения ТС0 и вызывает прерывание по вектору $012 (OVF0addr). Бит 1 - OCIE0 - Когда этот бит установлен в 1 и разрешены прерывания, процессор реагирует вызовом прерывания по вектору $026 (OC0addr) на событие совпадения счёта с константой в регистре OCR0.
