Читаем PIC-микроконтроллеры. Все, что вам необходимо знать полностью

Хотя в нашем примере мы сохраняли только рабочий регистр и регистр STATUS[101], в других случаях может потребоваться сохранение и других РСН. Так, в Примере 7.3 сохраняется регистр FSR, поскольку он используется как в основной программе, так и в обработчике прерывания. Одним словом, если в процедуре обработки прерывания изменяются какие-либо РСН, то при выходе из обработчика должно быть восстановлено их исходное состояние. В любом случае первым необходимо сохранить содержимое рабочего регистра, поскольку он будет использоваться в качестве промежуточного хранилища при сохранении остальных регистров. Соответственно восстанавливаться рабочий регистр должен в самую последнюю очередь.

По мере возможности регистры, в которых сохраняется контекст программы, следует выбирать таким образом, чтобы они не зависели от банка памяти, используемого процессором в момент-прерывания. В микроконтроллере PIC16F84 все РОН отображены на оба банка, поэтому можно выбирать любые. Тем не менее это не слишком типичная ситуация, особенно если в модели используется большее число банков для поддержки большого количества уникальных РСН. В более новых моделях часто предусмотрена небольшая область памяти, отображенная на все банки, например, старшие 16 байт в модели PIC16F627/8, как показано на Рис. 5.4 (стр. 121). Более старые модели, такие как PIC16C74, вообще не имеют общих РОН. В этих случаях программист должен либо гарантировать, что прерывания не возникнут в те моменты, когда процессор работает с банком, отличным от используемого для сохранения, либо проверять состояние битов RP при входе в обработчик прерывания и переключаться на системный банк (обычно банк 0) перед сохранением регистра STATUS. Затем состояние битов RP в _status изменяется таким образом, чтобы оно соответствовало их исходному значению.

В нашем, намеренно упрощенном примере предполагается, что разрешено обслуживание только внешнего прерывания. В большинстве же случаев могут быть разрешены прерывания от нескольких источников. А поскольку в микроконтроллерах PIC имеется только один вектор прерывания (h’004’), то одной из первых задач обработчика будет проверка, какое из периферийных устройств вызвало прерывание. Все флаги прерываний доступны для чтения, поэтому их можно поочередно проверять, пока не найдется флаг, который установлен. В самом сложном случае, когда активны все четыре источника прерываний микроконтроллера PIC16F84, и учитывая, что регистр EECON1 находится в 1-м банке, код для проверки флагов будет выглядеть следующим образом:

bsf STATUS,RP0; Переключаемся на 1-й банк

btfsc INTCON,1; Проверяем флаг внешнего прерывания

   goto EXTERNAL; ЕСЛИ установлен, переходим к соотв. обработчику

btfsc INTCON,2; Проверяем флаг прерывания от Таймера 0

   goto TIMER0; ЕСЛИ установлен, переходим к соотв. обработчику

btfsc INTCON,0; Проверяем флаг прерывания по изменению порта В

   goto CHANGE_B; ЕСЛИ установлен, переходим к соотв. обработчику

bcfsc EECON1,4; Проверяем флаг прерывания от EEPROM

   goto EEPROM_WR; ЕСЛИ установлен, переходим к соотв. обработчику

... ...

IRQ_EXIT

    bcf STATUS,RP0; Возвращаемся в 0-й банк

    retfie ; и выходим из обработчика

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

При сброшенном бите маски аналогичная методика опроса может применяться для контроля событий без использования прерываний. Например, при записи байта в EEPROM (см. Программу 15.2 на стр. 547) программа обычно ожидает установки флага EEIF (4-й бит регистра EECON1), после чего сбрасывает его и продолжает выполнение.

Перейти на страницу:

Все книги серии Программируемые системы

PIC-микроконтроллеры. Все, что вам необходимо знать
PIC-микроконтроллеры. Все, что вам необходимо знать

Данная книга представляет собой исчерпывающее руководство по микроконтроллерам семейства PIC компании Microchip, являющегося промышленным стандартом в области встраиваемых цифровых устройств. В книге подробно описывается архитектура и система команд 8-битных микроконтроллеров PIC, на конкретных примерах изучается работа их периферийных модулей.В первой части излагаются основы цифровой схемотехники, математической логики и архитектуры вычислительных систем. Вторая часть посвящена различным аспектам программирования PIC-микроконтроллеров среднего уровня: описывается набор команд, рассматривается написание программ на ассемблере и языке высокого уровня (Си), а также поддержка подпрограмм и прерываний. В третьей части изучаются аппаратные аспекты взаимодействия микроконтроллера с окружающим миром и обработки прерываний. Рассматриваются такие вопросы, как параллельный и последовательный ввод/вывод данных, временные соотношения, обработка аналоговых сигналов и использование EEPROM. В заключение приводится пример разработки реального устройства. На этом примере также демонстрируются простейшие методики отладки и тестирования, применяемые при разработке реальных устройств.Книга рассчитана на самый широкий круг читателей — от любителей до инженеров, при этом для понимания содержащегося в ней материала вовсе не требуется каких-то специальных знаний в области программирования, электроники или цифровой схемотехники. Эта книга будет также полезна студентам, обучающимся по специальностям «Радиоэлектроника» и «Вычислительная техника», которые смогут использовать ее в качестве учебного пособия при прослушивании соответствующих курсов или выполнении курсовых проектов.

Сид Катцен

Радиоэлектроника

Похожие книги

Электроника для начинающих (2-е издание)
Электроника для начинающих (2-е издание)

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

Чарльз Платт

Радиоэлектроника / Технические науки
Электроника для начинающих
Электроника для начинающих

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

Паоло Аливерти , Чарльз Платт

Радиоэлектроника / Технические науки
Искусство схемотехники. Том 3 (Изд.4-е)
Искусство схемотехники. Том 3 (Изд.4-е)

Широко известная читателю по предыдущим изданиям монография известных американских специалистов посвящена быстро развивающимся областям электроники. В ней приведены наиболее интересные технические решения, а также анализируются ошибки разработчиков аппаратуры: внимание читателя сосредотачивается на тонких аспектах проектирования и применения электронных схем. На русском языке издается в трех томах. Том 3 содержит сведения о микропроцессорах, радиотехнических схемах, методах измерения и обработки сигналов, принципах конструирования аппаратуры и проектирования маломощных устройств, а также обширные приложения. Для специалистов в области электроники, автоматики, вычислительной техники, а также студентов соответствующих специальностей вузов и техникумов.

Пауль Хоровиц , Уинфилд Хилл

Техника / Радиоэлектроника