.
Но событие (звонок) состоялось, и вы о нем знаете. Опять же по отношению к микроконтроллерам , в них то же есть возможность "перезвонить", ведь в МК событие фиксируется поднятием определенного флага и соответственно не составляет труда по необходимости указать в программном коде проверку флага.
События могут происходить как от внутренних, так и от внешних сигналов. К внутренним относятся сигналы от различных периферийных устройств (встроенных аппаратных модулей (ССР, таймеры, ШИМ и т.д.)). К внешним, изменения уровня сигнала на входах PORTB (INT0,INT1,INT2,PORTB4-7).
В микроконтроллерах семейства PIC18XXXX реализована возможность приоритета прерываний, т.е. при событии с высоким приоритетом действие с низким приостанавливается , что дает возможность более гибко строить логику работы программы.
Для каждого источника прерываний можно назначить высокий или низкий приоритет. При высоком приоритете, в случае возникновения прерывания, переход осуществляется по вектору 000008h (08h). А при прерывании с низким приоритетом переход осуществляется по вектору 000018h (18h). Если приоритетная система прерываний выключена, т.е. IPEN=0, вектор перехода будет всегда 000008h (08h).
Внешнее прерывание INT0 всегда с высоким приоритетом и соотвественно не имеет бита приоритета.
Выходить из ПП прерывания необходимо с помощью команды RETFIE 1 (FAST) если есть необходимость в восстановлении значений регистров W, STATUS и BSR, или просто RETFIE ( s=0), в этом случае загрузки не производится (по умолчанию). При включенной приоритетной системе , когда в интервале исполнения прерывания с низким приоритетом возникает прерывания с высоким, значение регистров W, STATUS и BSR, сохраненные при переходе на обработку прерывания теряются . Для их сохранения и восстановления (если это необходимо ) выполнить команды в определенной последовательности.
movwf W_Temp ; Сохранение W_
movff STATUS,Stat_Temp ; Сохранение Stat_Temp
movff BSR,BSR_Temp ; Сохранение BSR_Temp
*********************************************
movff BSR_Temp,BSR ; Восстановление BSR
movf W_Temp,W ; Восстановление WREG
movff Stat_Temp,STATUS ; Восстановление STATUS
retfie ; Возврат из ПП прерывания.
В микроконтроллерах PIC18XX2, как и в большинстве других микроконтроллеров семейства PIC18XXXX, для управления прерываниями предусмотрено 10 специальных регистров. Содержимое регистров (биты управления) в различных микроконтроллерах могут быть другие. Все зависит от содержания в МК периферийных модулей, к примеру, в микроконтроллере PIC18F25K20 есть дополнительно к "базовым" аппаратные модули компараторов и соответственно для них добавлены биты управления
Практически все регистры доступны для чтения/записи, т.е. мы можем сбросить или установить как отдельный бит в регистре , так и перезаписать весь регистр (за исключением регистра PIR1 биты 4,5, их можно только прочитать). К примеру, для разрешения прерываний необходимо установить бит 7 (GIE) регистра INTCON .
Каждому источнику прерываний соответствует три бита. (за исключением INT0 - 2 бита)
Ниже показана структурная схема логики прерываний микроконтроллера PIC18XX2 (см. даташит).
В качестве примера работы с прерываниями , рассмотрим программу на основе той же Test_01.
Открываем в MPLAB IDE проектTest_01 и добавляем в код программы строки выделенные синим цветом. Тем самым подключаем для наглядности к выходу порта "В" , 2 еще один светодиод. Он будет переключаться по прерыванию, т.е. при каждом переполнении таймера TMR0 светодиод будет инвертировать свое состояние. (задействуем прерывание от переполнения таймера TMR0).
{showhide title="Смотреть код программы" template="strong" changetitle="Свернуть код программы" mousetitleistitle=true closeonclick=true titleasspan=true}
list p=18F252 ; Используется микроконтроллер PIC18F252. #include p18F252.inc ; Подключение INC-файла PIC18F252. ;*************************************************************************** ; Конфигурирование. ;*************************************************************************** CONFIG OSC=XT ; кварц.резонатор CONFIG BOR=OFF ; Сброс по снижению питания выключен CONFIG WDT=OFF ; WDT выключен. CONFIG LVP=OFF ; Режим низковольтного програм. выкл. ;************************************ ; Присвоение ;************************************ #define led_1 LATB,1 ; #define led_2 LATB,2 ; ;************************************ ; Регистры общ. назначения ;************************************ cblock 20h ; Reg_1 ; Reg_2 ; Reg_3 ; endc ; ;******************************************************************* org 0 ; goto START ; ;---------------------------------------- ;добавляем в программу вектор прерывания ;---------------------------------------- org 08h ; H вектор прерывания btg led_2 ; инвертирование сигнала (светодиод №2) bcf INTCON,2 ; сброс флага TMR0 RETFIE 1 ; выход из прерывания с восст. ;************************************ ; иницилизация ;************************************ START movlw b'00000000'; movwf TRISB ; Конфигурирование порта B movlw b'10000000' ; настройка ТMR0 movwf T0CON ; movlw b'11100000' ; = разрешаем глоб.прерывания +периферия+ movwf INTCON ;переполнению TMR0+ сброс флага TMR0= ;=================================================================== ; Начало программы. ;=================================================================== Povtor bsf led_1 ; включаем светодиод call Pause_1 ; ждем одну секунду bcf led_1 ; выключаем светодиод call Pause_1 ; ждем одну секунду goto Povtor ; зацикливаем программу. ;************************************ ; Пауза 1 секунда ;************************************ Pause_1 movlw .173 movwf Reg_1 movlw .19 movwf Reg_2 movlw .6 movwf Reg_3 decfsz Reg_1 bra $-2 decfsz Reg_2 bra $-6 decfsz Reg_3 bra $-.10 return ;************************************* end
{/showhide}
В данном примере приоритетная система прерываний выключена, т.е. IPEN=0 и соответственно вектор перехода будет всегда 000008h (08h).
Давайте включим приоритетную систему прерываний установкой бита IPEN регистра управления RCON и задействуем для примера еще один таймер TMR1, который будет иметь низкий приоритет по отношению к TMR0. При сбросе микроконтроллера все регистры выбора приоритета устанавливаются "1" т.е. включен высокий приоритет, для того что бы TMR1 имел низкий приоритет необходимо сбросить бит "0" регистра IPR1. что мы и сделали в примере программы, предоставленной ниже (выделено синим цветом).
Для наглядности подключим к биту 3 порта"В" еще один светодиод и "нарисуем" его в проекте Протеуса, с помощью которого и будем визуально наблюдать работу приоритетной системы прерывания .Теперь при переполнении TMR0 произойдет переход с вектором 08h , а при переполнении TMR1 с вектором 18h.
{showhide title="Смотреть код программы" template="strong" changetitle="Свернуть код программы" mousetitleistitle=true closeonclick=true titleasspan=true}
list p=18F252 ; Используется микроконтроллер PIC18F252. #include p18F252.inc ; Подключение INC-файла PIC18F252. ;*************************************************************************** ; Конфигурирование. ;*************************************************************************** CONFIG OSC=XT ; кварц.резонатор CONFIG BOR=OFF ; Сброс по снижению питания выключен CONFIG WDT=OFF ; WDT выключен. CONFIG LVP=OFF ; Режим низковольтного програм. выкл. ;************************************ ; Присвоение ;************************************ #define led_1 LATB,1 ; #define led_2 LATB,2 ; #define led_3 LATB,3 ; ;************************************ ; Регистры общ. назначения ;************************************ cblock 20h ; Reg_1 ; Reg_2 ; Reg_3 ; endc ; ;******************************************************************* org 0 ; goto START ; ;---------------------------------------- ;H вектор прерывания ;---------------------------------------- org 08h ; H вектор прерывания btg led_2 ; инвертирование сигнала (светодиод №2) bcf INTCON,2 ; сброс флага TMR0 RETFIE ; выход из прерывания ;---------------------------------------- ;L вектор прерывания ;---------------------------------------- org 18h ; L вектор прерывания btg led_3 ; инвертирование сигнала (светодиод №3) bcf PIR1,0 ; сброс флага TMR1 RETFIE ; выход из прерывания ;************************************ ; иницилизация ;************************************ START movlw b'00000000'; movwf TRISB ; Конфигурирование порта B movlw b'10000000' ; настройка ТMR0 movwf T0CON ; movlw b'00000001' ; включаем ТMR1 movwf T1CON ; movlw b'11100000' ; = разрешаем глоб.прерывания +периферия+ movwf INTCON ;переполнению TMR0+ сброс флага TMR0= bcf PIR1,0 ; сброс флага TMR1 bsf PIE1,0 ; Разрешаем прерывание от TMR1 bsf RCON,IPEN ; разрешаем приор. систему прирываний bcf IPR1,0 ; выбор низкого приоритета TMR1 ;=================================================================== ; Начало программы. ;=================================================================== Povtor bsf led_1 ; включаем светодиод call Pause_1 ; ждем одну секунду bcf led_1 ; выключаем светодиод call Pause_1 ; ждем одну секунду goto Povtor ; зацикливаем программу. ;************************************ ; Пауза 1 секунда ;************************************ Pause_1 movlw .173 movwf Reg_1 movlw .19 movwf Reg_2 movlw .6 movwf Reg_3 decfsz Reg_1 bra $-2 decfsz Reg_2 bra $-6 decfsz Reg_3 bra $-.10 return ;************************************* end
{/showhide}
Еще очень часто встречается ситуация, когда задействовано несколько прерываний с одним приоритетом и вектор перехода у них соответственно тот же один. В этом случае для "выявления" источника прерывания необходимо проверить флаги задействованных источников (периферийных модулей или внешних) и перейти на соответствующую ПП обработки прерываний, к примеру как показано здесь.
org 08h ; (18h) btfsc INTCON,2 ; проверяем флаг таймера TMR0 goto Pr_0 ; установлен ? переходим на обработку btfsc INTCON,1 ; проверяем флаг по входу INT0 goto Pr_INT0 ; установлен ? переходим на обработку btfsc INTCON3,0 ; проверяем флаг по входу INT1 goto Pr_INT1 ; установлен ? переходим на обработку
;----------------------------------------------------
; обработка прерывания TMR0
;----------------------------------------------------
; Pr_0
Здесь ПП обработки прерывания
bcf INTCON,2 ; сброс флага TMR0 RETFIE 1 ; выход из прерывания с восст.
;----------------------------------------------------
; обработка прерывания INT0
;----------------------------------------------------
; Pr_INT0
Здесь ПП обработки прерывания
bcf INTCON,1 ; сброс флага INT0 RETFIE 1 ; выход из прерывания с восст.
;----------------------------------------------------
; обработка прерывания INT1
;----------------------------------------------------
Pr_INT1
Здесь ПП обработки прерывания
bcf INTCON3,0 ; сброс флага INT1 RETFIE 1 ; выход из прерывания с восст.
Регистр RCON.
В данном регистре нам интересен только бит 7 "IPEN", который разрешает приоритетную систему прерываний . Если бит IPEN установлен , то приоритетная система прерываний разрешена. Если бит сброшен (по умалчиванию), то приоритетная система прерываний запрещена, в этом случае система прерываний совместима с микроконтроллерами среднего семейства PIC16XXXX.
R/W-0 | |||||||
IPEN | - | - | - | - | - | - | - |
Бит7 | Бит6 | Бит5 | Бит4 | Бит3 | Бит2 | Бит1 | Бит0 |
Регистр 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 | TMR0IE | INT0IE | RBIE | TMR0IF | INT0IF | RBIF |
Бит7 | Бит6 | Бит5 | Бит4 | Бит3 | Бит2 | Бит1 | Бит0 |
Бит7 GIE/GIEH: Бит глобального разрешения прерываний.
IPEN=0
1= Разрешены все немаскированные прерывания.
0= Запрещены все прерывания.
IPEN=1
1= Разрешены прерывания с высоким приоритетом.
0= Все прерывания с высоким приоритетом запрещены.
Бит6 PEIE/GIEL: Разрешение периферийных прерываний
IPEN=0
1= Разрешены все периферийные немаскированные прерывания.
0= Запрещены все периферийные прерывания.
IPEN=1
1= Разрешены прерывания с низким приоритетом.
0= Все прерывания с низким приоритетом запрещены.
Бит5 TMR0IE: Разрешение прерывания по переполнению TMR0
1= Разрешено прерывание по переполнению TMR0
0= Прерывание по переполнению TMR0 запрещено.
Бит4 INT0IE: Разрешение внешнего прерывания INT0
1= Внешнее прерывание INT0 разрешено
0= Внешнее прерывание INT0 запрещено
Бит3 RB0IE: Разрешение прерывания по изменению уровня сигнала на входах PORTB
1= Разрешено прерывания по изменению уровня сигнала на входах PORTB
0=Запрещено прерывания по изменению уровня сигнала на входах PORTB
Бит2 TMR0IF: Флаг прерывания переполнения таймера TMR
1= Произошло переполнение таймера TMR0 (сбрасывается программно)
0= Переполнение таймера TMR0 не происходило
Бит1 TMR0IF: Флаг внешнего прерывания INT0
1= Выполнено условие внешнего прерывания INT0 (сбрасывается программно)
0= Условие внешнего прерывания INT0 не происходило
Бит0 INT0IE: Флаг прерывания по изменению уровня сигнала на входах PORTB
1= Зафиксировано изменение уровня сигнала на одном из входах RB7:RB4 (сбрасывается программно)
0= Уровень сигнала на входах RB7:RB4 не изменялся
Регистр INTCON2.
Регистр доступен для записи и чтения, содержит бит включения подтягивающих резисторов, битов выбора активного фронта и приоритета.
Важно:
Сброс по включению питания микроконтроллера (POR) и сброс по снижению питания (BOR) приводит к установке битов управления регистра INTCON2, за исключением не используемых битов 1,3, которые сбрасываются.
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 | - | TMR0IP | - | RBIP |
Бит7 | Бит6 | Бит5 | Бит4 | Бит3 | Бит2 | Бит1 | Бит0 |
Бит7 -RBPU: Включение подтягивающих резисторов PORTB
1= Все подтягивающие резисторы выключены
0= Подтягивающие резисторы включены на выводах PORTB, настроенных на вход
Бит6 INTEDG0: Выбор активного фронта внешнего прерывания INT0
1= Прерывания по переднему фронту сигнала
0= Прерывание по заднему фронту синала
Бит5 INTEDG1: Выбор активного фронта внешнего прерывания INT1
1= Прерывания по переднему фронту сигнала
0= Прерывание по заднему фронту синала
Бит4 INTEDG2: Выбор активного фронта внешнего прерывания INT2
1= Прерывания по переднему фронту сигнала
0= Прерывание по заднему фронту синала
Бит3 - Не используется. читается как 0
Бит2 TMR0IP: Выбор приоритета прерывания по переполнению таймера TMR0
1= Высокий приоритет
0= Низкий приоритет
Бит1 - Не используется. читается как 0
Бит0 RBIP: Выбор приоритета прерывания по изменению уровня сигнала на входах PORTB
1= Высокий приоритет
0= Низкий приоритет
Регистр INTCON3.
Регистр доступен для записи и чтения, содержит биты разрешения прерываний, флаги прерываний и биты приоритета.
Важно:
Сброс по включению питания микроконтроллера (POR) и сброс по снижению питания (BOR) приводит к сбросу битов управления регистра INTCON3, за исключением битов 6,7, которые устанавливаются.
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 | Бит6 | Бит5 | Бит4 | Бит3 | Бит2 | Бит1 | Бит0 |
Бит7 INT2IP: Выбор приоритета внешнего прерывания INT2
1= Высокий приоритет
0= Низкий приоритет
Бит6 INT1IP: Выбор приоритета внешнего прерывания INT1
1= Высокий приоритет
0= Низкий приоритет
Бит5 - Не используется. читается как 0
Бит4 INT2IE: Разрешение внешнего прерывания INT2
1= Внешнее прерывание INT2 разрешено
0= Внешнее прерывание INT2 запрещено
Бит3 INT1IE: Разрешение внешнего прерывания INT1
1= Внешнее прерывание INT1 разрешено
0= Внешнее прерывание INT1 запрещено
Бит2 - Не используется. читается как 0
Бит1 INT2IE: Флаг внешнего прерывания INT2
1= Выполнено условие внешнего прерывания INT2 (сбрасывается программно)
0= Условие внешнее прерывание INT2 не выполнено
Бит0 INT1IE: Флаг внешнего прерывания INT1
1= Выполнено условие внешнего прерывания INT1 (сбрасывается программно)
0= Условие внешнее прерывание INT1 не выполнено
Регистр PIR1.
Регистр доступен для записи и чтения за исключением битов 4,5, которые доступны только для чтения, содержит индивидуальные флаги периферийных прерываний .
Важно:
Флаги прерываний устанавливаются вне зависимости от того разрешено прерывание или нет. Перед каждым разрешением прерывания и после его обработки, необходимо сбросить флаг .
Сброс по включению питания микроконтроллера (POR) и сброс по снижению питания (BOR) приводит к сбросу битов регистра PIR1.
R/W-0 | R/W-0 | R-0 | R-0 | R/W-0 | R/W-0 | R/W-0 | R/W-0 |
PSPIF | ADIF | RCIF | TXIF | SSPIF | CCP1IF | TMR2IF | TMR1IF |
Бит7 | Бит6 | Бит5 | Бит4 | Бит3 | Бит2 | Бит1 | Бит0 |
Бит7 PSPIF: Флаг прерывания ведомого параллельного порта PSP
1= Произошла операция чтения или записи (сбрасывается программно)
0= Операции чтения и записи не выполнялось
Бит6 ADIF: Флаг прерывания от модуля АЦП
1= Преобразование АЦП завершено (сбрасывается программно)
0= Преобразование АЦП не завершено
Бит5 RCIF: Флаг прерывания от приемника USART
1= Буфер приемника USART полон (сбрасывается чтением регистра RCREG)
0= Буфер приемника USART пуст
Бит4 TXPIF: Флаг прерывания от передатчика USART
1= Буфер передатчика USART пуст (сбрасывается записью в регистр TXREG)
0= Буфер передатчика USART полон
Бит3 SSPIF: Флаг прерывания от модуля MSSP
1= Выполнено условие возникновения прерывания от модуля SSP
(сбрасывается программно)
0= Условие возникновения прерывания от модуля SSP не выполнено
Бит2 CCP1IF: Флаг прерывания от модуля CCP1
Режим захвата
1= Выполнен захват значения TMR1 (сбрасывается программно)
0= Захвата значения TMP1 не происходило
Режим сравнения
1= Значение TMR1 достигло указанного в регистрах сравнения
(сбрасывается программно)
0= Значение TMR1 не достигло указанного в регистрах сравнения
ШИМ режим
Не используется
Бит1 TMR2IF: Флаг прерывания по переполнению таймера TMR2
1= Произошло переполнение таймера TMR2 (сбрасывается программно)
0= Переполнение таймера TMR2 не происходило
Бит0 TMR1IF: Флаг прерывания по переполнению таймера TMR1
1= Произошло переполнение таймера TMR1 (сбрасывается программно)
0= Переполнение таймера TMR1 не происходило
Регистр PIR2.
Регистр доступен для записи и чтения, за исключением битов 5,6,7, которые не используются и читаются как 0,содержит индивидуальные флаги периферийных прерываний .
Важно:
Флаги прерываний устанавливаются вне зависимости от того разрешено прерывание или нет. Перед каждым разрешением прерывания и после его обработки, необходимо сбросить флаг .
Сброс по включению питания микроконтроллера (POR) и сброс по снижению питания (BOR) приводит к сбросу битов регистра PIR2.
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 | Бит6 | Бит5 | Бит4 | Бит3 | Бит2 | Бит1 | Бит0 |
Бит7 - Не используется. читается как 0
Бит6 - Не используется. читается как 0
Бит5 - Не используется. читается как 0
Бит4 EEIF: Флаг прерывания по окончании записи EEROM данных/Flach памяти программ
1= Запись данных завершена (сбрасывается программно)
0= Запись данных не завершена или не была начата
Бит3 BCIF: Флаг прерываний возникновения коллизий на шине
1= На шине обнаружены коллизии (сбрасывается программно)
0= Коллизии не обнаружено
Бит2 LVDIP: Флаг прерывания от детектора пониженного напряжения
1= Обнаружено снижение напряжения питания (сбрасывается программно)
0= Напряжение питания выше установленного значения
Бит1 TMR3IP: Флаг прерывания переполнения таймера TMR3
1= Произошло переполнение таймера TMR3 (сбрасывается программно)
0= Переполнение таймера TMR3 не происходило
Бит0 CCP2IF: Флаг прерывания от модуля CCP2
Режим захвата
1= Выполнен захват значения TMR1 (сбрасывается программно)
0= Захвата значения TMP1 не происходило
Режим сравнения
1= Значение TMR1 достигло указанного в регистрах сравнения
(сбрасывается программно)
0= Значение TMR1 не достигло указанного в регистрах сравнения
ШИМ режим
Не используется
Регистр PIE1.
Регистр доступен для записи и чтения, содержит индивидуальные биты периферийных прерываний. Если бит IPEN=0, то для разрешения перефирийных прерываний необходимо установить бит PEIE.
Важно:
Сброс по включению питания микроконтроллера (POR) и сброс по снижению питания (BOR) приводит к сбросу битов регистра PIE1.
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 | ADIE | RCIE | TXIE | SSPIE | CCP1IE | TMR2IE | TMR1IE |
Бит7 | Бит6 | Бит5 | Бит4 | Бит3 | Бит2 | Бит1 | Бит0 |
Бит7 PSPIE: Разрешение прерывания от ведомого параллельного порта PSP
1= Прерывание от ведомого параллельного порта PSP разрешено
0= Преравание от ведомого параллельного порта PSP запрещено
Бит6 ADIE: Разрешение прерывания от модуля АЦП
1= Прерывание от модуля АЦП разрешено
0= Преравание от модуля АЦП запрещено
Бит5 RCIE: Разрешение прерывания от приемника USART
1= Прерывание от приемника USART разрешено
0= Прерывание от приемника USART запрещено
Бит4 TXPIE: Разрешение прерывания от передатчика USART
1= Прерывание от передатчика USART разрешено
0= Прерывание от передатчика USART запрещено
Бит3 SSPIE: Разрешениег прерывания от модуля MSSP
1= Прерывание от модуля MSSP разрешено
0= Прерывание от модуля MSSP запрещено
Бит2 CCP1IE: Разрешение прерывания от модуля CCP1
1= Прерывание от модуля CCP1 разрешено
0= Прерывание от модуля CCP1 запрещено
Бит1 TMR2IE: Разрешение прерывания по переполнению таймера TMR2
1= Прерывание по переполнению таймера TMR2 разрешено
0= Прерывание по переполнению таймера TMR2 запрещено
Бит0 TMR1IE: Разрешение прерывания по переполнению таймера TMR1
1= Прерывание по переполнению таймера TMR1 разрешено
0= Прерывание по переполнению таймера TMR1 запрещено
Регистр PIE2.
Регистр доступен для записи и чтения, за исключением битов 5,6,7, которые не используются и читаются как 0, содержит индивидуальные флаги периферийных прерываний .
Важно:
Сброс по включению питания микроконтроллера (POR) и сброс по снижению питания (BOR) приводит к сбросу битов регистра PIR2.
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 | Бит6 | Бит5 | Бит4 | Бит3 | Бит2 | Бит1 | Бит0 |
Бит7 - Не используется. читается как 0
Бит6 - Не используется. читается как 0
Бит5 - Не используется. читается как 0
Бит4 EEIE: Разрешение прерывания по окончании записи EEROM
данных / Flach памяти программ
1= Прерывание по окончании записи EEROM разрешено
0= Прерывание по окончании записи EEROM запрещено
Бит3 BCIE: Разрешение прерываний возникновения коллизий на шине
1= Прерывание по возникновения коллизий на шине разрешено
0= Прерывание по возникновения коллизий на шине запрещено
Бит2 LVDIE: Разрешение прерывания от детектора пониженного напряжения
1= Прерывание от детектора пониженного напряжения разрешено
0= Прерывание от детектора пониженного напряжения запрещено
Бит1 TMR3IE: Разрешение прерывания от переполнения таймера TMR3
1= Прерывание от переполнения таймера TMR3 разрешено
0= Прерывание от переполнения таймера TMR3 запрещено
Бит0 CCP2IE: Разрешение прерывания от модуля CCP2
1= Прерывание от модуля CCP2 разрешено
0= Прерывание от модуля CCP2 запрещено
Регистр IPR1.
Регистр доступен для записи и чтения, содержит индивидуальные биты периферийных прерываний. Для включения приорететной системы прерываний бит IPEN должен быть установлен "1".
Важно:
Сброс по включению питания микроконтроллера (POR) и сброс по снижению питания (BOR) приводит к установке битов регистра IPR1.
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 | ADIP | RCIP | TXIP | SSPIP | CCP1IP | TMR2IP | TMR1IP |
Бит7 | Бит6 | Бит5 | Бит4 | Бит3 | Бит2 | Бит1 | Бит0 |
Бит7 PSPIP: Выбор приоритета прерывания от ведомого параллельного порта PSP
1= Высокий приоритет
0= Низкий приоритет
Бит6 ADIP: Выбор приоритета прерывания от модуля АЦП
1= Высокий приоритет
0= Низкий приоритет
Бит5 RCIP: Выбор приоритета прерывания от приемника USART
1= Высокий приоритет
0= Низкий приоритет
Бит4 TXPIP: Выбор приоритета прерывания от передатчика USART
1= Высокий приоритет
0= Низкий приоритет
Бит3 SSPIP: Выбор приоритета прерывания от модуля MSSP
1= Высокий приоритет
0= Низкий приоритет
Бит2 CCP1IP: Выбор приоритета прерывания от модуля CCP1
1= Высокий приоритет
0= Низкий приоритет
Бит1 TMR2IP: Выбор приоритета прерывания по переполнению таймера TMR2
1= Высокий приоритет
0= Низкий приоритет
Бит0 TMR1IP: Выбор приоритета прерывания по переполнению таймера TMR1
1= Высокий приоритет
0= Низкий приоритет
Регистр IPR2.
Регистр доступен для записи и чтения, за исключением битов 5,6,7, которые не используются и читаются как 0, содержит индивидуальные биты приоритета периферийных прерываний. Для включения приорететной системы прерываний бит IPEN должен быть установлен "1".
Важно:
Сброс по включению питания микроконтроллера (POR) и сброс по снижению питания (BOR) приводит к к установке битов регистра IPR2, за исключеним трех старших битов, которые не используются и читаются как 0.
U-0 | U-0 | U-0 | R/W-1 | R/W-1 | R/W-1 | R/W-1 | R/W-1 |
- | - | - | EEIP | BCLIP | LVDIP | TMR3IP | CCP2IP |
Бит7 | Бит6 | Бит5 | Бит4 | Бит3 | Бит2 | Бит1 | Бит0 |
Бит7 - Не используется. читается как 0
Бит6 - Не используется. читается как 0
Бит5 - Не используется. читается как 0
Бит4 EEIP: Выбор приоритета прерывания по окончании записи EEROM
данных / Flach памяти программ
1= Высокий приоритет
0= Низкий приоритет
Бит3 BCIP: Выбор приоритета прерываний возникновения коллизий на шине
1= Высокий приоритет
0= Низкий приоритет
Бит2 LVDIP: Выбор приоритета прерывания от детектора пониженного напряжения
1= Высокий приоритет
0= Низкий приоритет
Бит1 TMR3IP: Выбор приоритета прерывания от переполнения таймера TMR3
1= Высокий приоритет
0= Низкий приоритет
Бит0 CCP2IP: Выбор приоритета прерывания от модуля CCP2
1= Высокий приоритет
0= Низкий приоритет
Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2019 © ChipMK.ru
![]() |
|