.
Но событие (звонок) состоялось, и вы о нем знаете. Опять же по отношению к микроконтроллерам , в них то же есть возможность "перезвонить", ведь в МК событие фиксируется поднятием определенного флага и соответственно не составляет труда по необходимости указать в программном коде проверку флага.
События могут происходить как от внутренних, так и от внешних сигналов. К внутренним относятся сигналы от различных периферийных устройств (встроенных аппаратных модулей (ССР, таймеры, ШИМ и т.д.)). К внешним, изменения уровня сигнала на входах 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.
Все права принадлежат ChipMK.ru. При копировании материала ссылка обязательна. 2011-2021 © ChipMK.ru
![]() |
|