2.1.7. Прерывания
(Руководство разработчика по микроконтроллерам семейства HCS08)Прерывание — это внешнее событие, вызывающее изменение порядка выполнения команд программы. Реакцией микроконтроллера на прерывание является переход к исполнению специальной подпрограммы. Однако переход к этой подпрограмме вызывается аппаратными средствами, а не программными, как это бывает с обычными подпрограммами.
В МК семейства HCS08 может быть до 32 источников прерываний, каждый из которых имеет собственный вектор прерывания. Вектор прерывания — это адрес, с которого начинается подпрограмма, обслуживающая прерывание (ISR). Эта подпрограмма вызывается, если в ЦП поступил запрос на прерывание и если соблюдены следующие условия:
- Глобальная маска прерывания I сброшена в 0, т.е. прерывание центрального процессора разрешено.
- Разрешено прерывание от периферийного устройства, которое выставило запрос на прерывание.
Команда программного прерывания SWI — специальная команда, вызывающая прерывание независимо от состояния маски прерываний I. Таким образом, прерывания по команде SWI нельзя запретить, поэтому эти прерывания называют немаскируемыми.
На Рис.2.9 приведена упрощенная схема подсистемы прерываний МК HCS08. Каждый источник прерывания имеет в регистре управления соответствующего периферийного модуля бит разрешения прерывания и флаг запроса на прерывание. Эти биты складываются согласно логике И. На выходе элемента И формируется логическая 1 только в том случае, если выставлен запрос на прерывание и это прерывание разрешено. Каждому источнику запроса на прерывание соответствует свой элемент И. Все выходы элементов И соединены со входами элемента ИЛИ, на выходе которого формируется логическая 1, если в текущий момент времени существует хотя бы один разрешенный запрос на прерывание. Сигнал с выхода элемента ИЛИ логически умножается с инверсией глобальной маски прерывания I и поступает в центральный процессор. Нетрудно видеть, что сигнал запроса на прерывание в ЦП будет сформирован, если глобальная маска прерываний I сброшена в 0, появился флаг запроса прерывания от любого источника и прерывание от этого источника разрешены.
Рис.2.9. Упрощенная структура подсистемы прерывания МК.
Если несколько устройств одновременно выставили запросы на прерывание (на выходах нескольких элементов И установлены единицы), то подпрограммы прерывания вызываются микроконтроллером в соответствии с их приоритетами. Первой исполняется подпрограмма для прерывания с наивысшим приоритетом. Затем вызываются следующие подпрограммы в порядке приоритетов запросов, которые в текущий момент времени присутствуют в подсистеме прерывания.
В МК HCS08 каждому запросу на прерывание присвоен определенный приоритет, который нельзя изменить посредством программных установок. О такой подсистеме прерывания говорят, что это система с жестким распределением приоритетов. Для удобства, все источники запросов на прерывание и вектора, им соответствующие, пронумерованы (см. Табл.2.1). Наивысший приоритет присвоен вектору сброса RESET (вектор 0), вектор с номером 31 имеет самый низкий приоритет. Таким образом, первым обслуживается вектор прерывания с низшим номером, а затем прерывания с более высокими номерами. Но в любом случае, будут исполнены подпрограммы прерывания для всех запросов, которые присутствуют и прерывания для них разрешены.
Если запрос на прерывание с выхода подсистемы прерывания (Рис.2.9) поступил, то ЦП начинает выполнение стандартной процедуры перехода к подпрограмме прерывания:
- Завершается выполнение текущей команды.
- Адрес следующей команды, который находится в счетчике команд PC, записывается в стек — сначала младший байт, затем старший.
- Индексный регистр X записывается в стек.
- Аккумулятор А записывается в стек.
- Регистр состояния CCR записывается в стек.
- Запрещаются все прерывания посредством установки маски I в 1.
- Вектор прерывания, который соответствует источнику обслуживаемого запроса, загружается в счетчик команд PC.
- Начинает исполняться подпрограмма прерывания ISR, ее начальный адрес равен вектору прерывания.
При переходе в подпрограмму прерывания регистр H не записывается в стек автоматически. Это сделано для программной совместимости HCS08 с устройствами, ранее созданными на HC05. Поэтому в начале подпрограммы прерывания следует записать значение регистра H в стек, а перед возвратом в основную программу — восстановить его из стека.
Последней командой каждой подпрограммы прерывания должна быть команда RTI, исполнение которой приводит к возврату в основную программу. Исполнение основной программы продолжится с места, в котором произошло прерывание.
При вызове команды RTI микроконтроллер выполняет следующие действия:
- Восстанавливается (считывается) значение регистра признаков CCR из стека.
- Восстанавливается значение аккумулятора А из стека.
- Восстанавливается значение регистра X из стека.
- Восстанавливается из стека адрес возврата в основную (прерванную) программу.
- Происходит возврат (переход) в то место основной программы, в котором произошло прерывание.
Ниже приведены таблицы источников прерываний и номеров векторов прерываний (Табл.2.1...2.6) для некоторых моделей МК семейства HCS08.
Таблица2.1. Вектора прерываний для МК серии AW
Номер вектора | Адрес | Источник запроса | Имя вектора в C | Флаг запроса | Бит маски |
---|---|---|---|---|---|
0 | 0xFFFE | RESET | VectorNumber_Vreset | — | — |
1 | 0xFFFC | SWI | VectorNumber_Vswi | — | — |
2 | 0xFFFA | IRQ | VectorNumber_Virq | IRQSC:IRQF | IRQSC:IRQIE |
3 | 0xFFF8 | LVD | VectorNumber_Vlvd | SPMSC1:LVDF | SPMSC1:LVDIE |
4 | 0xFFF6 | ICG | VectorNumber_Vicg | ICGS1:ICGIF | ICGS2:LOLRE ICGS2:LOCRE |
5 | 0xFFF4 | TPM1 канал 0 | VectorNumber_Vtpm1ch0 | TMP1C0SC:CH0F | TMP1C0SC:CH0IE |
6 | 0xFFF2 | TPM1 канал 1 | VectorNumber_Vtpm1ch1 | TMP1C1SC:CH1F | TMP1C1SC:CH1IE |
7 | 0xFFF0 | TPM1 канал 2 | VectorNumber_Vtpm1ch2 | TMP1C2SC:CH2F | TMP1C2SC:CH2IE |
8 | 0xFFEE | TPM1 канал 3 | VectorNumber_Vtpm1ch3 | TMP1C3SC:CH3F | TMP1C3SC:CH3IE |
9 | 0xFFEC | TPM1 канал 4 | VectorNumber_Vtpm1ch4 | TMP1C4SC:CH4F | TMP1C4SC:CH4IE |
10 | 0xFFEA | TPM1 канал 5 | VectorNumber_Vtpm1ch5 | TMP1C5SC:CH5F | TMP1C5SC:CH5IE |
11 | 0xFFE8 | TPM1 переполнение | VectorNumber_Vtpm1ovf | TMP1SC:TOF | TMP1SC:TOIE |
12 | 0xFFE6 | TPM2 канал 0 | VectorNumber_Vtpm2ch0 | TMP2C0SC:CH0F | TMP2C0SC:CH0IE |
13 | 0xFFE4 | TPM2 канал 1 | VectorNumber_Vtpm2ch1 | TMP2C1SC:CH1F | TMP2C1SC:CH1IE |
14 | 0xFFE2 | TPM2 переполнение | VectorNumber_Vtpm2ovf | TMP2SC:TOF | TMP2SC:TOIE |
15 | 0xFFE0 | SPI | VectorNumber_Vspi | SPI1S:SPRF SPI1S:MODF SPI1S:SPTEF | SPI1C1:SPIE SPI1C1:SPIE SPI1C1:SPTIE |
16 | 0xFFDE | SCI1 error | VectorNumber_Vsci1err | SCI1S1:OR SCI1S1:NF SCI1S1:FE SCI1S1:PF | SCI1C3:ORIE SCI1C3:NFIE SCI1SC3:FEIE SCI1C3:PFIE |
17 | 0xFFDC | SCI1 RX | VectorNumber_Vscilrx | SCI1S1:IDLE SCI1S1:RDRF | SCI1C2:ILIE SCI1C2:RIE |
18 | 0xFFDA | SCI1 TX | VectorNumber_Vsciltx | SCI1S1:TDRE SCI1S1:TC | SCI1C2:TIE SCI1C2:TCIE |
19 | 0xFFD8 | SCI2 ошибка | VectorNumber_Vsci2err | SCI2S1:OR SCI2S1:NF SCI2S1:FE SCI2S1:PF | SCI2S1:OR SCI2S1:NF SCI2S1:FE SCI2S1:PF |
20 | 0xFFD6 | SCI2 RX | VectorNumber_Vsci2rx | SCI2S1:IDLE SCI1S1:RDRF | SCI2C2:ILIE SCI1C2:RIE |
21 | 0xFFD4 | SCI2 TX | VectorNumber_Vsci2tx | SCI2S1:TDRE SCI2S1:TC | SCI2C2:TIE SCI2C2:TCIE |
22 | 0xFFD2 | KBI1 | VectorNumber_Vkeyboard1 | KBI1SC:KBF | KBI1SC:KBIE |
23 | 0xFFD0 | ADC | VectorNumber_Vadc | ADCSC1:COCO | ADCSC1:AIEN |
24 | 0xFFCE | I2C | VectorNumber_Viic | IIC1S:IICIF | IIC1C:IICIE |
25 | 0xFFCC | RTI | VectorNumber_Vrti | SRTISC:RTIF | SRTISC:RTIE |
26 | 0xFFCA | Не используется | — | — | — |
27 | 0xFFC8 | Не используется | — | — | — |
28 | 0xFFC6 | Не используется | — | — | — |
29 | 0xFFC4 | Не используется | — | — | — |
30 | 0xFFC2 | Не используется | — | — | — |
31 | 0xFFC0 | Не используется | — | — | — |
Таблица2.2. Вектора прерываний для МК серий DN, DV и DZ
Номер вектора | Адрес | Источник запроса | Имя вектора в C | Флаг запроса | Бит маски |
---|---|---|---|---|---|
0 | 0xFFFE | RESET | VectorNumber_Vreset | — | — |
1 | 0xFFFC | SWI | VectorNumber_Vswi | — | — |
2 | 0xFFFA | IRQ | VectorNumber_Virq | IRQSC:IRQF | IRQSC:IRQIE |
3 | 0xFFF8 | LVD | VectorNumber_Vlvd | SPMSC1:LVDF | SPMSC1:LVDIE |
4 | 0xFFF6 | MCG | VectorNumber_Vlol | MCGSC:LOLS | MCGC3 |
5 | 0xFFF4 | TPM1 канал 0 | VectorNumber_Vtpm1ch0 | TMP1C0SC:CH0F | TMP1C0SC:CH0IE |
6 | 0xFFF2 | TPM1 канал 1 | VectorNumber_Vtpm1ch1 | TMP1C1SC:CH1F | TMP1C1SC:CH1IE |
7 | 0xFFF0 | TPM1 канал 2 | VectorNumber_Vtpm1ch2 | TMP1C2SC:CH2F | TMP1C2SC:CH2IE |
8 | 0xFFEE | TPM1 канал 3 | VectorNumber_Vtpm1ch3 | TMP1C3SC:CH3F | TMP1C3SC:CH3IE |
9 | 0xFFEC | TPM1 канал 4 | VectorNumber_Vtpm1ch4 | TMP1C4SC:CH4F | TMP1C4SC:CH4IE |
10 | 0xFFEA | TPM1 канал 5 | VectorNumber_Vtpm1ch5 | TMP1C5SC:CH5F | TMP1C5SC:CH5IE |
11 | 0xFFE8 | TPM1 переполнение | VectorNumber_Vtpm1ovf | TPM1SC:TOF | TMP1SC:TOIE |
12 | 0xFFE6 | TPM2 канал 0 | VectorNumber_Vtpm2ch0 | TMP2C0SC:CH0F | TMP2C0SC:CH0IE |
13 | 0xFFE4 | TPM2 канал 1 | VectorNumber_Vtpm2ch1 | TMP2C1SC:CH1F | TMP2C1SC:CH1IE |
14 | 0xFFE2 | TPM2 переполнение | VectorNumber_Vtpm2ovf | TMP2SC:TOF | TMP2SC:TOIE |
15 | 0xFFE0 | SPI | VectorNumber_Vspi | SPI1S:SPRF SPI1S:MODF SPI1S:SPTEF | SPI1C1:SPIE SPI1C1:SPIE SPI1C1:SPTIE |
16 | 0xFFDE | SCI1 ошибка | VectorNumber_Vsci1err | SCI1S1:OR SCI1S1:NF SCI1S1:FE SCI1S1:PF | SCI1C3:ORIE SCI1C3:NFIE SCI1SC3:FEIE SCI1C3:PFIE |
17 | 0xFFDC | SCI1 RX | VectorNumber_Vscilrx | SCI1S1:IDLE SCI1S1:RDRF | SCI1C2:ILIE SCI1C2:RIE |
18 | 0xFFDA | SCI1 TX | VectorNumber_Vsciltx | SCI1S1:TDRE SCI1S1:TC | SCI1C2:TIE SCI1C2:TCIE |
19 | 0xFFD8 | SCI2 ошибка | VectorNumber_Vsci2err | SCI2S1:OR SCI2S1:NF SCI2S1:FE SCI2S1:PF | SCI2C3:ORIE SCI2C3:NFIE SCI2C3:FEIE SCI2C3:PFIE |
20 | 0xFFD6 | SCI2 RX | VectorNumber_Vsci2rx | SCI2S1:IDLE SCI2S1:RDRF SCI2S2:LBKIF SCI2S2:RXEDGIF | SCI2C2:ILIE SCI1C2:RIE SCI2BDH:LBKIE SCI2BDH:RXEDGIE |
21 | 0xFFD4 | SCI2 TX | VectorNumber_Vsci2tx | SCI2S1:TDRE SCI2S1:TC | SCI2C2:TIE SCI2C2:TCIE |
22 | 0xFFD2 | Прерывание порта | VectorNumber_Vport | PTASC:PTAIF PTBSC:PTBIF PTCSC:PTCIF | PTASC:PTAIE PTBSC:PTBIE PTCSC:PTCIE |
23 | 0xFFD0 | ADC | VectorNumber_Vadc | ADCSC1:COCO | ADCSC1:AIEN |
24 | 0xFFCE | I2C | VectorNumber_Viic | IIC1S:IICIF | IIC1C:IICIE |
25 | 0xFFCC | RTC | VectorNumber_Vrti | RTCSC:RTIF | RTCSC:RTIE |
26 | 0xFFCA | Не используется | — | — | — |
... | ... | ... | ... | ... | ... |
31 | 0xFFC0 | Не используется | — | — | — |
Таблица2.3. Вектора прерываний для МК серий GB и GT
Номер вектора | Адрес | Источник запроса | Имя вектора в C | Флаг запроса | Бит маски |
---|---|---|---|---|---|
0 | 0xFFFE | RESET | VectorNumber_Vreset | — | — |
1 | 0xFFFC | SWI | VectorNumber_Vswi | — | — |
2 | 0xFFFA | IRQ | VectorNumber_Virq | IRQSC:IRQF | IRQSC:IRQIE |
3 | 0xFFF8 | LVD | VectorNumber_Vlvd | SPMSC1:LVDF | SPMSC1:LVDIE |
4 | 0xFFF6 | ICG | VectorNumber_Vicg | ICGS1:ICGIF | ICGS2:LOLRE ICGS2:LOCRE |
5 | 0xFFF4 | TPM1 канал 0 | VectorNumber_Vtpm1ch0 | TMP1C0SC:CH0F | TMP1C0SC:CH0IE |
6 | 0xFFF2 | TPM1 канал 1 | VectorNumber_Vtpm1ch1 | TMP1C1SC:CH1F | TMP1C1SC:CH1IE |
7 | 0xFFF0 | TPM1 канал 2 | VectorNumber_Vtpm1ch2 | TMP1C2SC:CH2F | TMP1C2SC:CH2IE |
8 | 0xFFEE | TPM1 переполнение | VectorNumber_Vtpm1ovf | TMP1SC:TOF | TMP1SC:TOIE |
9 | 0xFFEC | TPM1 канал 0 | VectorNumber_Vtpm2ch0 | TMP2C0SC:CH0F | TMP2C0SC:CH0IE |
10 | 0xFFEA | TPM1 канал 1 | VectorNumber_Vtpm2ch1 | TMP2C1SC:CH1F | TMP2C1SC:CH1IE |
11 | 0xFFE8 | TPM2 канал 2 | VectorNumber_Vtpm2ch2 | TMP2C2SC:CH2F | TMP2C2SC:CH2IE |
12 | 0xFFE6 | TPM2 канал 3 | VectorNumber_Vtpm2ch3 | TMP2C3SC:CH3F | TMP2C3SC:CH3IE |
13 | 0xFFE4 | TPM2 канал 4 | VectorNumber_Vtpm2ch4 | TMP2C4SC:CH4F | TMP2C4SC:CH4IE |
14 | 0xFFE2 | TPM2 переполнение | VectorNumber_Vtpm2ovf | TMP2SC:TOF | TMP2SC:TOIE |
15 | 0xFFE0 | SPI | VectorNumber_Vspi | SPI1S:SPRF SPI1S:MODF SPI1S:SPTEF | SPI1C1:SPIE SPI1C1:SPIE SPI1C1:SPTIE |
16 | 0xFFDE | SCI1 error | VectorNumber_Vsci1err | SCI1S1:OR SCI1S1:NF SCI1S1:FE SCI1S1:PF | SCI1C3:ORIE SCI1C3:NFIE SCI1SC3:FEIE SCI1C3:PFIE |
17 | 0xFFDC | SCI1 RX | VectorNumber_Vscilrx | SCI1S1:IDLE SCI1S1:RDRF | SCI1C2:ILIE SCI1C2:RIE |
18 | 0xFFDA | SCI1 TX | VectorNumber_Vsciltx | SCI1S1:TDRE SCI1S1:TC | SCI1C2:TIE SCI1C2:TCIE |
19 | 0xFFD8 | SCI2 error | VectorNumber_Vsci2err | SCI2S1:OR SCI2S1:NF SCI2S1:FE SCI2S1:PF | SCI2C3:ORIE SCI2C3:NFIE SCI2C3:FEIE SCI2C3:PFIE |
20 | 0xFFD6 | SCI2 RX | VectorNumber_Vsci2rx | SCI2S1:IDLE SCI1S1:RDRF | SCI2C2:ILIE SCI1C2:RIE |
21 | 0xFFD4 | SCI2 TX | VectorNumber_Vsci2tx | SCI2S1:TDRE SCI2S1:TC | SCI2C2:TIE SCI2C2:TCIE |
22 | 0xFFD2 | KBI1 | VectorNumber_Vkeyboard1 | KBI1SC:KBF | KBI1SC:KBIE |
23 | 0xFFD0 | ATD | VectorNumber_Vatd1 | ATD1SC:CCF | ATD1SC:ATDIE |
24 | 0xFFCE | I2C | VectorNumber_Viic | IIC1S:IICIF | IIC1C:IICIE |
25 | 0xFFCC | RTI | VectorNumber_Vrti | SRTISC:RTIF | SRTISC:RTIE |
26 | 0xFFCA | Не используется | — | — | — |
27 | 0xFFC8 | Не используется | — | — | — |
28 | 0xFFC6 | Не используется | — | — | — |
29 | 0xFFC4 | Не используется | — | — | — |
30 | 0xFFC2 | Не используется | — | — | — |
31 | 0xFFC0 | Не используется | — | — | — |
Таблица2.4. Вектора прерываний для МК серии QD
Номер вектора | Адрес | Источник запроса | Имя вектора в C | Флаг запроса | Бит маски |
---|---|---|---|---|---|
0 | 0xFFFE | RESET | VectorNumber_Vreset | — | — |
1 | 0xFFFC | SWI | VectorNumber_Vswi | — | — |
2 | 0xFFFA | LVD | VectorNumber_Vlvd | SPMSC1:LVDF | SPMSC1:LVDIE |
3 | 0xFFF8 | IRQ | VectorNumber_Virq | IRQSC:IRQF | IRQSC:IRQIE |
4 | 0xFFF6 | Не используется | — | — | — |
5 | 0xFFF4 | TPM1 канал 0 | VectorNumber_Vtpm1ch0 | TMP1C0SC:CH0F | TMP1C0SC:CH0IE |
6 | 0xFFF2 | TPM1 канал 1 | VectorNumber_Vtpm1ch1 | TMP1C1SC:CH1F | TMP1C1SC:CH1IE |
7 | 0xFFF0 | TPM1 переполнение | VectorNumber_Vtpm1ovf | TMP1SC:TOF | TMP2C0SC:CH0IE |
8 | 0xFFEE | TPM2 канал 0 | VectorNumber_Vtpm2ch0 | TMP2C0SC:CH0F | TMP1SC:TOIE |
9 | 0xFFEC | Не используется | — | — | — |
10 | 0xFFEA | TPM2 переполнение | VectorNumber_Vtpm2ovf | TPM2SC:TOF | TPM2SC:TOIE |
11 | 0xFFE8 | Не используется | — | — | — |
12 | 0xFFE6 | Не используется | — | — | — |
13 | 0xFFE4 | Не используется | — | — | — |
14 | 0xFFE2 | Не используется | — | — | — |
15 | 0xFFE0 | Не используется | — | — | — |
16 | 0xFFDE | Не используется | — | — | — |
17 | 0xFFDC | Не используется | — | — | — |
18 | 0xFFDA | KBI | VectorNumber_Vkeyboard | KBISC:KBF | KBISC:KBIE |
19 | 0xFFD8 | ADC | VectorNymber_Vadc | ADCSC1:COCO | ADCSC1:AIEN |
20 | 0xFFD6 | Не используется | — | — | — |
21 | 0xFFD4 | Не используется | — | — | — |
22 | 0xFFD2 | Не используется | — | — | — |
23 | 0xFFD0 | RTI | VectorNumber_Vrti | SRTISC:RTIF | SRTISC:RTIE |
24 | 0xFFCE | Не используется | — | — | — |
25 | 0xFFCC | Не используется | — | — | — |
26 | 0xFFCA | Не используется | — | — | — |
27 | 0xFFC8 | Не используется | — | — | — |
28 | 0xFFC6 | Не используется | — | — | — |
29 | 0xFFC4 | Не используется | — | — | — |
30 | 0xFFC2 | Не используется | — | — | — |
31 | 0xFFC0 | Не используется | — | — | — |
Таблица2.5. Вектора прерываний для МК серии QG
Номер вектора | Адрес | Источник запроса | Имя вектора в C | Флаг запроса | Бит маски |
---|---|---|---|---|---|
0 | 0xFFFE | RESET | VectorNumber_Vreset | — | — |
1 | 0xFFFC | SWI | VectorNumber_Vswi | — | — |
2 | 0xFFFA | IRQ | VectorNumber_Vlvd | SPMSC1:LVDF | SPMSC1:LVDIE |
3 | 0xFFF8 | LVD | VectorNumber_Virq | IRQSC:IRQF | IRQSC:IRQIE |
4 | 0xFFF6 | Не используется | — | — | — |
5 | 0xFFF4 | TPMканал 0 | VectorNumber_Vtpm1ch0 | TMP1C0SC:CH0F | TMP1C0SC:CH0IE |
6 | 0xFFF2 | TPM канал 1 | VectorNumber_Vtpm1ch1 | TMP1C1SC:CH1F | TMP1C1SC:CH1IE |
7 | 0xFFF0 | TPM переполнение | VectorNumber_Vtpm1ovf | TMP1SC:TOF | TMP2C0SC:CH0IE |
8 | 0xFFEE | Не используется | — | — | — |
9 | 0xFFEC | Не используется | — | — | — |
10 | 0xFFEA | Не используется | — | — | — |
11 | 0xFFE8 | Не используется | — | — | — |
12 | 0xFFE6 | MTIM переполнение | VectorNumber_Vmtim | MTIMSC:TOF | MTIMSC:TOIE |
13 | 0xFFE4 | SPI | VectorNumber_Vspi | SPIS:SPRF SPIS:MODF SPIS:SPTEF | SPIC1:SPIE SPIC1:SPIE SPIC1:SPTIE |
14 | 0xFFE2 | SCI ошибка | VectorNumber_Vscierr | SCIS1:OR SCIS1:NF SCIS1:FE SCIS1:PF | SCIC3:ORIE SCIC3:NFIE SCIC3:FEIE SCIC3:PFIE |
15 | 0xFFE0 | SCI RX | VectorNumber_Vscirx | SCIS1:IDLE SCIS1:RDRF | SCIC2:ILIE SCIC2:RIE |
16 | 0xFFDE | SCI TX | VectorNumber_Vscitx | SCIS1:TDRE SCIS1:TC | SCIC2:TIE SCIC2:TCIE |
17 | 0xFFDC | I2C | VectorNumber_Viic | IICS:IICIF | IICC:IICIE |
18 | 0xFFDA | KBI | VectorNumber_Vkeyboard | KBISC:KBF | KBISC:KBIE |
19 | 0xFFD8 | ADC | VectorNymber_Vadc | ADCSC1:COCO | ADCSC1:AIEN |
20 | 0xFFD6 | ACMP | VectorNymber_Vacmp | ACMPSC:ACF | ACMPSC:ACIE |
21 | 0xFFD4 | Не используется | — | — | — |
22 | 0xFFD2 | Не используется | — | — | — |
23 | 0xFFD0 | RTI | VectorNumber_Vrti | SRTISC:RTIF | SRTISC:RTIE |
24 | 0xFFCE | Не используется | — | — | — |
25 | 0xFFCC | Не используется | — | — | — |
26 | 0xFFCA | Не используется | — | — | — |
27 | 0xFFC8 | Не используется | — | — | — |
28 | 0xFFC6 | Не используется | — | — | — |
29 | 0xFFC4 | Не используется | — | — | — |
30 | 0xFFC2 | Не используется | — | — | — |
31 | 0xFFC0 | Не используется | — | — | — |
Таблица2.6. Вектора прерываний для МК серии QE
Номер вектора | Адрес | Источник запроса | Имя вектора в C | Флаг запроса | Бит маски |
---|---|---|---|---|---|
0 | 0xFFFE | RESET | VectorNumber_Vreset | — | — |
1 | 0xFFFC | SWI | VectorNumber_Vswi | — | — |
2 | 0xFFFA | IRQ | VectorNumber_Virq | IRQSC:IRQF | IRQSC:IRQIE |
3 | 0xFFF8 | LVD | VectorNumber_Vlvd | SPMSC1:LVDF | SPMSC1:LVDIE |
4 | 0xFFF6 | TMP1 канал 0 | VectorNumber_Vtpm1ch0 | TPM1C0SC:CH0F | TPM1C0SC:CH0IE |
5 | 0xFFF4 | TPM1 канал 1 | VectorNumber_Vtpm1ch1 | TPM1C1SC:CH1F | TPM1C1SC:CH1IE |
6 | 0xFFF2 | TPM1 канал 2 | VectorNumber_Vtpm1ch2 | TPM1C2SC:CH2F | TPM1C2SC:CH2IE |
7 | 0xFFF0 | TPM1 переполнение | VectorNumber_Vtpm1ovf | TPM1SC:TOF | TPM1SC:TOIE |
8 | 0xFFEE | TPM2 канал 0 | VectorNumber_Vtpm2ch0 | TPM2C0SC:CH0F | TPM2C0SC:CH0IE |
9 | 0xFFEC | TPM2 канал 1 | VectorNumber_Vtpm2ch1 | TPM1C4SC:CH4F | TPM1C4SC:CH4IE |
10 | 0xFFEA | TPM2 канал 2 | VectorNumber_Vtpm2ch2 | TPM1C5SC:CH5F | TPM1C5SC:CH5IE |
11 | 0xFFE8 | TPM2 переполнение | VectorNumber_Vtpm2ovf | TPM1SC:TOF | TPM1SC:TOIE |
12 | 0xFFE6 | SPI2 | VectorNumber_Vspi2 | SPI2S:SPRF SPI2S:MODF SPI2S:SPTEF | SPI2C1:SPIE SPI2C1:SPIE SPI2C1:SPTIE |
13 | 0xFFE4 | SPI1 | VectorNumber_Vspi1 | SP1IS:SPRF SPI1S:MODF SPI1S:SPTEF | SPI1C1:SPIE SPI1C1:SPIE SPI1C1:SPTIE |
14 | 0xFFE2 | SCI1 ошибка | VectorNumber_Vsci1err | SCI1S1:OR SCI1S1:NF SCI1S1:FE SCI1S1:PF | SCI1C3:ORIE SCI1C3:NFIE SCI1C3:FEIE SCI1C3:PFIE |
15 | 0xFFE0 | SCI1 RX | VectorNumber_Vsci1rx | SPI2S:SPRF SPI2S:MODF SPI2S:SPTEF | SPI2C1:SPIE SPI2C1:SPIE SPI2C1:SPTIE |
16 | 0xFFDE | SCI1 TX | VectorNumber_Vsci1tx | SCI1S1:TDRE SCI1S1:TC | SCI1C2:TIE SCI1C2:TCIE |
17 | 0xFFDC | I2C | VectorNumber_Viicx | IICS:IICIF | IICC:IICIE |
18 | 0xFFDA | KBI | VectorNumber_Vkeyboard | KBISC:KBF | KBISC:KBIE |
19 | 0xFFD8 | ADC | VectorNumber_Vadc | ADCSC1:COCO | ADCSC1:AIEN |
20 | 0xFFD6 | ACMP | VectorNumber_Vsci2rx | ACMPSC:ACF | ACMPSC:ACIE |
21 | 0xFFD4 | SCI2 ошибка | VectorNumber_Vsci2err | SCI2S1:OR SCI2S1:NF SCI2S1:FE SCI2S1:PF | SCI2C3:ORIE SCI2C3:NFIE SCI2C3:FEIE SCI2C3:PFIE |
22 | 0xFFD2 | SCI2 RX | VectorNumber_Vski2rx | SCI2S1:IDLE SCI2S1:RDRF SCI2S2:LBKIF SCI2S2:RXEDGIF | SCI2C2:ILIE SCI2C2:RIE SCI2BDH:LBKIE SCI2BDH:RXEDGIE |
23 | 0xFFD0 | SCI2 TX | VectorNumber_Vsci2tx | SCI2S1:TDRE SCI2S1:TC | SCI2C2:TIE SCI2C2:TCIE |
24 | 0xFFCE | RTC | VectorNumber_Vrtc | RTCSC:RTIF | RTCSC:RTIE |
25 | 0xFFCC | TPM3 канал 0 | VectorNumber_Vtpm3ch0 | TPM3C0SC:CH0F | TPM3C0SC:CH0IE |
26 | 0xFFCA | TPM3 канал 1 | VectorNumber_Vtpm3ch1 | TPM3C1SC:CH1F | TPM3C1SC:CH1IE |
27 | 0xFFC8 | TPM3 канал 2 | VectorNumber_Vtpm3ch2 | TPM3C2SC:CH2F | TPM3C2SC:CH2IE |
28 | 0xFFC6 | TPM3 канал 3 | VectorNumber_Vtpm3ch3 | TPM3C3SC:CH3F | TPM3C3SC:CH3IE |
29 | 0xFFC4 | TPM3 канал 4 | VectorNumber_Vtpm3ch4 | TPM3C4SC:CH4F | TPM3C4SC:CH4IE |
30 | 0xFFC2 | TPM3 канал 5 | VectorNumber_Vtpm3ch5 | TPM3C5SC:CH5F | TPM3C5SC:CH5IE |
31 | 0xFFC0 | TPM3 переполнение | VectorNumber_Vtpm3ovf | TPM3SC:TOF | TPM3SC:TOIE |
2.1.7.1. Время перехода на подпрограмму прерывания
Время перехода на подпрограмму прерывания — это временной интервал, который отсчитывается с момента установки флага запроса до момента начала выполнения первой команды подпрограммы прерывания.
Этот временной интервал состоит из времени, необходимого для завершения выполнения текущей команды, определения наличия прерывания, записи регистров PC, X, A и CCR в стек, определения источника прерывания, загрузки вектора этого источника в PC и выборки первой команды подпрограммы прерывания из памяти.
Для МК HCS08 минимальное время перехода на подпрограмму прерывания составляет 11 периодов частоты внутренней шины BUSCLK (соответствует времени вызова команды SWI), а максимальное — 22 периода BUSCLK (если прерывание возникло в момент вызова команды SWI).
Электронные компоненты Freescale >>>
Подробнее о компании Freescale >>>