|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Система прерываний в микроконтроллере AVR АТMEGA 128Прерывание – процесс, нарушающий выполнение нормального хода программы. Прерывания инициируются внутренними или внешними событиями микроконтроллера. При возникновении прерывания микроконтроллер сохраняет в стеке содержимого счетчика команд PC и загружает в него адрес соответствующего вектора прерывания, в котором, как правило, содержится команда безусловного перехода к подпрограмме обработки прерывания. Последней командой подпрограммы – обработчика прерываний должна быть команда reti, которая обеспечивает возврат в основную программу путем восстановления значения предварительно сохраненного счетчика команд. Вектор прерывания представляет собой адрес процедуры обработки прерывания. Вектора прерываний от разных источников объединены структуру, называемую таблицей векторов прерываний. В микроконтроллере AVR АТMEGA 128 таблица векторов прерываний находится, начиная с адреса 0002h. Положение вектора в таблице прерываний определяет приоритет соответствующего прерывания, который уменьшается с увеличением адреса в таблице прерывания (чем меньше адрес – тем выше приоритет). Размещение векторов прерываний микроконтроллера AVR АТMEGA 128 приводится в таблице 4.1. Регистр состояния SREG аппаратно не обрабатывается процессором, как при вызове подпрограмм, так и при обслуживании прерываний. Если программа требует сохранения SREG, то это должно производиться программой пользователя.
Таблица 4.1 – Номера векторов прерываний и идентификаторы процедур-обработчиков прерываний микроконтроллера AVR АТMEGA 128.
Функция – обработчик прерывания записывается в компиляторе Code Vision AVR С в соответствие со следующими правилами: interrupt [ идентификатор прерывания ] тип возвращаемого значения имя функции (список аргументов) { тело функции обработки прерывания } Пример декларации обработчика прерывания ADC_INT по вектору 002Аh, которое вырабатывается при завершении преобразования АЦП: interrupt [ADC_INT] void adc_interrupt ( void ) { тело функции обработки прерывания } Минимальное время реакции прерывание составляет 4 периода тактовой частоты, в результате которых значение программного счетчика записывается в стек, а указатель стека уменьшается на 2. После этого выполняется относительный переход на подпрограмму (функцию), обрабатывающую данное прерывание. Если прерывание происходит во время выполнения команды длящейся несколько циклов, перед вызовом прерывания завершается выполнение этой команды. Выход из программы обслуживания прерывания занимает 4 периода актовой частоты, во время которых из стека восстанавливается значение программного счетчика. После выхода из прерывания процессор всегда выполняет еще одну команду, прежде чем обслужить любое отложенное прерывание.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |