Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Обработка прерываний




Микроконтроллеры ATmega603/103 содержат два специальных 8-разрядных регистра масок прерываний: регистр масок внешних прерываний EIMSK (External Interrupt Mask) и регистр масок прерываний по таймеру/счетчику TIMSK (Timer/Counter Interrupt Mask). Кроме того, в регистрах управления периферией могут быть организованы и другие биты разрешения и биты масок.

При возникновении прерывания бит I разрешения глобального прерывания (Global Interrupt Enable) очищается и все прочие прерывания запрещаются. Пользовательское ПО, с тем, чтобы разрешить вложенные прерывания, может установить бит I внутри подпрограммы обработки прерывания. Выход из подпрограммы обработки прерывания происходит по команде RETI, при этом бит I устанавливается в состояние 1.

Когда счетчик команд указывает вектор подпрограммы обработки прерывания, соответствующий флаг, вызвавший прерывание, аппаратно очищается. Некоторые флаги прерываний можно очистить, записав в соответствующий бит(ы) очищаемого флага логическую единицу.

Регистр масок внешних прерываний - EIMSK - (External Interrupt Mask Register)

Регистр статуса MCU выдает информацию об источнике, вызвавшем сброс MCU.

Биты
               

 

$39 ($59)
INT7 INT6 INT5 INT4 INT3 INT2 INT1 INT0

 

EIMSK
Чтение/Запись
R/W R/W R/W R/W R/W R/W R/W R/W

 

 
Начальное состояние
               

 

 
  • Bits 7..4 - INT7 - INT4: External Interrupt Request 7-4 Enable - Разрешение запроса внешних прерываний с 4 по 7
    При установленных битах INT7- INT4 и установленном бите I регистра статуса (SREG) разрешаются прерывания по соответствующим выводам входов сигналов прерываний. Бит управления опознаванием прерывания регистра управления внешними прерываниями EICR (External Interrupt Control Register) определяет срабатывание по нарастающему или падающему фронту или по логическому уровню. Активация любого из этих выводов вызовет запрос прерывания даже если вывод будет разрешен как выход. Это обеспечивает возможность организации программного прерывания.
  • Bits 3..0 - INT3 - INT0: External Interrupt Request 3-0 Enable - Разрешение запроса внешних прерываний с 0 по 3
    При установленных битах INT3- INT0 и установленном бите I регистра статуса (SREG) разрешаются прерывания по соответствующим входам прерываний. Внешние прерывания всегда вызывают прерывание низким уровнем. Активация любого из этих выводов вызовет запрос прерывания даже если вывод будет разрешен как выход. Это обеспечивает возможность организации программного прерывания. Запрос прерывания по логическому уровню, если он разрешен, будет генерировать запрос прерывания до тех пор, пока на входе будет находиться низкий уровень.

Регистр флагов внешних прерываний - EIFR (External Interrupt Flag Register)

Биты
               

 

$38 ($58)
INTF7 INTF6 INTF5 INTF4 - - - -

 

EIFR
Чтение/Запись
R/W R/W R/W R/W R R R R

 

 
Начальное состояние
               

 

 
  • Bits 7..4 - INTF7 - INTF4: External Interrupt 7-4 Flags - Флаги внешних прерываний с 4 по 7
    В случае поступления запроса на прерывание на какой либо из выводов INT7 - INT4, будет установлен в 1 соответствующий флаг прерывания (INTF7 - INTF4). Если бит I регистра SREG и соответствующий бит разрешения (INT7 - INT4) в EIMSK будут установлены, то MCU перейдет к вектору прерывания. По завершению подпрограммы прерывания флаг очищается. Кроме того, его можно очистить, записав в него логическую 1.
  • Bits 3..0 - Res: Reserved Bits - Зарезервированные биты
    Эти биты зарезервированы и при считывании всегда покажут состояние 0.

Регистр управления внешними прерываниями - EICR (External Interrupt Control Register)

Биты
               

 

$38 ($58)
ISC71 ISC70 ISC61 ISC60 ISC51 ISC50 ISC41 ISC40

 

EICR
Чтение/Запись
R/W R/W R/W R/W R/W R/W R/W R/W

 

 
Начальное состояние
               

 

 
  • Bits 7..0 - ISCX1, ISCX0: External Interrupt 7-4 Sense Control bits - Биты управления опознаванием внешних прерываний с 4 по 7
    Внешние прерывания 7 - 4 активируются по выводам INT7 - INT4, если установлен флаг I в SREG и установлена соответствующая маска в EIMSK. Запрос прерывания по логическому уровню или фронтам определяется в следующей таблице:

Таблица 9. Управление опознаванием прерывания

ISCX1 ISCX0 Описание
    Запрос прерывания генерируется низким уровнем на INTX
    Зарезервирован
    Запрос прерывания генерируется падающим фронтом на INTX
    Запрос прерывания генерируется нарастающим фронтом на INTX

Примечание: X может быть равен 7, 6, 5 или 4.

При изменении битов ISC11/ISC10 прерывание должно быть запрещено путем очистки бита разрешения в регистре GIMSK. В ином случае может произойти прерывание. Запрос прерывания по логическому уровню, если он разрешен, будет генерировать запрос прерывания до тех пор, пока на входе будет находиться низкий уровень.

Регистр масок прерывания по таймерам/счетчикам - TIMSK (Timer/Counter Interrupt Mask Register)

Биты
               

 

$37 ($57)
OCIE2 TOIE2 TICIE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0

 

TIMSK
Чтение/Запись
R/W R/W R/W R/W R/W R/W R/W R/W

 

 
Начальное состояние
               

 

 
  • Bit 7 - OCIE2: Timer/Counter2 Output Compare Interrupt Enable - Разрешение прерывания по совпадению таймера/счетчика2
    При установленном бите OCIE2 и установленном бите I регистра статуса разрешается прерывание по совпадению содержимого регистра сравнения и состояния таймера/ счетчика2. Соответствующее прерывание (с вектором $0012) выполняется если произойдет совпадение при сравнении содержимого регистра сравнения и состояния таймера/счетчика2. В регистре флагов прерывания TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг совпадения таймера/счетчика2.
  • Bit 6 - TOIE2: Timer/Counter2 Overflow Interrupt Enable - Разрешение прерывания по переполнению таймера/счетчика2
    При установленном бите TOIE2 и установленном бите I регистра статуса разрешается прерывание по переполнению таймера/счетчика2. Соответствующее прерывание (с вектором $0014) выполняется если произойдет переполнение таймера/счетчика2. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг переполнения таймера/счетчика2.
  • Bit 5 - TICIE1: Timer/Counter1 Input Capture Interrupt Enable - Разрешение прерывания по захвату таймера/счетчика1
    При установленном бите TICIE1 и установленном бите I регистра статуса разрешается прерывание по захвату таймера/счетчика1. Соответствующее прерывание (с вектором $0016) выполняется если произойдет запуск захвата по выводу 29, PD4(IC1). В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг захвата таймера/счетчика1.
  • Bit 4 - OCE1A: Timer/Counter1 Output CompareA Match Interrupt Enable - Разрешение прерывания по совпадению регистра A с таймером/счетчиком1
    При установленном бите OCIE1A и установленном бите I регистра статуса разрешается прерывание по совпадению регистра A с состоянием таймера/счетчика1. Соответствующее прерывание (с вектором $0018) выполняется если произойдет совпадение содержимого регистра A сравнения выхода с состоянием таймера/ счетчика1. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг совпадения регистра A с таймером/счетчиком1.
  • Bit 3 - OCIE1B: Timer/Counter1 Output CompareB Match Interrupt Enable - Разрешение прерывания по совпадению регистра B с таймером/счетчиком1
    При установленном бите OCIE1B и установленном бите I регистра статуса разрешается прерывание по совпадению регистра B с состоянием таймера/счетчика1. Соответствующее прерывание (с вектором $001A) выполняется если произойдет совпадение содержимого регистра B сравнения выхода с состоянием таймера/счетчика1. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг совпадения регистра B с таймером/счетчиком1.
  • Bit 2 - TOIE1: Timer/Counter1 Overflow Interrupt Enable - Разрешение прерывания по переполнению таймера/счетчика1
    При установленном бите OCIE1B и установленном бите I регистра статуса разрешается прерывание по переполнению таймера/счетчика1. Соответствующее прерывание (с вектором $001C) выполняется если произойдет переполнение таймера/счетчика1. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг переполнения таймера/счетчика1.При нахождении таймера/счетчика1 в PWM режиме флаг переполнения счетчика устанавливается когда счетчик изменит направление счета при $0000.
  • Bit 1 - OCIE0: Timer/Counter0 Output Compare Interrupt Enable - Разрешение прерывания по совпадению таймера/счетчика0
    При установленном бите OCIE0 и установленном бите I регистра статуса разрешается прерывание по совпадению содержимого регистра сравнения и состояния таймера/ счетчика0. Соответствующее прерывание (с вектором $001E) выполняется если произойдет совпадение при сравнении содержимого регистра сравнения и состояния таймера/счетчика0. В регистре флагов прерывания TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг совпадения таймера/счетчика0.
  • Bit 0 - TOIE0: Timer/Counter0 Overflow Interrupt Enable - Разрешение прерывания по переполнению таймера/счетчика0
    При установленном бите TOIE0 и установленном бите I регистра статуса разрешается прерывание по переполнению таймера/счетчика0. Соответствующее прерывание (с вектором $0020) выполняется если произойдет переполнение таймера/счетчика0. В регистре флагов TIFR (Timer/Counter Interrupt Flag Register) устанавливается флаг переполнения таймера/счетчика0.

Регистр флагов прерываний по таймерам/счетчикам TIFR (Timer/Counter Interrupt Flag Register)

Биты
               

 

$36 ($56)
OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0

 

TIMSK
Чтение/Запись
R/W R/W R/W R/W R/W R/W R/W R/W

 

 
Начальное состояние
               

 

 
  • Bit 7 - OCF2: Output Compare Flag 2:- Флаг 2 совпадения таймера/счетчика2 и данных OCR2
    Бит OCF2 устанавливается при совпадении состояния таймера/счетчика2 и содержимого регистра OCR2 (Output Compare Register 2). Бит OCF2 аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных OCIE2 (Timer/Counter2 Output Compare Interrupt Enable) и OCF2 выполняется прерывание по совпадению выхода таймера/счетчика2.
  • Bit 6 - TOV2: Timer/Counter2 Overflow Flag -Флаг переполнения таймера/счетчика2
    Бит TOV2 устанавливается при переполнении таймера/счетчика2. Он аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных OCIE2 (Timer/Counter2 Overflow Interrupt Enable) и TOV2 выполняется прерывание по переполнению таймера/счетчика2. В режиме PWM этот бит устанавливается при смене направления счета при $00.
  • Bit 5 - ICF1: Input Capture Flag 1 - Флаг 1 захвата входа
    Бит ICF1устанавливается в случае захвата входа, показывающего, что состояние таймера/счетчика1 переслано в входной регистр захвата ICR1. Бит очищается аппаратно при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1.
  • Bit 4 - OCF1A: Output Compare Flag 1A - Флаг 1A совпадения выхода
    Бит OCF1A устанавливается при совпадении состояния таймера/счетчика1 и содержимого регистра OCR1A (Output Compare Register 1A). Бит OCF1A аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных OCIE1A (Timer/Counter1 Compare Interrupt Enable) и OCF1A выполняется прерывание по совпадению выхода таймера/счетчика1.
  • Bit 3 - OCF1B: Output Compare Flag 1B - Флаг 1B совпадения выхода
    Бит OCF1B устанавливается при совпадении состояния таймера/счетчика1 и содержимого регистра OCR1B (Output Compare Register 1B). Бит OCF1B аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных OCIE1B (Timer/Counter1 Compare InterruptB Enable) и OCF1B выполняется прерывание по совпадению выхода таймера/счетчика1.
  • Bit 2 - TOV1: Timer/Counter1 Overflow Flag - Флаг переполнения таймера/счетчика1
    Бит TOV1 устанавливается при переполнении таймера/счетчика1. Он аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных TOIE1(Timer/Counter1 Overflow Interrupt Enable) и TOV1 выполняется прерывание по переполнению таймера/счетчика1. В режиме PWM этот бит устанавливается при смене таймером/счетчиком1 направления счета при $0000.
  • Bit 1 - OCF0: Output Compare Flag 0 - Флаг 0 совпадения выхода
    Бит OCF0 устанавливается при совпадении состояния таймера/счетчика0 и содержимого регистра OCR0 (Output Compare Register 0). Бит OCF0 аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных OCIE0 (Timer/Counter0 Output Compare Interrupt Enable) и OCF0 выполняется прерывание по совпадению выхода таймера/счетчика1.
  • Bit 0 - TOV0: Timer/Counter0 Overflow Flag - Флаг переполнения таймера/счетчика0
    Бит TOV0 устанавливается при переполнении таймера/счетчика0. Он аппаратно очищается при обработке соответствующего вектора прерывания. Возможна очистка бита записью во флаг логической 1. При установленном бите I в регистре SREG, установленных TOIE0(Timer/Counter0 Overflow Interrupt Enable) и TOV0 выполняется прерывание по переполнению таймера/счетчика0. В режиме PWM этот бит устанавливается при смене таймером/счетчиком1 направления счета при $00.

 




Поделиться с друзьями:


Дата добавления: 2015-06-27; Просмотров: 385; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.021 сек.