АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Система прерываний в микроконтроллере AVR АТMEGA 128

Читайте также:
  1. A) прогрессивная система налогообложения.
  2. AVR АТMEGA 128
  3. C) Систематическими
  4. ERP и CRM система OpenERP
  5. I СИСТЕМА, ИСТОЧНИКИ, ИСТОРИЧЕСКАЯ ТРАДИЦИЯ РИМСКОГО ПРАВА
  6. I. Суспільство як соціальна система.
  7. I.2. Система римского права
  8. II. Органы и системы эмбриона: нервная система и сердце
  9. III. Органы и системы эмбриона: пищеварительная система
  10. NDS і файлова система
  11. SCАDA-системы: основные блоки. Архивирование в SCADA-системах. Архитектура системы архивирования.
  12. V2: ДЕ 57 - Фундаментальная система решений линейного однородного дифференциального уравнения

Прерывание – процесс, нарушающий выполнение нормального хода программы. Прерывания инициируются внутренними или внешними событиями микроконтроллера. При возникновении прерывания микроконтроллер сохраняет в стеке содержимого счетчика команд PC и загружает в него адрес соответствующего вектора прерывания, в котором, как правило, содержится команда безусловного перехода к подпрограмме обработки прерывания. Последней командой подпрограммы – обработчика прерываний должна быть команда reti, которая обеспечивает возврат в основную программу путем восстановления значения предварительно сохраненного счетчика команд.

Вектор прерывания представляет собой адрес процедуры обработки прерывания. Вектора прерываний от разных источников объединены структуру, называемую таблицей векторов прерываний. В микроконтроллере AVR АТMEGA 128 таблица векторов прерываний находится, начиная с адреса 0002h. Положение вектора в таблице прерываний определяет приоритет соответствующего прерывания, который уменьшается с увеличением адреса в таблице прерывания (чем меньше адрес – тем выше приоритет). Размещение векторов прерываний микроконтроллера AVR АТMEGA 128 приводится в таблице 4.1. Регистр состояния SREG аппаратно не обрабатывается процессором, как при вызове подпрограмм, так и при обслуживании преры­ваний. Если программа требует сохранения SREG, то это должно произво­диться программой пользователя.

 

Таблица 4.1 – Номера векторов прерываний и идентификаторы процедур-обработчиков прерываний микроконтроллера AVR АТMEGA 128.

Номер вектора Адрес Источник прерывания Идентификатор прерывания Описание прерывания
  0000h RESET   Вывод сброса, отключение электропитания, сброс от сторо­жевого таймера
  0002h INT0 EXT_INT0 Внешнее прерывание по линии запроса 0
  0004h INT1 EXT_INT1 Внешнее прерывание по линии запроса 1
  0006h INT2 EXT_INT2 Внешнее прерывание по линии запроса 2
  0008h INT3 EXT_INT3 Внешнее прерывание по линии запроса 3
  000Аh INT4 EXT_INT4 Внешнее прерывание по линии запроса 4
  000Сh INT5 EXT_INT5 Внешнее прерывание по линии запроса 5
  000Еh INT6 EXT_INT6 Внешнее прерывание по линии запроса 6
  0010h INT7 EXT_INT7 Внешнее прерывание по линии запроса 7
  0012h TIMER2 COMP TIM2_COMP Совпадение таймера/счетчика Т2
  0014h TIMER2_OVF TIM2_OVF Переполнение таймера/счетчика Т2
  0016h TIMER1 CAPT1 TIM1_CAPT Захват таймера/счетчика Т1
  0018h TIMER1 COMP1 TIM1_COMPA Совпадение «А» таймера/счетчика Т1
  001Аh TIMER1 COMPB TIM1_COMPB Совпадение «В» таймера/счетчика Т1
  001Сh TIMER1 OVF TIM1_OVF Переполнение таймера/счетчика Т1
  001Еh TIMER0 COMP TIM0_COMP Совпадение таймера/счетчика Т0
  0020h TIMER0 OVF TIM0_OVF Переполнение таймера/счетчика Т0
  0022h SPI STC SPI_STC Передача данных по SPI закончена
  0024h USART0 RXC USART0_RXC Прием по интерфейсу UART0 завершен
  0026h USART0 DRE USART0_DRE Регистр данных UART0 пуст
  0028h USART0 TXC USART0_TXC Передача по USART0 завершена
  002Аh ADC INT ADC_INT Преобразование АЦП завершено
  002Сh EE RDY EE_RDY Прерывание при готовности EEPROM
  002Еh ANA COMP ANA_COMP Прерывание от аналогового компаратора
  0030h TIMER1 COMPC TIM1_COMPC Совпадение «С» таймера-счетчика Т1
  0032h TIMER3 CAPT TIM3_CAPT Захват таймера-счетчика Т3
  0034h TIMER3_COMPA TIM3_COMPA Совпадение «А» таймера-счетчика Т3
  0036h TIMER3_COMPB TIM3_COMPB Совпадение «В» таймера-счетчика Т3
  0038h TIMER3_COMPC TIM3_COMPC Совпадение «В» таймера-счетчика Т3
  003Аh TIMER3_OVF TIM3_OVF Переполнение таймера-счетчика Т3
  003Сh USART1_RXC USART1_RXC Прием по интерфейсу UART1 завершен
  003Еh USART1_DRE USART1_DRE Регистр данных UART1 пуст
  0040h USART1_TXC USART1_TXC Передача по USART1 завершена
  0042h TWI TWI Прерывание от модуля TWI
  0044h SPM_RDY SPM_RDY Готовность SPM

 

Функция – обработчик прерывания записывается в компиляторе Code Vision AVR С в соответствие со следующими правилами:

interrupt [ идентификатор прерывания ]

тип возвращаемого значения имя функции (список аргументов)

{

тело функции обработки прерывания

}

Пример декларации обработчика прерывания ADC_INT по вектору 002Аh, которое вырабатывается при завершении преобразования АЦП:

interrupt [ADC_INT] void adc_interrupt ( void )

{

тело функции обработки прерывания

}

Минимальное время реакции прерывание составляет 4 периода тактовой частоты, в результате которых значение программного счетчика записывается в стек, а указатель стека уменьшается на 2. После этого выполняется относительный переход на подпрограмму (функцию), обрабатывающую данное прерывание. Если прерывание происходит во время выполнения команды длящейся неско­лько циклов, перед вызовом прерывания завершается выполнение этой команды. Выход из программы обслуживания прерывания занимает 4 периода ак­товой частоты, во время которых из стека восстанавливается значение программного счетчика. После выхода из прерывания процессор всегда выполняет еще од­ну команду, прежде чем обслужить любое отложенное прерывание.

 


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.)