Популярные услуги

Все письменные КМ под ключ за 3 суток! (КМ-6 + КМ-7 + КМ-8 + КМ-9 + КМ-10)
КМ-6. Динамические массивы. Семинар - выполню любой вариант!
КМ-2. Разработка простейших консольных программ с использованием ООП + КМ-4. Более сложные элементы ООП - под ключ!
Любая задача на C/C++
Одно любое задание в mYsql
Сделаю ваше задание: Лабораторная работа на Pascal / Lazarus
Любой тест по базам данных максимально быстро на хорошую оценку - или верну деньги!
Любой реферат по объектно-ориентированному программированию (ООП)
Оба семинара по программированию под ключ! КМ-2. Разработка циклических алгоритмов + КМ-3. Функции и многофайловые программы в Си
Повышение уникальности твоей работе

Управление прерываниями

2021-03-09СтудИзба

УПРАВЛЕНИЕ ПРЕРЫВАНИЯМИ

Серия РIС16ХХХ

Регистры SFR, связанные с прерываниями: INTCON, PIE1, PIR1, PIE2, PIR2.

Регистр управления прерываниями INTCON:

GIE = 1/0 - глобальное разрешение/запрещение прерываний.

PEIE = 10 - разрешение/запрещение прерываний от периферии.

T0IE = 1/0 - разрешение/запрещение прерываний по переполнению от TMR0.

INTE = 1/0 - разрешение/запрещение внешнего прерывания.

RBIE = 1/0 - разрешение/запрещение прерываний по изменению уровня на выводах RВ7:RВ4 порта РОRТВ.

T0IF - флаг прерывания по переполнению от TMR0.

INTF - флаг внешнего прерывания.

RBIF - флаг прерывания по изменению уровня на выводах RВ7:RВ4 порта РОRТВ.

Примечания:

1) В некоторых МК вместо битов RBIE и RBIF могут быть GPIЕ и GРIF соответственно.

2) Отсутствует у некоторых МК.

3) В МК с одним периферийным модулем этот бит может быть ЕЕIЕ или АDIЕ.

Регистр РIЕ1:

PSPIE

ADIE

RCIE

TXIE

SSPIE

CCP1IE

TMR2IE

TMR1IE

Бит 7

Бит 0

PSPIE: для микроконтроллера РIС16F873 всегда должен быть сброшен

ADIE: 1/0 -разрешение/запрет прерывания от модуля АЦП

RCIE: 10 - разрешение/запрет прерывания от асинхронного последовательного порта при приеме данных

TXIE: 1/0 - разрешение/запрет прерывания от асинхронного последовательного порта при передаче данных

SSPIE: 1/0 - разрешение/запрет прерывания от синхронного последовательного порта

CCP1IE: 1/0 - разрешение/запрет прерывания от модуля ССР

TMR2IE: 1/0 - разрешение/запрет прерывания при совпадении значения Т/С2 со значением регистра РR2

TMR1IE: 1/0 - разрешение запрет прерывания при переполнении Т/С1

Регистр РIЕ2:

-

0

-

EEIE

BCLIE

-

-

CCP2IE

Бит 7

Бит 0

EEIE: 1/0 - разрешение/запрет прерывания при записи ЕЕРRОМ

BCLIE: 1/0 - разрешение/запрет прерывания при коллизии шины синхронного последовательного порта

CCP2IE: 1/0 - разрешение/запрет прерывания от модуля ССР2

Регистр РIR1:

PSPIF

ADIF

RCIF

TXIF

SSPIF

CCP1IF

TMR2IF

TMR1IF

Бит 7

Бит 0

PSPIF: для микроконтроллера РIС16F873 всегда должен быть сброшен

ADIF: флаг прерывания от модуля АЦП (10 - преобразование выполнено/ не выполнено)

RCIF: флаг прерывания от асинхронного последовательного порта, 1/0 - буфер приема заполнен/пуст

TXIF: флаг прерывания от асинхронного последовательного порта, 1/0 - буфер передачи пуст/заполнен

SSPIF: флаг прерывания от синхронного последовательного порта

CCP1IF: флаг прерывания от модуля ССР1. Режим захвата: значение регистра Т/С1 запомнено. Режим сравнения: совпадение со значением регистра Т/С1 обнаружено. В режиме ШИМ: не используется.

TMR2IF: флаг прерывания при совпадении значения Т/С2 и регистра РR2

TMR1IF: флаг прерывания при переполнении Т/С1

Регистр РIR2:

-

0

-

EEIF

BCLIF

-

-

CCP2IF

Бит 7

Бит 0

EEIF: флаг прерывания при успешном окончании операции записи в ЕЕРRОМ

BCLIF: флаг прерывания при коллизии шины SSР когда он работает в режиме ведущий I2С

CCP2IF: флаг прерывания от модуля ССР2. Режим захвата: значение регистра Т/С1 запомнено. Режим сравнения: совпадение со значением регистра Т/С1 обнаружено. В режиме ШИМ не используется.

Регистр РСОN содержит флаги для определения источника сброса:

• По включению питания (РОR).

• По сигналу на входе - МСLR

• По переполнению WDТ

• По обнаружению снижения напряжения питания (BOR).

-

-

-

-

-

-

POR

BOR

Бит 7

Бит 0

POR: статус сброса при включении, 1/0 сброс при включении произведен/не произведен

BOR: 1/0 - сброс при падении напряжения питания произведен не произведен

Примечание:

Бит -ВОR может быть любым при включении питания и при отключенном детекторе снижения питания (ВОDЕN=0 в регистре конфигурации), поэтому не должен учитываться. Бит -ВОR нужен для обнаружения последующих сбросов МК при снижении питания.

Аппаратно в стеке сохраняется только адрес возврата из обработчика прерывания. Сохранение и восстановление контекста (содержимого регистров W и STATUS) должен осуществлять сам программист.

За прерываниями закреплено 2 вектора прерываний: 0000h (сброса) и 0004h (один для всех прерывания).

При запросе прерывания (устанавливается флаг соответствующего периферийного модуля) в счетчик команд загружается адрес вектора прерывания 0004h. По этому адресу должна быть расположена команда перехода на начальный адрес подпрограммы обработчика прерываний. При этом бит GIЕ = 0.

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

Время перехода на обработку прерывания - 3-4 машинных цикла.

Система прерывании РIС18FХХ2

Микроконтроллеры имеют несколько источников прерываний и функцию приоритетной системы прерываний, которая позволяет для каждого источника прерываний назначить высокий или низкий приоритет. При возникновении прерывания с высоким приоритетом происходит переход по вектору 000008h, а при возникновении прерывания с низким приоритетом – 000018h. Прерывание с высоким приоритетом приостанавливают обработку прерываний с низким приоритетом.

Для управления прерываниями РIС18FХХ2 предусмотрено 10 регистров SFR: RCON, INTCON, INTCON2, INTCON3, PIR1, PIR2, PIE1, PIE2, IPR1, IPR2.

Каждому источнику прерываний соответствует три управляющих бита:

• Флаг прерываний, указывает на то, что выполнено условие возникновения прерывания

• Бит разрешения прерывания, разрешает переход по вектору прерывания при установке соответствующего флага

• Бит приоритета, выбор низкого или высокого приоритета прерывания

Приоритетная система прерываний включена, если бит IPEN(RCON<7>) =1.

Для приоритетной системы прерываний предусмотрено два бита глобального разрешения прерываний.

• Установка в ‘1’ бита GIEH(INTCON<7>) разрешает все прерывания с высоким приоритетом.

• Установка в ‘1’ бита GIEL(INTCON<6>) разрешает все прерывания с низким приоритетом.

Когда флаг разрешенного прерывания установлен в ‘1’ и разрешены прерывания соответствующего приоритета, происходит переход по вектору 000008h или 000018h в зависимости от приоритетности прерывания. Отдельные прерывания могут быть запрещены сбросом соответствующего бита разрешения.

Когда бит IPEN=0 (состояние по умолчанию) то приоритетная система прерываний выключена (система прерываний совместима с микроконтроллерами PICmicro среднего семейства). В этом режиме биты приоритета прерываний не имеют никакого значения. INTCON<6> - РЕIЕ, разрешает/запрещает все периферийные прерывания. INTCON<7> - GIE - бит глобального разрешения прерываний. При возникновении прерывания всегда происходит переход по вектору 000008h.

Регистр INTCON:

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

GIE/GIEH

PEIE/GIEL

TMROIE

INTOIE

RBIE

TMROIF

INTOIF

RBIF

Бит 7

Бит 0

GIE/GIEH: Бит глобального разрешения прерываний

IPEN=0 1/0 - разрешены/запрошены все немаскированные прерывания

IPEN =1 1/0 - разрешены/запрошены прерывания с высоким приоритетом

PEIE/GIEL: Разрешение периферийных прерываний

IPEN=0 1/0 - разрешены, запрошены все периферийные немаскированные прерывания

IPEN =1 1/0 - разрешены, запрошены прерывания с низким приоритетом

TMROIE: 1/0 - Разрешено/запрошено прерывания по переполнению ТМR0

INTOIE: 1/0 - Разрешено/запрошено внешнее прерывание INT0

RBIE: 1/0 - Разрешено запрещено прерывание по изменению уровня сигнала на входах РОRТВ

TMROIF: Флаг прерывания переполнения таймера TMR0. Сбрасывается программно.

INTOIF: Флаг внешнего прерывания INT0. Сбрасывается программно.

RBIF: Флаг прерывания по изменению уровня сигнала на входах РОRТВ (RВ7:RВ4). Сбрасывается программно.

Примечание. Несоответствие входного сигнала и сохраненного значения будет устанавливать флаг RBIF в ‘1’. Чтение регистра РОRТВ снимет условие несоответствия и позволит сбросить флаг RBIF.

Регистр INTCON2:

R/W - 1

R/W - 1

R/W - 1

R/W - 1

U-0

R/W - 1

U-0

R/W - 1

-RBPU

INTEDG0

INTEDG1

INTEDG2

-

TMROIP

-

RBIP

Бит 7

Бит 0

-RBPU: Включение подтягивающих резисторов на входах РОRТВ 1/0 - все подтягивающие резисторы выключены/включены на выводах РОRТВ. настроенных как вход

INTEDG0: Выбор активного фронта внешнего прерывания INT0: 1/0 - прерывание по переднему/заднему фронту сигнала

INTEDG1: Выбор активного фронта внешнего прерывания INT1: 1/0 - прерывание по переднему/заднему фронту сигнала

INTEDG2: Выбор активного фронта внешнего прерывания INT2: 1/0 - прерывание по переднему/заднему фронту сигнала

TMROIP: 1/0 - высокий/низкий приоритет прерывания по переполнению таймера ТМR0

RBIP: 1/0 - высокий/низкий приоритет по изменению уровня сигнала на входах РОRТВ

Примечание. Флаги прерываний устанавливаются при возникновении условий прерываний вне зависимости от соответствующих битов разрешения и бита общего разрешения прерываний. Это позволяет выполнять программный контроль возникновения условия прерываний. Необходимо заботиться о том, чтобы флаг прерывания был сброшен перед разрешением прерывания.

Регистр INTCON3:

R/W - 1

R/W - 1

U-0

R/W - 0

R/W - 0

U-0

R/W - 0

R/W - 0

INT2IP

INT1IP

-

INT2IE

INT1IE

-

INT2IF

INT1IF

Бит 7

Бит 0

INT2IP: 1/0 - высокий/низкий приоритет внешнего прерывания INT2

INT1IP: 1/0 - высокий/низкий приоритет внешнего прерывания INT1

INT2IE: 1/0 - разрешение/запрет внешнего прерывания INT2

INT1IE: 1/0 - разрешение/запрет внешнего прерывания INT1

INT2IF: Флаг внешнего прерывания INT2 (сбрасывается программно)

INT1IF: Флаг внешнего прерывания INT1 (сбрасывается программно

Регистр флагов периферийных прерываний РIR1:

R/W - 0

R/W - 0

R-0

R-0

R/W - 0

R-0

R/W - 0

R/W - 0

PSPIF(1)

ADIF

RCIF

TXIF

SSPIF

CCP1IF

TMR2IF

TMR1IF

Бит 7

Бит 0

PSPIF <1>: Флаг прерывания ведомого параллельного порта РSР. Произошла операция чтения или записи нет. Сбрасывается программно.

ADIF: Флаг прерывания от модуля АЦП. Преобразование АЦП завершено или нет. Сбрасывается программно.

RCIF: Флаг прерывания от приемника USART.

1 - буфер приемника USART полон (сбрасывается чтением регистра RCREG)

0 - буфер приемника USART пуст

TXIF: Флаг прерывания от передатчика USART

1 - буфер передатчика USART пуст (сбрасывается записью в регистр ТХREG)

0 - буфер передатчика USART полон

SSPIF: Флаг прерывании от модуля МSSР. Сбрасывается программно.

CCP1IF: Флаг прерывания от модуля ССР1

Режим захвата

1 - выполнен захват значения ТМR1 (сбрасывается программно)

0 - захвата значения ТМR1 не происходило

Режим сравнения

1 - значение ТМR1 достигло указанного в регистрах сравнения (сбрасывается программно)

0 - значение ТМR1 не достигло указанного в регистрах сравнения

ШИМ режим. Не используется.

TMR2IF: Флаг прерывания переполнения таймера ТМR2

1 - произошло переполнение таймера ТМR2 (сбрасывается программно)

0 - переполнение таймера ТМR2 не происходило

TMR1IF: Флаг прерывания переполнения таймера ТМR1

1 - произошло переполнение таймера ТМR0 (сбрасывается программно)

0 - переполнение таймера ТМR1 не происходило

Примечание 1. Бит РSРIF в микроконтроллерах РIС18F2Х2 не реализован, при записи должен равняться '0'.

Регистр флагов периферийных прерываний РIR2:

U-0

U-0

U-0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

-

-

-

EEIF

BCLIF

LVDIF

TMR3IF

CCP2IF

Бит 7

Бит 0

EEIF: Флаг прерывания по окончании записи в ЕЕРRОМ данных/flash памяти программ

1 - запись данных завершена (сбрасывается программно)

0 - запись данных не завершена или не была начата

BCLIF: Флаг прерываний возникновения коллизий на шине

1 - на шине обнаружены коллизии (сбрасывается программно)

0 - коллизий не обнаружено

LVDIF: Флаг прерывания от детектора пониженного напряжения

1 - обнаружено снижение напряжения питания (сбрасывается программно)

0 - напряжение питания выше установленного значения

TMR3IF: Флаг прерывания переполнения таймера ТМRЗ

1 - произошло переполнение таймера ТМRЗ (сбрасывается программно)

0 - переполнение таймера ТМRЗ не происходило

CCP2IF: Флаг прерывания от модуля ССР2

Режим захвата

1 - выполнен захват значения ТМR1 (сбрасывается программно)

0 - захвата значения ТМR1 не происходило

Режим сравнения

1 - значение ТМR1 достигло указанного в регистрах сравнения (сбрасывается программно)

0 - значение ТМR1 не достигло указанного в регистрах сравнения

ШИМ режим. Не используется

Регистры разрешения периферийных прерываний:

Регистр РIЕ1:

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

PSPIE(1)

ADIE

RCIE

TXIE

SSPIE

CCP1IE

TMR2IE

TMR1IE

Бит 7

Бит 0

PSPIE1: 1/0 -Разрешение/запрет прерывания от ведомого параллельного порта РSР

ADIE: 1/0 - Разрешение/запрет прерывания от модуля АЦП

RCIE: 1/0 - Разрешение/запрет прерывания от приемника USART

TXIE: 1/0 - Разрешение/запрет прерывания от передатчика USART

SSPIE: 1/0 - Разрешение/запрет прерывания от модуля МSSР

CCP1IE: 1/0 - Разрешение/запрет прерывания от модуля ССР1

TMR2IE: 1/0 - Разрешение/запрет прерывания по переполнению таймера ТМR2

TMR1IE: 1/0 - Разрешение/запрет прерывания по переполнению таймера ТМR1

Примечание 1. Бит РSРIЕ в микроконтроллерах РIС18F2Х2 не реализован, при записи должен равняться ‘0’.

Регистр РIЕ2:

U-0

U-0

U-0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

-

-

-

EEIE

BCLIE

LVDIE

TMR3IE

CCP2IE

Бит 7

Бит 0

EEIE: 1/0 - прерывание разрешено/запрещено по окончании записи в ЕЕРRОМ данных/Flash памяти программ

BCLIE: 1/0 - прерывание разрешено/запрещено при возникновении коллизий на шине

LVDIE: 1/0 - прерывание разрешено/запрещено от детектора пониженного напряжения

TMR3IE: 1/0 - прерывание разрешено/запрещено по переполнению таймера ТМRЗ

CCP2IE: 1/0 - прерывание разрешено.запрещено от модуля ССР2

Регистры приоритета периферийных прерываний:

Регистр IRP1:

R/W - 1

R/W - 1

R/W - 1

R/W - 1

R/W - 1

R/W - 1

R/W - 1

R/W - 1

PSPIP(1)

ADIP

RCIP

TXIP

SSPIP

CCP1IP

TMR2IP

TMR1IP

Бит 7

Бит 0

PSPIP1:            1/0 - высокий/низкий приоритет прерывания от ведомого параллельного порта РSР

ADIP:                1/0 - высокий/низкий приоритет прерывания от модуля АЦП

RCIP:                1/0 - высокий/низкий приоритет прерывания от приемника USART

TXIP:                1/0 - высокий/низкий приоритет прерывания от передатчика USART

SSPIP:               1/0 - высокий/низкий приоритет прерывания от модуля МSSР

CCP1IP:           1/0 - высокий/низкий приоритет прерывания от модуля ССР1

TMR2IP:          1/0 - высокий/низкий приоритет прерывания по переполнению таймера ТМR2

TMR1IP:          1/0 - высокий/низкий приоритет прерывания по переполнению таймера ТМR1

Регистр IRР2:

U-0

U-0

U-0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

-

-

-

EEIP

BCLIP

LVDIP

TMR3IP

CCP2IP

Бит 7

Бит 0

EEIP: 1/0 - высокий/низкий приоритет прерывания по окончании записи в ЕЕРRОМ данных/ flash памяти программ

BCLIP: 1/0 - высокий/низкий приоритет прерывания прерываний при возникновении коллизий на шине

LVDIP: 1/0 - высокий/низкий приоритет прерывания от детектора пониженного напряжения

TMR3IP: 1/0 - высокий/низкий приоритет прерывания по переполнению таймера ТМRЗ

CCP2IP: 1/0 - высокий/низкий приоритет прерывания от модуля ССР2

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

• При переходе на обработку прерываний бит глобального разрешения прерываний сбрасывается, чтобы запретить прерывания соответствующего приоритета. Если бит IPEN=0, то это бит GIЕ. Если приоритетная система прерываний включена, то это один из битов GIЕН или GIЕL.

• Прерывания с высоким приоритетом могут приостанавливать обработку прерывании с низким приоритетом.

• Адрес возврата помещается в вершину стека, а в счетчик команд РС помешается вектор прерываний (000008h или 000018h).

Рекомендация для Вас - 6. Интерфейсы.

• В обработчике прерываний конкретный источник прерываний может быть определен проверкой соответствующих флагов.

• Флаги прерываний должны быть сброшены в обработчике прерываний для предотвращения повторного перехода на обработку прерывания.

• Выход из обработки прерываний необходимо выполнять командой RЕТFIЕ, по которой будет установлен соответствующих бит глобального разрешения прерываний (GIE, GIEH или GIEL).

• Время перехода на обработку прерываний от внешних источников (прерывания INТ, изменение уровня сигнала на входах РОRТВ и др.) составляет 3-4 цикла команд.

• Время перехода не зависит от типа выполняемой команды (однословная или двухсловная).

• Флаги прерываний устанавливаются вне зависимости от состояния битов глобального и индивидуального разрешения прерываний.


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