F00-17 (1041601), страница 18
Текст из файла (страница 18)
Однако, сначала прерываниянеобходимо разрешить глобально установкой в 1 бита EA (IE.7), только после этого состояниеиндивидуальных флагов разрешения прерываний будет учтено. Сброс в 0 бита ЕА запрещает прерывания отвсех источников прерываний независимо от состояния индивидуальных флагов разрешения прерываний.Некоторые флаги прерываний сбрасываются автоматически аппаратными средствами при переходе кпроцедуре ISR. Однако большинство флагов прерываний не сбрасываются аппаратно и должны бытьсброшены программно до возвращения из процедуры ISR.
Если флаг прерывания остается установленнымпосле завершения выполнения команды возврата из прерывания (RETI), то сразу же будет сгенерированновый запрос прерывания и после завершения выполнения следующей команды произойдет повторныйпереход к процедуре ISR.10.4.1. Источники и векторы прерыванийМК закрепляет 12 источников прерываний за встроенными периферийными модулями.
Взависимости от конфигурации портов ввода/вывода МК доступны до 10 дополнительных внешнихисточников прерываний. Программа может симулировать прерывание установкой в 1 любого флагапрерывания. Если прерывание для этого флага разрешено, будут сгенерирован запрос прерывания ипроизойдет переход по адресу процедуры ISR, связанной с этим флагом прерывания. Источники прерыванийМК, соответствующие им адреса прерываний, уровень приоритета и биты управления перечислены в таблице10.4.
Подробная информация относительно условий возникновения прерываний от периферийных модулей иповедения их флагов прерываний приведена в разделах данного руководства, посвященных работесоответствующих периферийных модулей.10.4.2. Внешние прерыванияДва внешних источника прерываний (/INT0 и /INT1) настраиваются как входы с низким активнымуровнем, чувствительные к уровню или к фронту сигнала, в зависимости от состояния битов IT0 (TCON.0) иIT1 (TCON.2). Биты IE0 (TCON.1) и IE1 (TCON.3) служат флагами прерываний для внешних прерываний/INT0 и /INT1 соответственно.
Если вход /INT0 или /INT1 настроен как чувствительный к фронту, тосоответствующий флаг прерывания автоматически сбрасывается аппаратными средствами при переходе кпроцедуре ISR. Если вход /INT0 или /INT1 настроен как чувствительный к уровню, то соответствующий флагпрерывания отслеживает состояние входного вывода внешнего прерывания. Внешний источник прерываниядолжен удерживать на этом входе активный уровень до тех пор, пока запрос прерывания не будет распознан.Затем необходимо деактивировать запрос прерывания до окончания выполнения процедуры ISR, иначе будетсгенерирован другой запрос прерывания.Остальные четыре внешних прерывания (внешние прерывания 4-7) являются чувствительными кфронту сигнала входами с низким активным уровнем. Соответствующие им флаги прерываний размещены врегистре флагов прерываний от порта 1 (см.
рис. 15.10).Page 76CYGNAL Integrated Products, Inc. 20024.2002; Rev. 1.4C8051F000/1/2/5/6/7C8051F010/1/2/5/6/7Таблица 10.4. Источники прерыванийВекторпрерывания0x00000x00030x000B0x00130x001B0x0023ПриоритетФлаг прерыванияНаивысший01234Переполнение Таймера 2 (или EXF2)Модуль SPIМодуль SMBus0x002B0x00330x003B567Детектор диапазона АЦП00x00438Программируемый массивсчетчиков 0Спадающий фронт компаратора 0Нарастающий фронт компаратора 0Спадающий фронт компаратора 1Нарастающий фронт компаратора 1Переполнение Таймера 30x004B90x00530x005B0x00630x006B0x00731011121314Завершение преобразования АЦП00x007B15Внешнее прерывание 4Внешнее прерывание 5Внешнее прерывание 6Внешнее прерывание 7Неиспользуемое прерываниеГотовность внешнего кварцевогогенератора0x00830x008B0x00930x009B0x00A316171819200x00AB21НетIE0 (TCON.1)TF0 (TCON.5)IE1 (TCON.3)TF1 (TCON.7)RI (SCON.0)TI (SCON.1)TF2 (T2CON.7)SPIF (SPI0CN.7)SI (SMB0CN.3)ADWINT(ADC0CN.2)CF (PCA0CN.7)CCFn (PCA0CN.n)CP0FIF (CPT0CN.4)CP0RIF (CPT0CN.5)CP1FIF (CPT1CN.4)CP1RIF (CPT1CN.5)TF3 (TMR3CN.7)ADCINT(ADC0CN.5)IE4 (PRT1IF.4)IE5 (PRT1IF.5)IE6 (PRT1IF.6)IE7 (PRT1IF.7)NoneXTLVLD(OSCXCN.7)Источник прерыванияСбросВнешнее прерывание 0 (/INT0)Переполнение Таймера 0Внешнее прерывание 1 (/INT1)Переполнение Таймера 1Последовательный порт (УАПП)Бит разрешенияРазрешен всегдаEX0 (IE.0)ET0 (IE.1)EX1 (IE.2)ET1 (IE.3)ES (IE.4)ET2 (IE.5)ESPI0 (EIE1.0)ESMB0 (EIE1.1)EWADC0 (EIE1.2)EPCA0 (EIE1.3)ECP0F (EIE1.4)ECP0R (EIE1.5)ECP1F (EIE1.6)ECP1R (EIE1.7)ET3 (EIE2.0)EADC0 (EIE2.1)EX4 (EIE2.2)EX5 (EIE2.3)EX6 (EIE2.4)EX7 (EIE2.5)Reserved (EIE2.6)EXVLD (EIE2.7)10.4.3.
Приоритеты прерыванийКаждому источнику прерываний можно программно присвоить один из двух уровней приоритета:низкий или высокий. Процедура ISR с низким приоритетом может быть прервана прерыванием с высокимприоритетом. Прерывание с высоким приоритетом не может быть прервано. Каждое прерывание имеетсвязанный с ним бит приоритета в регистрах SFR (IP-EIP2), используемый для настройки уровня приоритета.По умолчанию присваивается низкий приоритет. Если два прерывания происходят одновременно,прерывание с более высоким приоритетом обслуживается первым. Если оба прерывания имеют одинаковыйприоритет, для арбитража используется фиксированный уровень приоритета.10.4.4. Задержка обработки прерыванияВремя реакции на прерывание зависит от состояния процессорного ядра в момент возникновенияпрерывания.
Опрос флага прерывания и декодирование приоритета осуществляется каждый системныйтактовый цикл. Поэтому, наименее возможное время реакции на прерывание составляет 5 тактовых циклов: 1цикл для определения прерывания и 4 цикла для выполнения команды LCALL перехода к процедуре ISR.Если в момент выполнения команды RETI появляется прерывание, то до выполнения команды LCALLперехода на процедуру обслуживания этого прерывания будет исполнена одна команда основной программы.Поэтому максимальное время реакции на прерывание (если в настоящий момент не обслуживается другоепрерывание или если новое прерывание имеет более высокий приоритет) будет тогда, когда выполняетсякоманда RETI, а следом за ней должна выполняться команда DIV. В этом случае время реакции составляет 18тактовых циклов: 1 цикл для определения прерывания, 5 циклов для выполнения команды RETI, 8 циклов длявыполнения команды DIV и 4 цикла для выполнения команды LCALL перехода на процедуру ISR.
Есливыполняется процедура ISR для прерывания с равным или более высоким приоритетом, новое прерывание небудет обслужено до тех пор, пока не завершится текущая процедура ISR, включая команду RETI иследующую команду.4.2002; Rev. 1.4CYGNAL Integrated Products, Inc. 2002Page 77C8051F000/1/2/5/6/7C8051F010/1/2/5/6/710.4.5. Описания регистров прерыванийРегистры SFR, используемые для разрешения/запрещения источников прерываний и установки ихприоритетов, описаны ниже. Подробная информация относительно условий возникновения прерываний отпериферийных модулей и поведения их флагов прерываний приведена в разделах данного руководства,посвященных работе соответствующих периферийных модулей.Рисунок 10.9.
IE: Регистр разрешения прерыванийR/WR/WR/WR/WR/WR/WR/WR/WEAIEGF0ET2ESET1EX1ET0EX0Значениепри сбросе:Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 000000000Бит 7(доступен в битовомрежиме адресации)SFR Адрес:0xA8Бит 7: EA: Бит разрешения всех прерываний.Это бит глобально разрешает/запрещает все прерывания. Он перекрываетиндивидуальные маски прерываний0: Все источники прерываний запрещены.1: Каждое прерывание разрешено/запрещено в соответствии с его индивидуальной маской.Бит 6: IEGF0: Флаг общего назначения 0.Это флаг общего назначения, предназначенный для использования под управлением программы.Бит 5: ET2: Бит разрешения прерывания от Таймера 2.Этот бит устанавливает маскирование прерывания от Таймера 2.0: Все прерывания от Таймера 2 запрещены.1: Разрешены запросы прерываний, генерируемые при установке флага TF2 (T2CON.7)Бит 4: ES: Бит разрешения прерываний от последовательного порта (УАПП).Этот бит устанавливает маскирование прерывания от последовательного порта (УАПП).0: Все прерывания от УАПП запрещены.1: Разрешены запросы прерываний, генерируемые при установке флагов R1 (SCON.0) илиT1 (SCON.1).Бит 3: ET1: Бит разрешения прерывания от Таймера 1.Этот бит устанавливает маскирование прерывания от Таймера 1.0: Все прерывания от Таймера 1 запрещены.1: Разрешены запросы прерываний, генерируемые при установке флага TF1 (TCON.7).Бит 2: EX1: Бит разрешения внешнего прерывания 1.Этот бит устанавливает маскирование внешнего прерывания 1.0: Внешнее прерывание 1 запрещено.1: Разрешены запросы прерываний, генерируемые сигналом на выводе /INT1.Бит 1: ET0: Бит разрешения прерывания от Таймера 0.Этот бит устанавливает маскирование прерывания от Таймера 0.0: Все прерывания от Таймера 0 запрещены.1: Разрешены запросы прерываний, генерируемые при установке флага TF0 (TCON.5).Бит 0: EX0: Бит разрешения внешнего прерывания 0.Этот бит устанавливает маскирование внешнего прерывания 0.0: Внешнее прерывание 0 запрещено.1: Разрешены запросы прерываний, генерируемые сигналом на выводе /INT0.Page 78CYGNAL Integrated Products, Inc.
20024.2002; Rev. 1.4C8051F000/1/2/5/6/7C8051F010/1/2/5/6/7Рисунок 10.10. IP: Регистр приоритетов прерыванийR/WR/WR/WR/WR/WR/WR/WR/W--PT2PSPT1PX1PT0PX0Значениепри сбросе:Бит 7Бит 6Бит 5Бит 4Бит 3Бит 2Бит 1Бит 000000000(доступен в битовомрежиме адресации)SFR Адрес:0xB8Биты 7-6: Не используются.
Читаются как 11b.Бит 5: PT2: Управление приоритетом прерывания от Таймера 2.Этот бит устанавливает приоритет прерываний от Таймера 2.0: Приоритет прерывания от Таймера 2 определяется уровнем приоритета по умолчанию.1: Прерываниям от Таймера 2 назначается высокий уровень приоритета.Бит 4: PS: Управление приоритетом прерывания от последовательного порта (УАПП).Этот бит устанавливает приоритет прерываний от последовательного порта (УАПП).0: Приоритет прерывания от УАПП определяется уровнем приоритета по умолчанию.1: Прерываниям от УАПП назначается высокий уровень приоритета.Бит 3: PT1: Управление приоритетом прерывания от Таймера 1.Этот бит устанавливает приоритет прерываний от Таймера 1.0: Приоритет прерывания от Таймера 1 определяется уровнем приоритета по умолчанию.1: Прерываниям от Таймера 1 назначается высокий уровень приоритета.Бит 2: PX1: Управление приоритетом внешнего прерывания 1.Этот бит устанавливает приоритет внешнего прерывания 1.0: Приоритет внешнего прерывания 1 определяется уровнем приоритета по умолчанию.1: Внешнему прерыванию 1 назначается высокий уровень приоритета.Бит 1: PT0: Управление приоритетом прерывания от Таймера 0.Этот бит устанавливает приоритет прерываний от Таймера 0.0: Приоритет прерывания от Таймера 0 определяется уровнем приоритета по умолчанию.1: Прерываниям от Таймера 0 назначается высокий уровень приоритета.Бит 0: PX0: Управление приоритетом внешнего прерывания 0.Этот бит устанавливает приоритет внешнего прерывания 0.0: Приоритет внешнего прерывания 0 определяется уровнем приоритета по умолчанию.1: Внешнему прерыванию 0 назначается высокий уровень приоритета.4.2002; Rev.