Система прерывании Р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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: