Главная » Просмотр файлов » Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012)

Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012) (1264221), страница 19

Файл №1264221 Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012) (Кочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012)) 19 страницаКочегаров И.И. Микроконтроллеры AVR. Лабораторный практикум (2012) (1264221) страница 192021-07-29СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 19)

Таким образом, каждому источнику прерывания ставится в соответствие свой адрес вектора прерывания. Совокупность N векторовобразует таблицу векторов прерываний, которая обычно располагается, начиная с нулевого адреса памяти программ.Приоритеты прерываний (interrupt priority) определяют очередность обслуживания запросов на прерывания.

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

В зависимости от возможности маскирования источники прерывания делятся на маскируемые(maskable), прерывания от которых могут разрешаться или запрещаться, и немаскируемые (nonmaskable), прерывания от которых не112могут запрещаться. Маскирование может быть общим и индивидуальным. При общем (глобальном) маскировании все прерывания,кроме немаскируемых, запрещены независимо от их индивидуального маскирования.

Индивидуальное маскирование позволяет запрещать (разрешать) прерывание от каждого источника отдельно.Флаги прерываний представляют собой разряды специальныхрегистров, устанавливающиеся при поступлении запроса на прерывание от некоторого источника.Процедура обслуживания прерывания может быть упрощеннопредставлена состоящей из следующих этапов: приема запросов на прерывание; арбитража прерываний; выполнения подпрограммы обслуживания прерывания.При приеме запроса на прерывание от немаскируемого источника сразу осуществляется переход к следующему этапу его обслуживания – арбитражу. Запрос на прерывание от маскируемого источника обрабатывается по более сложному алгоритму.

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

Еслиданное прерывание замаскировано, то запросы на прерывание отданного источника запрещены и продолжается выполнение текущейпрограммы. В противном случае прерывания от данного источникаразрешены и для него начинается следующий этап обслуживания –арбитраж.Арбитраж прерываний служит для определения прерывания снаивысшим приоритетом из очереди поступивших запросов на прерывание. После арбитража начинается выполнение выбранного запроса на прерывание.Выполнение прерывания состоит в переходе к подпрограмме обслуживания прерывания, ее выполнении и возврате к выполнениютекущей программы.

Перед выполнением прерывания производитсяобщее маскирование, т.е. запрещение всех прерываний, кроме немаскируемых, а также очищается флаг обслуживаемого прерывания.Собственно выполнение прерывания начинается с обращения к вектору прерывания обслуживаемого источника.113Обслуживаемое прерывание может быть прервано по запросамот источников, имеющих более высокий приоритет. Прерывания, дляобслуживания которых прерывается выполнение подпрограммы обработки другого прерывания, называются вложенными.

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

Такой способ обмена данными называется обменом по прерываниям. Типичными примерами запросов на прерывание являютсязапросы по готовности результата аналого-цифрового преобразования, готовности устройства к приему (передаче) информации, переполнению некоторого регистра и т.п. Использование механизма прерываний позволяет значительно повысить производительность системы при работе с медленно действующими устройствами, обслуживание которых в таком случае занимает процессорное время толькопри их готовности к обмену.В AVR-микроконтроллерах механизм прерываний реализуетсяследующим образом. Управление прерываниями осуществляется спомощью схемы прерываний (см. рис. 1).

Область векторов прерываний размещается в начале памяти программ; каждый вектор состоитиз одной ячейки. При необходимости область векторов прерыванийможет быть перемещена в другое место памяти программ. Прерывания с младшими адресами имеют бόльший уровень приоритета. Источниками всех прерываний являются аппаратные средства (внешниеили внутренние); источники программных прерываний отсутствуют.Все источники прерываний являются маскируемыми. Общее маскирование осуществляется очисткой бита I глобального разрешенияпрерываний в регистре состояния SREG.

Количество векторов прерываний в AVR-микроконтроллерах составляет от 3 до 35 в зависимости от типа. Например, в микроконтроллере ATmega8535 имеется21 вектор прерывания: 3 от внешних источников и 18 от внутреннейпериферии.Работа с внешними прерываниями осуществляется с помощьюрегистра управления GICR (General Interrupt Control Register) и регистра флагов GIFR (General Interrupt Flag Register), расположенных вадресном пространстве регистров ввода-вывода. Установка разряда 7(INT1) регистра управления GICR разрешает внешнее прерываниеINT1, установка разряда 6 (INT0) – внешнее прерывание INT0, уста114новка разряда 5 (INT2) – внешнее прерывание INT2. Разряд 7(INTF1) регистра флагов GIFR устанавливается при поступлениизапроса на прерывание INT1, разряд 6 (INTF0) – запроса на прерывание INT0; разряд 5 (INTF2) – запроса на прерывание INT2.

Очистка установленных флагов прерываний производится записью единицв соответствующие разряды регистра GIFR.Режим запуска внешних прерываний INT0 и INT1 задают разряды 0…3 (ISC00, ISC01, ISC10, ISC11) регистра управленияMCUCR. Запись в разряды ISC00, ISC01 соответственно значений 0,0 задает режим запуска внешнего прерывания INT0 по низкомууровню; 0, 1 – по отрицательному фронту; 1, 1 – по положительномуфронту; значения 1, 0 не используются. Аналогично с помощью разрядов ISC10, ISC11 задается режим запуска внешнего прерыванияINT1. Режим запуска внешнего прерывания INT2 задается разрядом6 (ISC2) регистра управления и состояния MCUCSR: 0 – по отрицательному фронту; – по положительному фронту.Для управления прерываниями от внутренних периферийныхустройств в адресном пространстве регистров ввода-вывода такжепредусмотрены специальные регистры.

Например, управлениепрерываниями по запросам от встроенных таймеров-счетчиков осуществляется с помощью регистра масок TIMSK (Timer/Counter Interrupt Mask Register) и регистра флагов TIFR (Timer/Counter InterruptFlag Register). Кроме того, с каждым аппаратным устройствомAVR-микроконтроллера ассоциированы управляющие регистры, расположенные в адресном пространстве регистров ввода-вывода. Например, управление встроенным 8-разрядным таймером-счетчикомT/C0 (Timer/Counter0) осуществляется с помощью регистра TCCR0(Timer/Counter0 Control Register) и регистра и TCNT0 (Timer/Counter0).

Разряды 0…2 (CS00, CS01, CS02) регистра TCCR0 задают режим работы таймера-счетчика T/C0: при записи в разрядыCS00, CS01, CS02 соответственно значений 0, 0, 0 таймер-счетчикостановлен; 1, 0,0 – содержимое регистра TCNT0 инкрементируетсяна каждом такте тактового генератора; 0, 1, 0 – на каждом 8-м такте;1, 1, 0 – на каждом 64-м такте; 0, 0, 1 – на каждом 256-м такте; 1, 0,1 – на каждом 1024-м такте; значения 0, 1, 1 и 1, 1, 1 устанавливаютрежим подсчета числа импульсов внешнего источника по отрицательному и положительному фронту соответственно.

Таймер-счетчик T/C0 генерирует запрос на прерывание при переполнении регистра TCNT0. В регистре масок TIMSK прерыванию при переполнении таймера-счетчика T/C0 соответствует разряд 1 (TOIE0); в регистре флагов TIFR – разряд 1 (TOV0). Установка разряда TOIE0 раз115решает прерывание по переполнению регистра TCNT0; флаг TOIF0устанавливается при поступлении запроса на прерывание по переполнению регистра TCNT0.Пример программы с использованием прерываний приведен нарис. 34.; область векторов прерываний.org $0000RJMPRESET; переход к основной программе.org INT0addrRJMPEXT_INT0; внешнее прерывание INT0.org OVF0addrRJMPTMR0_INT; прерывание по таймеру Т/С0; подпрограмма обработки внешнего прерывания INT0EXT_INT0:; ...RETI; возврат; подпрограмма обработки прерывания по таймеру T/C0TMR0_INT:; ...RETI; возвратRESET:; основная программа; инициализация стека; ...; инициализация внешнего прерывания INT0LDIR16, (1<<ISC01)|(1<<ISC00)OUTMCUCR, R16; по положительному фронтуLDIOUTR16, (1<<INTF1)|(1<<INTF0)GIFR, R16; очистка флагов внешних прерыванийLDIOUTR16, 1<<INT0GICR, R16; разрешение внешнего прерывания INT0; инициализация прерывания по таймеру T/C0LDIR16, 1<<CS00OUTTCCR0, R16 ; деления частоты нетLDIOUTR16, 1<<TOIE0TIMSK, R16 ; разрешение прерывания по таймеру Т/С0SEI; общее разрешение прерыванийforever:NOPRJMPforever; пустая команда (no operation); бесконечный цикл; ...Рис.

34. Пример программы с использованием прерываний116Программы с использованием прерываний начинаются с определения области векторов прерываний. Адреса векторов прерыванийуказываются символическими именами и помощью директив .org.По адресам векторов прерываний размещают команды относительного перехода к подпрограммам обработки прерываний, которые обычно располагают непосредственно после области векторов прерываний. Подпрограммы обработки прерываний завершаются командамиRETI возврата в основную программу. Команда RETI выполняет теже действия, что и команда RET, а также восстанавливает бит I общего (глобального) разрешения прерываний в регистре состоянияSREG.В основной программе производится инициализация стека ипрерываний.

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6418
Авторов
на СтудИзбе
307
Средний доход
с одного платного файла
Обучение Подробнее