Регистр А управления внешними прерываниями – EICRA

Разряд

7

6

5

4

3

2

1

0

ICS31

ICS30

ICS21

ICS20

ICS11

ICS10

ICS01

ICS00

EICRA

Чтение/запись

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

Данный регистр на доступен в режиме совместимости с ATmega103, но исходная установка соответствует настройке на прерывания по низкому уровню на INT3:0, что также как и в ATmega103.

Разряды 7..0 – ISC31, ISC30 – ISC00, ISC00: Биты выбора условия генерации внешнего прерывания 3 - 0

Внешние прерывания 3 - 0 активизируются через внешние выводы INT3:0, если установлены флаг I в регистре статуса SREG и соответствующая маска прерывания в EIMSK. Выбор уровня или фронта для активизации внешнего прерывания осуществляется в соответствии с таблицей 48. Фронты на INT3..INT0 выявляются асинхронно. Прерывание по выв. INT3:0 будет сгенерировано, если длительность импульса будет больше минимально необходимой (см. табл. 49). При возникновении импульсов меньшей длительности генерация прерывания не гарантируется. Если выбрано прерывание по низкому уровню, то для генерации прерывания необходимо, чтобы этот уровень оставался на прежнем низком уровне до момента завершения выполнения текущей инструкции. После разрешения прерывания по уровню оно будет генерироваться непрерывно до тех пор, пока на входе присутствует низкий уровень. При изменении бит ISCn может возникнуть прерывание. Поэтому, рекомендуется вначале отключить прерывание INTn путем сброса бита разрешения прерывания в регистре EIMSK. После этого, значение бит ISCn может быть изменено. И, наконец, перед возобновлением работы прерываний необходимо сбросить флаг прерывания INTn путем записи лог. 1 во флаг прерывания (INTFn) в регистре EIFR.

НЕ нашли? Не то? Что вы ищете?

Таблица 48 – Задание условия генерации запроса на прерывание(1)

ISCn1

ISCn0

Описание

0

0

Низкий уровень на INTn генерирует запрос на прерывание

0

1

Зарезервировано

1

0

Падающий фронт на INTn генерирует асинхронно запрос на прерывание

1

1

Нарастающий фронт на INTn генерирует асинхронно запрос на прерывание

Прим.: 1. n = 3, 2, 1 или 0.

Перед изменением бит ISCn1/ISCn0 необходимо запретить работу прерывания путем очистки бита разрешения прерывания в регистре EIMSK. В противном случае прерывание может возникнуть после изменения данных бит.

Таблица 49 – Характеристики асинхронного внешнего прерывания

Обозначение

Параметр

Мин.

Типично

Макс.

Ед. изм.

tINT

Минимальная длительность импульса для генерации асинхронного прерывания

50

нс

Регистр B управления внешними прерываниями – EICRB

Разряд

7

6

5

4

3

2

1

0

ICS71

ICS70

ICS61

ICS60

ICS51

ICS50

ICS41

ICS40

EICRB

Чтение/запись

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

Разряды 7..0 – ISC71, ISC70 - ISC41, ISC40: Бита выбора условия генерации внешнего прерывания 7 - 4

Внешние прерывания 7 - 4 активизируются через внешние выводы INT7:4, если установлены флаг I в регистре статуса SREG и соответствующая маска прерывания в регистре EIMSK. Условие, по которому генерируется прерывание, выбирается исходя из данных таблицы 50. Для определения фронтов на выводах INT7:4 осуществляется выборка их состояний. Если выбрано прерывание по фронту или изменению уровня, то прерывание будет сгенерировано, если на входе появляется импульс, длительность которого больше одного периода синхронизации. При действии на входе более коротких импульсов генерация прерывания не гарантируется. Обратите внимание, что частота синхронизации ЦПУ может быть ниже чем частота XTAL, если разрешена работа делителя частоты XTAL. Если выбрано прерывание по низкому уровню, то прерывание генерируется, если до момента окончания выполнения текущей инструкции на входе по прежнему присутствует низкий уровень. Если разрешено прерывание по уровню, то оно будет генерироваться непрерывно до тех пор, пока на входе присутствует низкий уровень.

Таблица 50 – Задание условия генерации запроса на прерывание(1)

ISCn1

ISCn0

Описание

0

0

Низкий уровень на INTn генерирует запрос на прерывание

0

1

Любое изменение логического состояния на INTn генерирует запрос на прерывание

1

0

Падающий фронт, выявленный по двум выборкам на INTn, генерирует запрос на прерывание.

1

1

Нарастающий фронт, выявленный по двум выборкам на INTn, генерирует запрос на прерывание.

Прим. 1: n = 7, 6, 5 или 4.

Перед изменением бит ISCn1/ISCn0 необходимо запретить работу прерывания путем очистки бита разрешения прерывания в регистре EIMSK. В противном случае прерывание может возникнуть после изменения данных бит.

Регистр маски внешнего прерывания – EIMSK

Разряд

7

6

5

4

3

2

1

0

INT7

INT6

INT5

INT4

INT3

INT2

INT1

INT0

EIMSK

Чтение/запись

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

Разряды 7..0 – INT7 – INT0: Разрешение запроса на внешнее прерывание 7 - 0

Если в бит INT7 – INT0 и в бит I регистра статуса SREG записать лог. 1, то разрешается работа внешнего прерывания по соответствующему выводу. Биты выбора условия генерации прерывания в регистрах управления внешними прерываниями EICRA и EICRB определяют по какому условию генерируется прерывание: по нарастающему фронту, по падающему фронту или по уровню. Любой из данных выводов сохраняет активность, даже если он настроен на вывод. Данная особенность может использоваться для программной генерации прерывания.

Разряд

7

6

5

4

3

2

1

0

INTF7

INTF6

INTF5

INTF4

INTF3

INTF2

INTF1

INTF0

EIFR

Чтение/запись

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Чт./Зп.

Исх. значение

0

0

0

0

0

0

0

0

Разряды 7..0 – INTF7 - INTF0: Флаги внешних прерываний 7 - 0

Если фронт или изменение логического состояния на INT7:0 вызывает прерывание, то соответствующий флаг INTF7:0 принимает единичное состояние. Если установлены бит I регистра статуса SREG и соответствующий бит разрешения прерывания INT7:0 в регистре EIMSK, то микроконтроллер выполнит переход на вектор прерывания. Флаг сбрасывается аппаратно после выполнения процедуры обработки прерывания. Альтернативно флаг может быть сброшен программно путем записи лог. 1 в соответствующий бит. Если INT7:0 настроены на генерацию прерывания по уровню, то флаги постоянно находятся в сброшенном состоянии. Обратите внимание, что при переходе в режим сна с отключенными прерываниями INT3:0 входные буферы этих выводов будут отключенными. В свою очередь это может вызвать изменение внутреннего состояния сигналов, которое приведет к установке флагов INTF3:0. См. также “Разрешение цифрового ввода и режимы сна”.

Аналоговый компаратор

Аналоговый компаратор сравнивает уровни напряжений на неинвертирующем входе AIN0 и инвертирующем входе AIN1. Если напряжение на неинвертирующем входе AIN0 превышает напряжение на инвертирующем входе AIN1, то выход аналогового компаратора ACO принимает единичное состояние. Выход компаратора может быть настроен для использования в качестве источника входного сигнала для схемы захвата фронтов таймера-счетчика 1. Кроме того, компаратор может генерировать собственный запрос на обработку прерывания. Пользователь может выбрать несколько событий, по которым возникает прерывание: нарастающий, падающий фронт на выходе компаратора или любое его изменение. Функциональная схема компаратора и связанной с ним логики представлена на рисунке 107.

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66