8 Przerwania 2015 www

background image

1

Podstawy techniki

mikroprocesorowej

ETEW006

Przerwania

Andrzej Stępień

Katedra Metrologii Elektronicznej i Fotonicznej

Żądanie obsługi ─

r

eakcja procesora

(Polling versus Interrupts)

Programowa reakcja procesora

- wykonywanie stałych p

ę

tli

testuj

ą

cych, cyklicznych procedur testuj

ą

cych (

Polling

):

znaczne obci

ąż

enie procesora, spadek efektywnego wykorzystania

czasu pracy procesora

brak natychmiastowej reakcji procesora wskutek zdeterminowanej
przez program kolejno

ś

ci wykonywanych procedur testuj

ą

cych

Sprz

ę

towa reakcja procesora

- wykorzystanie systemu przerwa

ń

(

Interrupt

):

brak obci

ąż

enia procesora je

ś

li brak

żą

dania obsługi przerwania

(Interrupt Request)

natychmiastowa reakcja procesora po spełnieniu pewnych
warunków, dodatkowych warunków; rozpocz

ę

cie wykonywania

procedury obsługi przerwania (podobie

ń

stwo do wywołania

podprogramu)

Obsługa przerwań

obsługa przerwa

ń

(interrupt handler), procedury obsługi przerwa

ń

(Interrupt Service Routine) jest podprogramem wywoływanym lub
przyj

ę

tym

żą

daniem pochodz

ą

cym od:

systemu operacyjnego (operating system software interrupt)

układów peryferyjnych mikrokontrolera (device driver interrupt)

obiektów (sygnałów) zewn

ę

trznych (external interrupt)

obsługa przerwa

ń

posiada wiele funkcji, które ró

ż

ni

ą

si

ę

w zale

ż

no

ś

ci

od przyczyny (

ź

ródła) przerwania i szybko

ś

ci, przy której obsługa

przerwa

ń

ko

ń

czy swoje zadanie

Przerwanie

(Interrupt)

[1#2]

doko

ń

czenie wykonywanej przez procesor instrukcji (przerwanie

zło

ż

onej instrukcji

(load-multiple or store-multiple)

w Cortex-M)

zawieszenie (przerwanie) wykonywanego programu, najcz

ęś

ciej po

spełnieniu dodatkowych warunków, zapami

ę

tanie wszystkich danych

niezb

ę

dnych do kontynuowania zawieszonego programu

wykonanie podprogramu (Interrupt Service Routine) obsługi
zdarzenia (sygnału)

żą

daj

ą

cego (wymagaj

ą

cego) obsługi

kontynuacja zawieszonego programu

program

ISR

żą

danie przerwania

zachowanie

stanu procesora

odtworzenie

stanu procesora

t

jednopoziomowa

obsługa

przerwa

ń

Przerwanie

(Interrupt)

[2#2]

program

ISR

żą

danie przerwania

zachowanie

stanu procesora

odtworzenie

stanu procesora

t

Stan procesora

:

rejestry robocze (R0, R1, … )

rejestr statusowy (PSW, ... )

licznik rozkazów (PC zawiera adres instrukcji, która byłaby wykonana,
gdyby nie wyst

ą

piło przerwanie; problem przetwarzania potokowego)

inne rejestry wa

ż

ne dla wykonywanego programu

jednopoziomowa

obsługa

przerwa

ń

USB
Przerwaniowy transfer danych

(Polling)

stosowany przy transmisji danych do/z urz

ą

dze

ń

współpracuj

ą

cych z

człowiekiem (human-perceptible)

nadawanie/odbiór danych do/z urz

ą

dze

ń

wymagaj

ą

cych periodycznej

obsługi

gwarancja minimalnego czasu mi

ę

dzy transmisjami, np. 1 ms w trybie

szybkim (Full Speed transmission)

w przypadku bł

ę

dów transmisji, powtórzona transmisja w nast

ę

pnym

wyznaczonym okresie

background image

2

Typy przerwań

sprz

ę

towe zerowanie procesora

(

Hardware Reset

) – rozpocz

ę

cie

wykonywania procedury bez warunków wst

ę

pnych (

zawsze

), zmiana

warto

ś

ci niektórych rejestrów

przerwanie

sprz

ę

towe

niemaskowalne

(

N

on -

M

askable

I

nterrupt)

rozpocz

ę

cie wykonywania obsługi przerwania bez warunków wst

ę

pnych

(

zawsze

)

przerwanie

sprz

ę

towe

maskowalne

(

M

askable

I

nterrupt)

rozpocz

ę

cie wykonywania procedury obsługi przerwania zale

ż

nie od

spełnienia okre

ś

lonych

warunków wst

ę

pnych

; programowe blokowanie /

odblokowanie obsługi przerwa

ń

(Enable / Disable Interrupt)

przerwanie programowe

(

S

oft

W

are

I

nterrupt)

programowe wywołanie obsługi przerwania

operacja pułapki

(

Trap

), rodzaj wyj

ą

tku

inicjowana pojawieniem si

ę

ę

du, np. próba dzielenia przez zero

przerwanie fałszywe

(

spurious

, pozorne, nieprawdziwe, fałszywe, bł

ę

dne,

nieoczekiwane) efekt zakłóce

ń

lub bł

ę

dów konstrukcyjnych

Typy przerwań
Zerowanie procesora

(Hardware Reset)

sprz

ę

towe zerowanie procesora

(

Hardware Reset

) – rozpocz

ę

cie

wykonywania procedury bez warunków wst

ę

pnych (

zawsze

), zmiana

warto

ś

ci niektórych rejestrów

przerwanie sprz

ę

towe niemaskowalne (Non - Maskable Interrupt) rozpocz

ę

cie

wykonywania obsługi przerwania bez warunków wst

ę

pnych (zawsze)

przerwanie sprz

ę

towe maskowalne (Maskable Interrupt)

rozpocz

ę

cie wykonywania procedury obsługi przerwania zale

ż

nie od spełnienia

okre

ś

lonych warunków wst

ę

pnych; programowe blokowanie / odblokowanie obsługi

przerwa

ń

(Enable / Disable Interrupt)

przerwanie programowe (SoftWare Interrupt)
programowe wywołanie obsługi przerwania

operacja pułapki (Trap), rodzaj wyj

ą

tku

inicjowana pojawieniem si

ę

ę

du, np. próba dzielenia przez zero

przerwanie fałszywe (spurious, pozorne, nieprawdziwe, fałszywe, bł

ę

dne,

nieoczekiwane) efekt zakłóce

ń

lub bł

ę

dów konstrukcyjnych

zerowanie / ustawienie licznika rozkazów

blokada przerwa

ń

maskowalnych

zerowanie / ustawienie rejestrów specjalnych mikrokontrolera

wył

ą

czenie trybu u

ż

ytkownika (przy ró

ż

nych trybach pracy)

Typy przerwań
Niemaskowalne

(Non-Maskable Interrupt)

sprz

ę

towe zerowanie procesora (Hardware Reset) – rozpocz

ę

cie wykonywania

procedury bez warunków wst

ę

pnych (zawsze), zmiana warto

ś

ci niektórych rejestrów

przerwanie

sprz

ę

towe

niemaskowalne

(

N

on -

M

askable

I

nterrupt)

rozpocz

ę

cie wykonywania obsługi przerwania bez warunków wst

ę

pnych

(

zawsze

)

przerwanie sprz

ę

towe maskowalne (Maskable Interrupt)

rozpocz

ę

cie wykonywania procedury obsługi przerwania zale

ż

nie od spełnienia

okre

ś

lonych warunków wst

ę

pnych; programowe blokowanie / odblokowanie obsługi

przerwa

ń

(Enable / Disable Interrupt)

przerwanie programowe (SoftWare Interrupt)
programowe wywołanie obsługi przerwania

operacja pułapki (Trap)
inicjowana pojawieniem si

ę

ę

du, np. próba dzielenia przez zero

przerwanie fałszywe (spurious, pozorne, nieprawdziwe, fałszywe, bł

ę

dne)

efekt zakłóce

ń

lub bł

ę

dów konstrukcyjnych

stosowane przy raportowaniu krytycznych bł

ę

dów (np. bł

ę

dy działania

chipsetów, bł

ę

dne działanie pami

ę

ci systemu, bł

ę

dy magistral),

debugowaniu (obsługa przerwania w specjalnym trybie monitora w celu
diagnozy systemu),
profilowania kodu (software profiling) pod k

ą

tem

optymalizacji cz

ęś

ci programu (zwi

ę

kszenie szybko

ś

ci wykonywania kodu,

zmniejszenie zapotrzebowania na pami

ęć

, cz

ę

sto

ś

ci wywołania funkcji oraz

czasów ich wykonania) itp.

w mikrokontrolerach do sygnalizacji spadku napi

ę

cia zasilaj

ą

cego (power

down detection, drop of voltage, ..), bł

ę

dnego działania generatora

taktuj

ą

cego, problemów z pami

ę

ci

ą

przerwanie, którego procesor nie mo

ż

e zignorowa

ć

(zamaskowa

ć

)

o najwy

ż

szym priorytecie, nie s

ą

zagnie

ż

d

ż

one

Typy przerwań
Maskowalne

(Maskable Interrupt)

sprz

ę

towe zerowanie procesora (Hardware Reset) – rozpocz

ę

cie wykonywania

procedury bez warunków wst

ę

pnych (zawsze), zmiana warto

ś

ci niektórych rejestrów

przerwanie sprz

ę

towe niemaskowalne (Non - Maskable Interrupt) rozpocz

ę

cie

wykonywania obsługi przerwania bez warunków wst

ę

pnych (zawsze)

przerwanie

sprz

ę

towe

maskowalne

(

M

askable

I

nterrupt)

rozpocz

ę

cie wykonywania procedury obsługi przerwania zale

ż

nie od

spełnienia okre

ś

lonych

warunków wst

ę

pnych

; programowe blokowanie /

odblokowanie obsługi przerwa

ń

(Enable / Disable Interrupt)

przerwanie programowe (SoftWare Interrupt)
programowe wywołanie obsługi przerwania

operacja pułapki (Trap)
inicjowana pojawieniem si

ę

ę

du, np. próba dzielenia przez zero

przerwanie fałszywe (spurious, pozorne, nieprawdziwe, fałszywe, bł

ę

dne) ,

nieoczekiwane efekt zakłóce

ń

lub bł

ę

dów konstrukcyjnych

przewa

ż

nie blokowane/odblokowywane (enable/disable) przez:

jeden ogólny (globalny) znacznik dla wszystkich przerwa

ń

indywidualne znaczniki dla ka

ż

dego

ź

ródła przerwania

żą

danie przerwania mo

ż

e by

ć

pami

ę

tane w czasie jego

zablokowania

przerwanie przyj

ę

te (obsługiwane) po spełnieniu pewnych

(dodatkowych) warunków (zamaskowane)

Typy przerwań
Programowe

(SWI)

sprz

ę

towe zerowanie procesora (Hardware Reset) – rozpocz

ę

cie wykonywania

procedury bez warunków wst

ę

pnych (zawsze), zmiana warto

ś

ci niektórych rejestrów

przerwanie sprz

ę

towe niemaskowalne (Non - Maskable Interrupt) rozpocz

ę

cie

wykonywania obsługi przerwania bez warunków wst

ę

pnych (zawsze)

przerwanie sprz

ę

towe maskowalne (Maskable Interrupt)

rozpocz

ę

cie wykonywania procedury obsługi przerwania zale

ż

nie od spełnienia

okre

ś

lonych warunków wst

ę

pnych; programowe blokowanie / odblokowanie obsługi

przerwa

ń

(Enable / Disable Interrupt)

przerwanie programowe

(

S

oft

W

are

I

nterrupt)

programowe wywołanie obsługi przerwania

operacja pułapki (Trap)
inicjowana pojawieniem si

ę

ę

du, np. próba dzielenia przez zero

przerwanie fałszywe (spurious, pozorne, nieprawdziwe, fałszywe, bł

ę

dne,

nieoczekiwane) efekt zakłóce

ń

lub bł

ę

dów konstrukcyjnych

wywoływane z kodu programu

wykorzystywane do komunikacji z j

ą

drem systemu operacyjnego

(firmware, BIOS, DOS, Windows, UNIX, Linux, Android, ..),
wywołania funkcji systemowych (np. wy

ś

wietlanie znaków, wysłanie

znaków ł

ą

czem szergowym, drukowanie, odczyt kodu naci

ś

ni

ę

tego

klawisza, obsługi pami

ę

ci masowej, ..)

najcz

ęś

ciej parametry wywoływanych funkcji s

ą

przenoszone przez

rejestry ustawiane przez program wywołuj

ą

cy

Wybrane SWI w x86

Nr

Typ przerwania

Nr

Typ przerwania

00h

Dzielenie przez zero

19h

Gor

ą

cy restart systemu

01h

Praca krokowa

1Ah

Obsługa drukarki

02h

Przerwanie niemaskowalne

1Bh

CTRL + BREAK

03h

Pułapka (Breakpoint)

1Ch

Przerwanie zegarowe u

ż

ytkownika

04h

Nadmiar

1Dh

Tabela trybów wy

ś

wietlania

05h

Wydruk zawarto

ś

ci ekranu

1Fh

Tablica wzorców znaków

08h

Przerwanie zegara (RTC)

20h

Zako

ń

czenie programu

09h

Przerwanie klawiatury

21h

Funkcje MS-DOS

0Eh

Przerwanie kontrolera dysków

22h

Zako

ń

czenie programu

10h

Obsługa monitora

23h

CTRL + C (CTRL + BREAK)

11h

Konfiguracja komputera

24h

ą

d krytyczny urz

ą

dzenia

12h

Rozmiar pami

ę

ci

25h

Czytanie sektora dyskowego

13h

Obsługa dysków

26h

Pisanie sektora dyskowego

14h

Obsługa zł

ą

cza szeregowego

................................................................

15h

Dodatkowe funkcje AT

2Fh

Obsługa równoczesnych procesów

16h

Obsługa klawiatury

33h

Obsługa myszy

17h

Obsługa drukarki

41h

Tablica parametrów

18h

Uruchomienie BASIC-a z ROM

46h

dysku twardego 0/1

background image

3

Typy przerwań
Trap

sprz

ę

towe zerowanie procesora (Hardware Reset) – rozpocz

ę

cie wykonywania

procedury bez warunków wst

ę

pnych (zawsze), zmiana warto

ś

ci niektórych rejestrów

przerwanie sprz

ę

towe niemaskowalne (Non - Maskable Interrupt) rozpocz

ę

cie

wykonywania obsługi przerwania bez warunków wst

ę

pnych (zawsze)

przerwanie sprz

ę

towe maskowalne (Maskable Interrupt)

rozpocz

ę

cie wykonywania procedury obsługi przerwania zale

ż

nie od spełnienia

okre

ś

lonych warunków wst

ę

pnych; programowe blokowanie / odblokowanie obsługi

przerwa

ń

(Enable / Disable Interrupt)

przerwanie programowe (SoftWare Interrupt)
programowe wywołanie obsługi przerwania

operacja pułapki

(

Trap

), rodzaj wyj

ą

tku

inicjowana pojawieniem si

ę

ę

du, np. próba dzielenia przez zero

przerwanie fałszywe (spurious, pozorne, nieprawdziwe, fałszywe, bł

ę

dne,

nieoczekiwane) efekt zakłóce

ń

lub bł

ę

dów konstrukcyjnych

wyj

ą

tek (exception, np. systemie Linux) spowodowany np.

przez dzielenie przez zero lub nieprawidłowy dost

ę

p do pami

ę

ci

sposób wywołania procedury j

ą

dra (wywołanie systemowe) ze

wzgl

ę

du na wy

ż

szy priorytet ni

ż

kod u

ż

ytkownika

Typy przerwań
Spurious

sprz

ę

towe zerowanie procesora (Hardware Reset) – rozpocz

ę

cie wykonywania

procedury bez warunków wst

ę

pnych (zawsze), zmiana warto

ś

ci niektórych rejestrów

przerwanie sprz

ę

towe niemaskowalne (Non - Maskable Interrupt) rozpocz

ę

cie

wykonywania obsługi przerwania bez warunków wst

ę

pnych (zawsze)

przerwanie sprz

ę

towe maskowalne (Maskable Interrupt)

rozpocz

ę

cie wykonywania procedury obsługi przerwania zale

ż

nie od spełnienia

okre

ś

lonych warunków wst

ę

pnych; programowe blokowanie / odblokowanie obsługi

przerwa

ń

(Enable / Disable Interrupt)

przerwanie programowe (SoftWare Interrupt)
programowe wywołanie obsługi przerwania

operacja pułapki (Trap), rodzaj wyj

ą

tku

inicjowana pojawieniem si

ę

ę

du, np. próba dzielenia przez zero

przerwanie fałszywe

(

spurious

, pozorne, nieprawdziwe, fałszywe, bł

ę

dne,

nieoczekiwane) – efekt zakłóce

ń

lub bł

ę

dów konstrukcyjnych

w

ARM7 wynik braku wła

ś

ciwej synchronizacji kontrolera przerwa

ń

(VIC)

z rdzeniem procesora

(core) – asynchronicznej obsługi przerwa

ń

;

równie

ż

efekt przetwarzania potokowego

w procesorach

LPC2000

:

1.

kontroler przerwa

ń

(VIC) generuje przerwanie dla rdzenia (core)

2.

rdze

ń

(core) zapami

ę

tuje stan

żą

dania przerwania

3.

trwa przetwarzanie potokowe, zwykle kilka cykli maszynowych

4.

rdze

ń

(core) pobiera adres procedury obsługi oczekuj

ą

cego przerwania

je

ś

li znika przerwanie w trakcie przetwarzania (krok 3), generowane jest

nieistniej

ą

ce przerwanie

UM10120.LPC2131/2/4/6/8 User manual.

NXP, Rev. 4 — 23 April 2012, p.75 - 78

AN10414. Handling of spurious interrupts in the LPC2000.

Application note. NXP, Rev. 01 — 4 January 2006

Identyfikacja urządzenia

Programowa / sprz

ę

towa identyfikacja urz

ą

dzenia / sygnału

zgłaszaj

ą

cego obsług

ę

/przerwanie

:

badanie

obiegiem

realizowane programowo w procedurach testuj

ą

cych

metoda

ła

ń

cuchowa

:

– urz

ą

dzenia doł

ą

czone do procesora w kolejno

ś

ci wa

ż

no

ś

ci

(pierwsze

ń

stwa) obsługi przerwania

– sygnał potwierdzenia przyj

ę

cia przerwania jest bramkowany w

urz

ą

dzeniu zgłaszaj

ą

cym przerwanie, które podaje swój numer

identyfikacyjny szyn

ą

danych

metoda

wektorowa

wygenerowanie adresu podprogramu obsługi przerwania od
urz

ą

dzenia zgłaszaj

ą

cego przerwanie

Adresy procedur obsługi przerwań

Adres pocz

ą

tkowy procedury obsługi przerwania:

dostarczany przez urz

ą

dzenie

zewn

ę

trzne, to samo, które wywołało

przerwanie; po akceptacji przerwania przesyłanie szyn

ą

danych

adresu pocz

ą

tku obsługi przerwania

w

tablicy wektorów przerwa

ń

(Cortex-Mx):

w tablicy wył

ą

cznie 4

N bajtów adresów przerwa

ń

(32 bitowa szyna

adresowa); pozycja adresu zale

ż

na od rodzaju przerwania

stałe adresy ustalone przez producenta procesora, np. co 4 lub co 8
bajtów (3, 0Bh, 13h itd.)

PICmicro MID-RANGE MCU FAMILY

Once in the interrupt service routine the source(s) of
the interrupt can be determined by

polling the

interrupt flag bits

. Generally the interrupt flag bit(s)

must be cleared in software before re-enabling the
global interrupt to avoid recursive interrupts.

When an interrupt is responded to, the

Global

Interrupt Enable

bit (GIE) bit is cleared to disable

any further interrupt, the return address is pushed
into the stack and the PC is loaded with 0004h.

GIE

Interrupt to CPU
clear GIE bit
addr = 0004h

PICmicro MID-RANGE MCU FAMILY.

Microchip Technology, December 1997

Cortex-M0

(LPC1114)

Exception & Interrupt

Sources

[1#2]

StartUp_LPC11xx.s

UM10398. LPC111x/LPC11Cxx User manual.

NXP, Rev. 12.3 — 10 June 2014, p.466

address

IRQ number

Exception

number

R

e

s

e

rv

e

d

R

e

s

e

rv

e

d

; Vector Table Mapped to Address 0 at Reset

AREA

RESET, DATA, READONLY

EXPORT

__Vectors

__Vectors

DCD

__initial_sp

;

Top of Stack

0x0000 0000

DCD

Reset_Handler

;

1

/

Reset Handler

0x0000 0004

DCD

NMI_Handler

;

2

/

–14

NMI Handler

0x0000 0008

DCD

HardFault_Handler ;

3

/

–13

Hard Fault Handler

0x0000 000C

DCD

MemManage_Handler

;

4

/

–12

MPU Fault Handler

0x0000 0010

DCD

0

;

5

/

–11

Reserved

0x0000 0014

DCD

0

;

6

/

–10

Reserved

0x0000 0018

DCD

0

;

7

/

–9

Reserved

0x0000 001C

DCD

0

;

8

/

–8

Reserved

0x0000 0020

DCD

0

;

9

/

–7

Reserved

0x0000 0024

DCD

0

;

10

/

–6

Reserved

0x0000 0028

DCD

SVC_Handler

;

11

/

–5

SVCall Handler

0x0000 002C

DCD

DebugMon_Handler

;

12

/

–4

Debug Monitor Handler

0x0000 0030

DCD

0

;

13

/

–3

Reserved

0x0000 0034

DCD

PendSV_Handler

;

14

/

–2

PendSV Handler

0x0000 0038

DCD

SysTick_Handler

;

15

/

–1

SysTick Handler

0x0000 003C

DCD

IRQ_Handler

;

16

/

+0

IRQ Handler

0x0000 0040

background image

4

Cortex-M0

(LPC1114)

Interrupt

Sources

StartUp_LPC11xx.s

www.Keil.com

; External Interrupts

DCD WAKEUP_IRQHandler

; 16+ 0: Wakeup PIO0.0

0x0000 0040

DCD WAKEUP_IRQHandler

; 16+ 1: Wakeup PIO0.1

0x0000 0044

DCD WAKEUP_IRQHandler

; 16+ 2: Wakeup PIO0.2

0x0000 0048

DCD WAKEUP_IRQHandler

; 16+ 3: Wakeup PIO0.3

0x0000 004C

DCD WAKEUP_IRQHandler

; 16+ 4: Wakeup PIO0.4

0x0000 0050

...............................................................................................
DCD WAKEUP_IRQHandler

; 16+12: Wakeup PIO1.0

0x0000 0070

DCD CAN_IRQHandler

; 16+13: CAN

0x0000 0074

DCD SSP1_IRQHandler

; 16+14: SSP1

0x0000 0078

DCD I2C_IRQHandler

; 16+15: I2C

0x0000 007C

DCD TIMER16_0_IRQHandler

; 16+16: 16-bit Counter-Timer 0

0x0000 0080

DCD TIMER16_1_IRQHandler

; 16+17: 16-bit Counter-Timer 1

0x0000 0084

DCD TIMER32_0_IRQHandler

; 16+18: 32-bit Counter-Timer 0

0x0000 0088

DCD TIMER32_1_IRQHandler

; 16+19: 32-bit Counter-Timer 1

0x0000 008C

DCD SSP0_IRQHandler

; 16+20: SSP0

0x0000 0090

DCD UART_IRQHandler

; 16+21: UART

0x0000 0094

DCD USB_IRQHandler

; 16+22: USB IRQ

0x0000 0098

DCD USB_FIQHandler

; 16+24: USB FIQ

0x0000 009C

DCD ADC_IRQHandler

; 16+24: A/D Converter

0x0000 00A0

DCD WDT_IRQHandler

; 16+25: Watchdog Timer

0x0000 00A4

DCD BOD_IRQHandler

; 16+26: Brown Out Detect

0x0000 00A8

DCD FMC_IRQHandler

; 16+27: Flash Memory Ctrl

0x0000 00AC

DCD PIOINT3_IRQHandler

; 16+28: PIO INT3

0x0000 00B0

DCD PIOINT2_IRQHandler

; 16+29: PIO INT2

0x0000 00B4

DCD PIOINT1_IRQHandler

; 16+30: PIO INT1

0x0000 00B8

DCD PIOINT0_IRQHandler

; 16+31: PIO INT0

0x0000 00BC

IRQ number

address

startup_stm32f4xx.s

[1#4]

www.keil.com

Keil Software Assembler Reference

; External Interrupts

DCD

WWDG_IRQHandler

; Window WatchDog

DCD

PVD_IRQHandler

; PVD through EXTI Line detection

DCD

TAMP_STAMP_IRQHandler

; Tamper and TimeStamps through
; the EXTI line

DCD

RTC_WKUP_IRQHandler

; RTC Wakeup through the EXTI line

DCD

FLASH_IRQHandler

; FLASH

DCD

RCC_IRQHandler

; RCC

DCD

EXTI0_IRQHandler

; EXTI Line0

DCD

EXTI1_IRQHandler

; EXTI Line1

DCD

EXTI2_IRQHandler

; EXTI Line2

DCD

EXTI3_IRQHandler

; EXTI Line3

DCD

EXTI4_IRQHandler

; EXTI Line4

DCD

DMA1_Stream0_IRQHandler

; DMA1 Stream 0

DCD

DMA1_Stream1_IRQHandler

; DMA1 Stream 1

DCD

DMA1_Stream2_IRQHandler

; DMA1 Stream 2

DCD

DMA1_Stream3_IRQHandler

; DMA1 Stream 3

DCD

DMA1_Stream4_IRQHandler

; DMA1 Stream 4

DCD

DMA1_Stream5_IRQHandler

; DMA1 Stream 5

DCD

DMA1_Stream6_IRQHandler

; DMA1 Stream 6

DCD

ADC_IRQHandler

; ADC1, ADC2 and ADC3s

DCD

CAN1_TX_IRQHandler

; CAN1 TX

DCD

CAN1_RX0_IRQHandler

; CAN1 RX0

DCD

CAN1_RX1_IRQHandler

; CAN1 RX1

DCD

CAN1_SCE_IRQHandler

; CAN1 SCE

S

ta

rt

U

p

_

S

T

M3

2

F

4

x

x

.s

[1

#

4

]

startup_stm32f4xx.s

(Cortex-M4F)

[2#4]

www.keil.com

Keil Software Assembler Reference

DCD

EXTI9_5_IRQHandler

; External Line[9:5]s

DCD

TIM1_BRK_TIM9_IRQHandler

; TIM1 Break and TIM9

DCD

TIM1_UP_TIM10_IRQHandler

; TIM1 Update and TIM10

DCD

TIM1_TRG_COM_TIM11_IRQHandler

; TIM1 Trigger and
; Commutation and TIM11

DCD

TIM1_CC_IRQHandler

; TIM1 Capture Compare

DCD

TIM2_IRQHandler

; TIM2

DCD

TIM3_IRQHandler

; TIM3

DCD

TIM4_IRQHandler

; TIM4

DCD

I2C1_EV_IRQHandler

; I2C1 Event

DCD

I2C1_ER_IRQHandler

; I2C1 Error

DCD

I2C2_EV_IRQHandler

; I2C2 Event

DCD

I2C2_ER_IRQHandler

; I2C2 Error

DCD

SPI1_IRQHandler

; SPI1

DCD

SPI2_IRQHandler

; SPI2

DCD

USART1_IRQHandler

; USART1

DCD

USART2_IRQHandler

; USART2

DCD

USART3_IRQHandler

; USART3

DCD

EXTI15_10_IRQHandler

; External Line[15:10]s

DCD

RTC_Alarm_IRQHandler

; RTC Alarm (A and B) through
; EXTI Line

DCD

OTG_FS_WKUP_IRQHandler

; USB OTG FS Wakeup
; through EXTI line

startup_stm32f4xx.s

(Cortex-M4F)

[3#4]

www.keil.com

Keil Software Assembler Reference

DCD

TIM8_BRK_TIM12_IRQHandler

; TIM8 Break and TIM12

DCD

TIM8_UP_TIM13_IRQHandler

; TIM8 Update and TIM13

DCD

TIM8_TRG_COM_TIM14_IRQHandler

; TIM8 Trigger and
; Commutation and TIM14

DCD

TIM8_CC_IRQHandler

; TIM8 Capture Compare

DCD

DMA1_Stream7_IRQHandler

; DMA1 Stream7

DCD

FSMC_IRQHandler

; FSMC

DCD

SDIO_IRQHandler

; SDIO

DCD

TIM5_IRQHandler

; TIM5

DCD

SPI3_IRQHandler

; SPI3

DCD

UART4_IRQHandler

; UART4

DCD

UART5_IRQHandler

; UART5

DCD

TIM6_DAC_IRQHandler

; TIM6 and DAC1&2 underrun errors

DCD

TIM7_IRQHandler

; TIM7

DCD

DMA2_Stream0_IRQHandler

; DMA2 Stream 0

DCD

DMA2_Stream1_IRQHandler

; DMA2 Stream 1

DCD

DMA2_Stream2_IRQHandler

; DMA2 Stream 2

DCD

DMA2_Stream3_IRQHandler

; DMA2 Stream 3

DCD

DMA2_Stream4_IRQHandler

; DMA2 Stream 4

DCD

ETH_IRQHandler

; Ethernet

DCD

ETH_WKUP_IRQHandler

; Ethernet Wakeup through EXTI line

startup_stm32f4xx.s

(Cortex-M4F)

[4#4]

DCD

CAN2_TX_IRQHandler

; CAN2 TX

DCD

CAN2_RX0_IRQHandler

; CAN2 RX0

DCD

CAN2_RX1_IRQHandler

; CAN2 RX1

DCD

CAN2_SCE_IRQHandler

; CAN2 SCE

DCD

OTG_FS_IRQHandler

; USB OTG FS

DCD

DMA2_Stream5_IRQHandler

; DMA2 Stream 5

DCD

DMA2_Stream6_IRQHandler

; DMA2 Stream 6

DCD

DMA2_Stream7_IRQHandler

; DMA2 Stream 7

DCD

USART6_IRQHandler

; USART6

DCD

I2C3_EV_IRQHandler

; I2C3 event

DCD

I2C3_ER_IRQHandler

; I2C3 error

DCD

OTG_HS_EP1_OUT_IRQHandler

; USB OTG HS End Point 1 Out

DCD

OTG_HS_EP1_IN_IRQHandler

; USB OTG HS End Point 1 In

DCD

OTG_HS_WKUP_IRQHandler

; USB OTG HS Wakeup through EXTI

DCD

OTG_HS_IRQHandler

; USB OTG HS

DCD

DCMI_IRQHandler

; DCMI

DCD

CRYP_IRQHandler

; CRYP crypto

DCD

HASH_RNG_IRQHandler

; Hash and Rng

DCD

FPU_IRQHandler

; FPU

__Vectors_End
__Vectors_Size

EQU

__Vectors_End - __Vectors

www.keil.com

Keil Software Assembler Reference

Jednopoziomowa obsługa przerwań

blokowanie przyj

ę

cia nast

ę

pnego przerwania w przypadku, gdy nie jest

zako

ń

czona obsługa poprzedniego przerwania

wykonanie jednej instrukcji z programu głównego przed rozpocz

ę

ciem

obsługi zgłoszonego (czekaj

ą

cego w kolejce) przerwania

żą

danie

przerwania A

program

ISR

żą

danie

przerwania A

żą

danie przerwania B

żą

danie przerwania C

priorytet przerwania

background image

5

Wielopoziomowa obsługa przerwań
Zagnieżdżenie przerwań

przyporz

ą

dkowanie ró

ż

nych poziomów priorytetów procedurom obsługi

przerwa

ń

, co umo

ż

liwia przerwanie bie

żą

cej procedury przez inn

ą

procedur

ę

o wy

ż

szym priorytecie:

priorytety programowe s

ą

ustalane przez programist

ę

, zwykle od 2 do

16 poziomów priorytetów

priorytety sprz

ę

towe s

ą

ustalane przez producenta procesora

żą

danie

przerwania A

program

ISR

żą

danie

przerwania A

priorytet przerwania

żą

danie przerwania B

żą

danie przerwania C

przerwania zagnie

ż

d

ż

one

(Nesting of Interrupts )

Cortex-Mx
Switching Processor Mode at Interrupt

J. Yiu: The Definitive Guide to the ARM Cortex-M0.

Elsevier Inc. 2011, Fig. 9.6

J. Yiu: The Definitive Guide to the ARM Cortex-M3.

Second Edition. Elsevier Inc. 2010, p.34

Thread mode

(

privileged

)

Main

program

Interrupt

event

Stacking

Interrupt Service

Routine (ISR)

Interrupt

exit

Unstacking

Handler mode

(

privileged

)

Thread mode

(

privileged

)

Thread mode

(

user

)

Main

program

Stacking

Interrupt Service

Routine (ISR)

Unstacking

Handler mode

(

privileged

)

Thread mode

(

user

)

St

V

Interrupt handler

Ust

Interrupt

event

Interrupt

exit

Vector fetch

Cortex-Mx Nested Interrupts

J. Yiu: The Definitive Guide to the ARM Cortex-M3.

Second Edition. Elsevier Inc. 2010, p.151

Exception

status

Interrupt exit

St

V

ISR 1

Ust

V

Thread mode

Main program

Interrupt

2

request

Interrupt

1

request (Low priority)

(High priority)

St

V

ISR 2

ISR 1

Ust

ISR 2

ISR 1

ISR 1

Main stack

(MSP)

Main stack

(MSP)

Main stack

(MSP)

Handler

mode

Handler

mode

Thread mode

Handler

mode

Process stack

(PSP)

Main stack

(MSP)

Process stack

(PSP)

Unstacking

Stacking

Vector fetch

LR = 0xFFFF FFF9

LR = 0xFFFF FFFD

LR = 0xFFFF FFF1

LR = 0xFFFF FFF1

Procedury obsługi przerwań

(Interrupt Handling / Interrupt Service Routine)

podprogram wywoływany po wykryciu

żą

dania obsługi przerwania

kod programu obsługuj

ą

cy zwykle potrzeby układów peryferyjnych

mikrokontrolera lub wykorzystuj

ą

cy cechy systemu operacyjnego

zachowanie stanu procesora, ochrona (przechowanie stanu –
zwykle na stosie)
rejestrów stosowanych w programie obsługi
przerwania je

ś

li brak bankowa rejestrów

pocz

ą

tek procedury w ustalonym adresie (wektorze)

charakterystyczne (typowe dla przerwa

ń

) zako

ń

czenie procedury

Obsługa przerwań

Ochrona

, przechowywanie

stanu rejestrów

procesora po przyj

ę

ciu i

rozpocz

ę

ciu realizacji procedury obsługi przerwania:

przeł

ą

czanie danych

(

data swapping

)

przechowywanie na stosie zawarto

ś

ci rejestrów wykorzystywanych w

obsłudze przerwania

sprz

ę

towe

bez konieczno

ś

ci wprowadzania dodatkowych instrukcji na

pocz

ą

tku i ko

ń

cu programu obsługi przerwania,

np. MSP430, Cortex-Mx

programowe

dodatkowe instrukcje na pocz

ą

tku (PUSH) i ko

ń

cu (POP) programu

obsługi przerwania, np. x86

przeł

ą

czanie kontekstowe

(

context switching

)

wykorzystanie dodatkowych zestawów, banków rejestrów, np. ARM7

Przełączanie danych

MSP430 – sprz

ę

towo/programowe:

PC

,

SR

przesłane na stos

GIE = 0, blokada wszystkich przerwa

ń

(rejestr SR)

PC = adres procedury obsługi z tablicy wektorów przerwa

ń

STM8S – sprz

ę

towe:

PC

,

X

,

Y

,

A

,

CCR

przesłane na stos

I1 = I0 = 1, blokada przerwa

ń

programowych

(rejestr CC)

PC = adres procedury obsługi z tablicy wektorów przerwa

ń

ARM7 IRQ – sprz

ę

towo/programowe:

zmiana trybu pracy na IRQ_mod

(uprzywilejowany)

PC

przesłane do rejestru R14_irq (Link Register)

ochrona rejestru statusowego CPSR_mod

SPSR_irq

bankowanie rejestru statusowego CPSR_irq

I = 1, blokada wszystkich przerwa

ń

IRQ

(rejestr CPSR_irq)

PC = adres procedury obsługi z VICVectAddr

Cortex-M3

– sprz

ę

towe (Nested Interrupt Support):

zmiana trybu na Handler Mode (uprzywilejowany)

PC

,

PSR

,

R0–R3

,

R12

i

LR

przesłane na stos

PC = adres

procedury obsługi z tablicy wektorów przerwa

ń

sprz

ę

towa

mo

ż

liwo

ść

przyjmowania

przerwa

ń

zagnie

ż

d

ż

onych

background image

6

Koniec procedury obsługi przerwania

Ka

ż

dy

podprogram

obsługi przerwania

musi ko

ń

czy

ć

si

ę

wła

ś

ciw

ą

instrukcj

ą

, np.:

MCS 51, MSP430: RETI

PIC17Cxx:

RETFIE

68HC7xx :

RTI

STM8S:

IRET

Cortex-M0/M0+:

BX LR (+Unstacking)

aby

odtworzy

ć

stan rejestrów kontrolera priorytetów przerwa

ń

Czas reakcji

Czas reakcji

(

Response Time

) – czas liczony od momentu przyj

ę

cia zgłoszenia

przerwania do zako

ń

czenia ostatniej wykonywanej instrukcji w przerywanym

programie; czas zale

ż

ny od:

sposobu testowania kolejno

ś

ci zgłoszonych przerwa

ń

,

sposobu maskowania przerwa

ń

, reakcji systemu operacyjnego itp..

liczby cykli maszynowych potrzebnych do zako

ń

czenia bie

żą

cej,

wykonywanej instrukcji

typu wykonywanych instrukcji, np. programowania kontrolera priorytetów
przerwa

ń

.

żą

danie przerwania

(Interrupt Request)

program

ISR

reakcja na przerwanie

(Response Time)

rozpocz

ę

cie

wykonywania ISR

Czas opóźnienia

Czas opó

ź

nienia

(

Latency Time

) – czas liczony od momentu zgłoszenia

przerwania do momentu rozpocz

ę

cia wykonywania podprogramu obsługi

przerwania (ISR); czas zale

ż

ny dodatkowo od:

sposobu wywołania podprogramu obsługi przerwania, szybko

ś

ci

przesłania na stos licznika rozkazów PC,

liczby bajtów innych rejestrów przesyłanych na stos przed
rozpocz

ę

ciem podprogramu obsługi przerwania.

żą

danie przerwania

(Interrupt Request)

program

ISR

reakcja na

żą

danie

obsługi przerwania

opó

ź

nienie

(Latency Time)

PUSH PC

CALL ISR

....

rozpocz

ę

cie

wykonywania ISR

przygotowania

Czas opóźnienia i reakcji

żą

danie przerwania

(Interrupt Request)

program

ISR

reakcja procesora

na

żą

danie procedury

obsługi przerwania

opó

ź

nienie

(Latency Time)

PUSH PC

CALL ISR

....

rozpocz

ę

cie

wykonywania ISR

przygotowanie do

rozpocz

ę

cia ISR

reakcja na przerwanie

(Response Time)

Czas opóźnienia i reakcji

żą

danie przerwania

(Interrupt Request)

program

reakcja procesora na

żą

danie

procedury obsługi przerwania

opó

ź

nienie

(Latency Time)

PUSH PC

CALL ISR

....

rozpocz

ę

cie

wykonywania ISR

przygotowanie do rozpocz

ę

cia ISR

reakcja na przerwanie

(Response Time)

PICmicro MID-RANGE MCU FAMILY. Microchip Technology, December 1997, 33023a.pdf
8.3 Interrupt Latency (p.132)

Interrupt latency

is defined as the time from the

interrupt event

(the interrupt flag bit gets set) to the time that the instruction at
address 0004h

starts execution

(when that interrupt is enabled).

8-bit Microcontrollers. Databook - 1997. Temic Semiconductors, 1997

Response time

... if a request is active and conditions are right for

it to be acknowledged, a hardware subroutine call to the requested
service routine will be the next instruction to be executed
(

polling cycle + long CALL

to interrupt vector address).

ISR

Cortex-M0/M0+
Czas reakcji

Cortex™-M0+. Technical Reference Manual.

ARM DDI 0484C, Revision: r0p1, p.3-10

zastosowanie

zaawansowanych metod obsługi wyj

ą

tków i przerwa

ń

(ARMv6-M Architecture Reference Manual)

minimalizacja opó

ź

nienia w przyjmowaniu przerwania:

przerwanie wykonywania zło

ż

onej, wielokrotnej instrukcji

(load-

multiple / store-multiple instruction) i

rozpocz

ę

cie obsługi oczekuj

ą

cego

przerwania

po powrocie z obsługi przerwania

, jeszcze raz,

od pocz

ą

tku

,

rozpocz

ę

cie wykonywania przerwanej instrukcji

ta

sama zasada

dla

32-cyklowych operacji mno

ż

enia

(programowe

operacje mno

ż

enia)

oprogramowanie nie mo

ż

e u

ż

ywa

ć

zło

ż

onych, wielokrotnych instrukcji je

ś

li

prowadzi to do fałszowania warto

ś

ci zmiennych (niepo

żą

dane skutki uboczne

obsługi przerwa

ń

)

stałe opó

ź

nienie w przyj

ę

ciu przerwania

:

15

cykli (Cortex-M0/M0+) ..

12

cykli (Cortex-M3)

background image

7

Dobre rady

[1#2]

ka

ż

de przerwanie

musi by

ć

ś

wiadomie uaktywnione

, globalnie i

indywidualnie

żą

danie obsługi przerwania nie jest realizowane natychmiast

; czas

opó

ź

nienia zale

ż

y od wykonywanych w danym momencie instrukcji

sygnał wywołuj

ą

cy przerwanie

reaguj

ą

ce na

poziom

musi si

ę

zako

ń

czy

ć

przed zako

ń

czeniem procedury obsługi przerwania

- w

przeciwnym razie przerwanie jest ponownie wywoływane

priorytet

przyjmowanych przerwa

ń

zale

ż

y od:

– konstruktorów mikrokontrolera (struktura ustalona w fazie produkcji)
– programisty (struktura dostosowana do potrzeb aplikacji

• obsługa

przerwa

ń

wielopoziomowych

jest mo

ż

liwa tylko przez

programow

ą

zmian

ę

priorytetów

Dobre rady

[2#2]

ka

ż

dy

program obsługi

przerwania

musi by

ć

zako

ń

czony

specjaln

ą

instrukcj

ą

kolejne

żą

danie

obsługi

przerwania

mog

ą

si

ę

pojawi

ć

po

zako

ń

czeniu obsługi bie

żą

cego przerwania + czas wykonania jednej,

dodatkowej instrukcji

wielopoziomowe, hierarchiczne struktury procedur obsługi

przerwa

ń

stosuj

ą

tylko najlepsi lub szale

ń

cy

Cortex-M0/M0+
Kontroler przerwań

UM10398. LPC11xx User Manual.

NXP, Rev. 12.3 — 10 June 2014, p.69

Zagnie

ż

d

ż

ony wektorowy kontroler przerwa

ń

(NVIC – Nested

Vectored Interrupt Controller) jest

integraln

ą

cz

ęś

ci

ą

rdzenia

(core)

procesorów

ARM Cortex-Mx

Konstrukcja zapewnia

minimalny czas opó

ź

nienia w przyj

ę

ciu

przerwania

(low interrupt latency)

NVIC kontroluje obsług

ę

wyj

ą

tków

(exceptions)

i przerwa

ń

(interrupts)

NVIC posiada

:

32 wektorowe

ź

ródła przerwa

ń

4 programowalne priorytety przerwa

ń

programowe przerwania

(SWI – software interrupt)

Stany wyjątków / przerwań

Stany wyj

ą

tków / przerwa

ń

:

nieaktywny

(inactive) – wyj

ą

tek/przerwanie nieaktywne i

nie oczekuj

ą

ce na obsług

ę

oczekiwania

(pending) – wyj

ą

tek/przerwanie oczekuj

ą

ce na obsług

ę

;

żą

danie obsługi generowane programowo lub przez układy

peryferyjne

aktywny

(active) – wyj

ą

tek/przerwanie w trakcie obsługi (nie zako

ń

czone)

Uwaga: obsługa wyj

ą

tku/przerwania mo

ż

e zosta

ć

przerwana przez inny

wyj

ą

tek/przerwanie o wy

ż

szym priorytecie – oba wyj

ą

tki/przerwania

pozostaj

ą

w trybie aktywnym

aktywny i oczekiwania

(active and pending) – wyj

ą

tek/przerwanie

obsługiwane przez procesor i oczekuj

ą

ce na ponown

ą

obsług

ę

(to

samo

ź

ródło wyj

ą

tku/przerwania)

UM10398. LPC11xx User Manual.

NXP, Rev. 12.3 — 10 June 2014, p.69

PM0223. Programming manual STM32L0 Series Cortex

®

-M0+ programming manual.

STMicroelectronics , DocID025763 Rev 1 , April 2014, p.82

Exception priorities Cortex-M0/M0+

[1#2]

UM10398. LPC111x/LPC11Cxx User manual.

NXP, Rev. 12.3 — 10 June 2014, p.468

address

IRQ number

Exception

number

R

e

s

e

rv

e

d

; Vector Table Mapped to Address 0 at Reset

__Vectors

DCD

__initial_sp

;

Top of Stack

0x0000 0000

DCD

Reset_Handler

;

1

/

Reset Handler

0x0000 0004

DCD

NMI_Handler

;

2

/

–14

NMI Handler

0x0000 0008

DCD

HardFault_Handler ;

3

/

–13

Hard Fault Handler

0x0000 000C

........................................................................................................................

DCD

SVC_Handler

;

11

/

–5

SVCall Handler

0x0000 002C

DCD

DebugMon_Handler

;

12

/

–4

Debug Monitor Handler

0x0000 0030

DCD

0

;

13

/

–3

Reserved

0x0000 0034

DCD

PendSV_Handler

;

14

/

–2

PendSV Handler

0x0000 0038

DCD

SysTick_Handler

;

15

/

–1

SysTick Handler

0x0000 003C

DCD

IRQ_Handler

;

16

/

+0

IRQ Handler

0x0000 0040

All exceptions have an associated priority, with:

a

lower priority value indicating a higher priority

configurable priorities

for all exceptions

except Reset

,

HardFault

, and

NMI

.

If software does not configure any priorities, then all exceptions with a
configurable priority have a priority of 0

Exception
Cortex-M0/M0+

PM0223. Programming manual STM32L0

Series Cortex

®

-M0+ programming manual.

STMicroelectronics , DocID025763 Rev 1 , April 2014, p.26

numer

typ

priorytet

IRQ

wyj

ą

tku

Reset

–3

, najwy

ż

szy

–14

NMI

–2

fixed

–13

HardFault

–1

Reserved

–5

SVCall

configurable

Reserved

–2

PendSV

configurable

–1

SysTick

configurable

0

and

Interrupt

configurable

above

(IRQ)

UM10398. LPC11xx User Manual.

NXP, Rev. 12.3 — 10 June 2014, p.466

Reset

(wywoływany po wł

ą

czeniu

zasilania lub po ’warm reset’)

NMI

(NonMaskable Interrupt –
przerwanie niemaskowalne
generowane programowo lub
przez układy peryferyjne)

HardFault

(bł

ą

d w trakcie standardowej

obsługi wyj

ą

tku lub działania

programu)

SVCall

(supervisor call – po wykonaniu

instrukcji SVC; w

ś

rodowisku

OS, aplikacje mog

ą

korzysta

ć

z

instrukcjami SVC przy dost

ę

pie

do funkcji j

ą

dra OS i

sterowników urz

ą

dze

ń

)

PendSV

(usługa systemowa; w OS – systemie operacyjnym stosowane w

kontek

ś

cie przeł

ą

czania; priorytet ustawiany jako najni

ż

szy, dzi

ę

ki czemu

przerwanie to nigdy nie wywłaszczy innych obsługiwanych przerwa

ń

)

SysTick

(przerwanie generowane przez SysTick po osi

ą

gni

ę

ciu stanu zera)

background image

8

Exception priorities Cortex-M0/M0+

[2#2]

PM0223. Programming manual STM32L0 Series Cortex

®

-M0+ programming manual.

STMicroelectronics , DocID025763 Rev 1 , April 2014, p.27

Exception

IRQ

Exception

Priority

Vector

Activation

number

(1)

number

(1)

type

address

1

-

Reset

–3

, the highest 0x0000 0004 Asynchronous

2

–14

NMI

–2

fixed

0x0000 0008 Asynchronous

3

–13

HardFault

–1

0x0000 000C Synchronous

4-10

Reserved

11

–5

SVCall

configurable

0x0000 002C Synchronous

12-13

Reserved

14

–2

PendSV

configurable

0x0000 0038 Asynchronous

15

–1

SysTick

configurable

0x0000 003C Asynchronous

16 and

0

and

Interrupt

configurable

0x0000 0040 Asynchronous

above

above

(IRQ)

and above

(2)

(1)

To simplify the software layer, the CMSIS only uses IRQ numbers. It uses
negative values for exceptions other than interrupts (IPSR returns the Exception
number)

(2)

Increasing in steps of 4.

UM10398. LPC11xx User Manual.

NXP, Rev. 12.3 — 10 June 2014, p.466

Exception priorities

(1)

RM0367. Reference manual. Ultra-low-power

STM32L0x3 advanced ARM

®

-based 32-bit MCUs.

STMicroelectronics, DocID025274 Rev 2, April 2014, p.252

(2)

UM10398. LPC11xx User Manual.

NXP, Rev. 12.3 — 10 June 2014, p.466

Exception

IRQ

Exception

Priority

Description

number

number

type

1

Reset

(1,2)

–3

, the highest

2

–14

NMI

(1,2)

–2

fixed

3

–13

HardFault

(1,2)

–1

All class of fault

4

–12

MemManage

(1)

settable

Memory management

5

–11

BusFault

(1)

settable

Pre-fetch fault, memory

access fault

6

–10

UsageFault

(1)

settable

Undefined instruction or

illegal state

7-10

Reserved

11

–5

SVCall

(1,2)

settable

System service call via SWI

instruction

12

–4

DebugMon

(1)

settable

Debug Monitor

13

Reserved

14

–2

PendSV

(1,2)

settable

Pendable request for

system service

15

–1

SysTick

(1,2)

settable

System tick timer

16 and

0

and

Interrupt

(1,2)

settable

Peripheral interrupts

above

above

(IRQ)

Cortex

M0 / Cortex

M0+

Program Status Registers

ARMv6-M Architecture Reference Manual.

ARM DDI 0419C, September 2010, B1.4

N Z C V

31

28

Reserved

24

APSR

T

Reserved

IPSR

Reserved

EPSR

Reserved

5

0

0 or

Exception

Number

N Z C V

31

28

Reserved

24

T

5

0

Exception

Number

P

rogram

S

tatus

R

egisters

Res

xPSR

Provide arithmetic and logic processing flags

(zero flag and carry flag),

execution status

, and

current executing interrupt number

A

pplication

P

rogram

S

tatus

R

egister

I

nterrupt

P

rogram

S

tatus

R

egister

E

xecution

P

rogram

S

tatus

R

egister

Cortex-M
Blokowanie wyjątków

Cortex™-M0+. Devices.

ARM DUI 0662B, p.2-7

bit 0

(PRIMASK) w rejestrze maskuj

ą

cym obsług

ę

wyj

ą

tków (PRIority

MASK register)

wył

ą

cza

lub

blokuje uruchomienie wszystkich

wyj

ą

tków z konfigurowalnym priorytetem

operacja

stosowana

je

ś

li procesor wykonuje

zadania czasowo-

krytyczne

lub

sekwencje kodu wymagaj

ą

ce niepodzielno

ś

ci

31

Reserved

0

1

PRIMASK

Bity

Nazwa

Funkcja

[0]

PRIMASK

0 = odblokowana obsługa wyj

ą

tków

1 = zablokowana obsługa wyj

ą

tków

[31:1]

zarezerwowane

PRIMASK

Cortex-M0
Źródła przerwań w LPC11xx

8

9

10

11

12

13

14

15

C

_

C

A

N

P

1

_

0

P

0

_

1

1

P

0

_

1

0

P

0

_

9

P

0

_

8

I2

C

S

P

I/

S

S

P

1

0

1

2

3

4

5

6

7

P

0

_

5

P

0

_

4

P

0

_

3

P

0

_

2

P

0

_

1

P

0

_

0

P

0

_

7

P

0

_

6

24

A

D

C

25

W

D

T

30

P

IO

_

1

31

P

IO

_

0

P

IO

_

2

29

P

IO

_

3

28

R

e

s

e

rv

e

d

27

B

O

D

26

StartUp_LPC11xx.s

UM10398. LPC11xx User Manual.

NXP, Rev. 12.3 — 10 June 2014, p.69

LPC11C12/C14

wake-up pin from

Deep-sleep mode

numer przerwania (Interrupt number)

16

17

18

19

20

21

22

23

U

A

R

T

S

P

I/

S

S

P

0

C

T

3

2

B

1

C

T

3

2

B

0

C

T

1

6

B

1

C

T

1

6

B

0

R

e

s

e

rv

e

d

R

e

s

e

rv

e

d

numer przerwania (Interrupt number)

Cortex-M0
Źródła przerwań w STM32L0x3

8

9

10

11

12

13

14

15

L

P

T

IM

1

A

D

C

_

C

O

M

P

D

M

A

1

_

C

H

[7

:4

]

D

M

A

1

_

C

H

[3

:2

]

D

M

A

1

_

C

H

[1

]

T

S

C

T

IM

2

R

e

s

e

rv

e

d

0

1

2

3

4

5

6

7

E

X

T

I[

1

:0

]

R

C

C

_

C

R

S

F

L

A

S

H

R

T

C

P

V

D

W

W

D

G

E

X

T

I[

1

5

:4

]

E

X

T

I[

3

:2

]

24

I2

C

2

25

S

P

I1

30

L

C

D

31

U

S

B

..

A

E

S

.

.

29

U

S

A

R

T

2

28

U

S

A

R

T

1

27

S

P

I2

26

numer przerwania (Interrupt number)

16

17

18

19

20

21

22

23

R

e

s

e

rv

e

d

T

IM

2

1

R

e

s

e

rv

e

d

R

e

s

e

rv

e

d

T

IM

6

_

D

A

C

R

e

s

e

rv

e

d

T

IM

2

2

I2

C

1

numer przerwania (Interrupt number)

StartUp_STM32L053xx.s

RM0367. Reference manual. Ultra-low-power

STM32L0x3 advanced ARM

®

-based 32-bit MCUs.

STMicroelectronics, DocID025274 Rev 2, April 2014, p.253

background image

9

NVIC
Priorytety

[1#2]

Cortex™-M0 Devices. Generic User Guide.

ARM, DUI 0497A, 8 October 2009, p.4-7

UM10398. LPC11xx User Manual.

NXP, Rev. 12.3 — 10 June 2014, p.508

J. Yiu: The Definitive Guide to the ARM Cortex-M0.

Elsevier Inc. 2011, Fig.8.1

procesor Cortex-M0 posiada 3-poziomow

ą

, sprz

ę

tow

ą

i 4-poziomow

ą

,

programow

ą

struktur

ę

priorytetów przerwa

ń

do programowania wyj

ą

tków/przerwa

ń

z programowalnymi priorytetami

stosowane s

ą

jedynie dwa najbardziej znacz

ą

ce bity w 8-bitowych rejestrach

(rejestry SHPR3-SHPR2 – System Handler Priority Register dla wyj

ą

tków

oraz IPR0-IPR7 – Interrupt Priority Registers dla przerwa

ń

)

w rejestrach priorytetów bity 5:0 s

ą

zawsze równe warto

ś

ci zerowej

przy odczycie

(brak zmiany warto

ś

ci tych bitów przy zapisie)

dost

ę

pne programowalne priorytety: 0x00

(najwy

ż

szy),

0x40

,

0x80

i

0xC0

(najni

ż

szy)

Bit 7 Bit 6

Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

wykorzystywane

nie wykorzystywane

NVIC
Priorytety

[2#2]

Cortex™-M0 Devices. Generic User Guide.

ARM, DUI 0497A, 8 October 2009, p.4-7

UM10398. LPC11xx User Manual.

NXP, Rev. 12.3 — 10 June 2014, p.508

J. Yiu: The Definitive Guide to the ARM Cortex-M0.

Elsevier Inc. 2011, p.143

w procesorze

Cortex-M3

przewidziano

minimum 3 bity do

programowania priorytetów wyj

ą

tków/przerwa

ń

– 8 poziomów

priorytetów

(w procesorach Cortex-M0/M0+ tylko 4 poziomy)

zwi

ę

kszenie liczby dost

ę

pnych bitów zwi

ę

ksza liczb

ę

dost

ę

pnych poziomów

priorytetów wyj

ą

tków/przerwa

ń

zwi

ę

kszenie liczby dost

ę

pnych bitów zwi

ę

ksza pobór energii

w rejestrach priorytetów bity 4:0 s

ą

zawsze równe warto

ś

ci zerowej

przy odczycie

(brak zmiany warto

ś

ci tych bitów przy zapisie)

dost

ę

pne programowalne priorytety: 0x00

(najwy

ż

szy),

0x20

,

0x40

,

0x60

,

0x80

,

0xA0

,

0xC0

i

0xE0

(najni

ż

szy)

Bit 7 Bit 6 Bit 5

Bit 4 Bit 3 Bit 2 Bit 1 Bit 0

wykorzystywane

nie wykorzystywane

void

NVIC_EnableIRQ

(IRQn_Type IRQn)

odblokowanie wyj

ą

tku / przerwania

void

NVIC_DisableIRQ

(IRQn_Type IRQn)

zablokowanie wyj

ą

tku / przerwania

Cortex-M0/M0+
Funkcje CMSIS dostępu do NVIC

[1#3]

UM10398. LPC11xx User Manual.

NXP, Rev. 12.3 — 10 June 2014, p.69

PM0223. Programming manual STM32L0 Series Cortex

®

-M0+ programming manual.

STMicroelectronics , DocID025763 Rev 1 , April 2014, p.82

void

NVIC_SetPendingIRQ

(IRQn_Type IRQn)

ustawienie statusu wyj

ą

tku/przerwania w tryb oczekiwania

void

NVIC_ClearPendingIRQ

(IRQn_Type IRQn)

skasowanie trybu oczekiwania dla wyj

ą

tku/przerwania

uint32_t

NVIC_GetPendingIRQ

(IRQn_Type IRQn)

odczyt statusu wyj

ą

tku/przerwania (1 oznacza tryb oczekiwania)

Cortex-M0/M0+
Funkcje CMSIS dostępu do NVIC

[2#3]

UM10398. LPC11xx User Manual.

NXP, Rev. 12.3 — 10 June 2014, p.69

PM0223. Programming manual STM32L0 Series Cortex

®

-M0+ programming manual.

STMicroelectronics , DocID025763 Rev 1 , April 2014, p.82

Cortex-M0/M0+
Funkcje CMSIS dostępu do NVIC

[3#3]

UM10398. LPC11xx User Manual.

NXP, Rev. 12.3 — 10 June 2014, p.69

PM0223. Programming manual STM32L0 Series Cortex

®

-M0+ programming manual.

STMicroelectronics , DocID025763 Rev 1 , April 2014, p.82

void

NVIC_SetPriority

(IRQn_Type IRQn, uint32_t priority)

programowanie priorytetu dla podanego typu przerwania

uint32_t

NVIC_GetPriority

(IRQn_Type IRQn)

odczyt priorytetu dla podanego typu przerwania

SysTick_Config

__STATIC_INLINE uint32_t

SysTick_Config

(uint32_t ticks) {

if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */
SysTick->LOAD = ticks - 1;

/* set reload register

*/

NVIC_SetPriority

(

SysTick_IRQn

, (

1<<__NVIC_PRIO_BITS) – 1

);

/*

set Priority for Systick Interrupt

*/

SysTick->VAL = 0;

/* Load the SysTick Counter Value

*/

SysTick->CTRL= SysTick_CTRL_CLKSOURCE_Msk |

SysTick_CTRL_TICKINT_Msk |
SysTick_CTRL_ENABLE_Msk;

/* Enable SysTick IRQ and SysTick Timer */

return (0);

/* Function successful

*/

}

Cortex™-M0 Devices. Generic User Guide.

ARM, DUI 0497A, 8 October 2009, p.4-7

UM10398. LPC11xx User Manual.

NXP, Rev. 12.3 — 10 June 2014, p.508

J. Yiu: The Definitive Guide to the ARM Cortex-M0.

Elsevier Inc. 2011, p.143

File: core_cm0.h

NVIC_SetPriority

(

SysTick_IRQn

, (

1<<__NVIC_PRIO_BITS) – 1

);

// set Priority for Systick Interrupt

void

NVIC_SetPriority

(

IRQn_Type IRQn

,

uint32_t priority

)

NVIC_SetPriority (–1, 3);

File LPC11xx.h (line 59):

SysTick_IRQn = –1

// 15 System Tick Timer

File LPC11xx.h (line 104):
#define

__NVIC_PRIO_BITS 2

// Number of Bits used for Priority Levels

The lower the value, the greater the priority

of the corresponding interrupt.

background image

10

Cortex-M0

(LPC1114)

SysTick Timer Interrupt

[1#3]

StartUp_LPC11xx.s

UM10398. LPC111x/LPC11Cxx User manual.

NXP, Rev. 12.3 — 10 June 2014, p.466

; Vector Table Mapped to Address 0 at Reset

EXPORT

__Vectors

__Vectors DCD

__initial_sp

;

Top of Stack

0x0000 0000

DCD

Reset_Handler

;

1

/

Reset Handler

0x0000 0004

DCD

NMI_Handler

;

2

/

–14

NMI Handler

0x0000 0008

.........................................................................................................................

DCD SysTick_Handler

;

15

/

–1

SysTick Handler

0x0000 003C

.........................................................................................................................

wpisanie do LR identyfikatora przerwanego trybu pracy

0xFFFF FFF1 (Handler

Mode, MSP)

,

0xFFFF FFF9 (Thread Mode, MSP)

,

0xFFFF FFFD (Thread Mode, PSP)

procedura stacking,

ochrona na stosie rejestrów: R0 – R3, R12, LR, xPSR, PC

procesor w trybie Handler Mode

wska

ź

nik stosu SP = MSP

wykonanie programu obsługi przerwania SysTick_Handler

procedura unstacking,

powrót do wła

ś

ciwego trybu (Handler/Thread Mode)

i przerwanego programu

address

IRQ number

Exception

number

Cortex-M0

(LPC1114)

SysTick Timer Interrupt

[3#3]

StartUp_LPC11xx.s

UM10398. LPC111x/LPC11Cxx User manual.

NXP, Rev. 12.3 — 10 June 2014, p.466

address

IRQ number

Exception

number

; Vector Table Mapped to Address 0 at Reset

EXPORT

__Vectors

__Vectors

DCD

__initial_sp

;

Top of Stack

0x0000 0000

DCD

Reset_Handler

;

1

/

Reset Handler

0x0000 0004

DCD

NMI_Handler

;

2

/

–14

NMI Handler

0x0000 0008

.....................................................................................

DCD

SysTick_Handler ;

15

/

–1

SysTick Handler

0x0000 003C

.....................................................................................

SysTick_Handler

PROC

EXPORT SysTick_Handler [

WEAK

]

B .

ENDP

void SysTick_Handler (void) {

// IRQ_file.c

ticks++;

}

Unstacking

Przerwania

- wspomaganie sprz

ę

towe (1/2)

A/C

wynik

pomiaru

koniec

pomiaru

pocz

ą

tek

pomiaru

dane

MCU

licznik

Px.y

zgłoszenie
przerwania

kontroler

przerwa

ń

port

wej

ś

ciowy

wykonaj
pomiar

przetwarzanie

A/C (1)

wykonaj

pomiar

zgłoszenie

przerwania

przyj

ę

cie

przerwania

przetwarzanie

A/C (2)

wykonaj

pomiar

zgłoszenie

przerwania

odczyt

danych

przyj

ę

cie

przerwania

odczyt

danych

strukturalne opó

ź

nienia

Przerwania

- wspomaganie sprz

ę

towe (2/2)

przetwarzanie

A/C (1)

wykonaj
pomiary

zgłoszenie

przerwania

przyj

ę

cie

przerwania

przetwarzanie

A/C (2)

odczyt

danych

1

strukturalne opó

ź

nienia

przetwarzanie

A/C (1)

wykonaj

pomiar

zgłoszenie

przerwania

przyj

ę

cie

przerwania

przetwarzanie

A/C (2)

wykonaj

pomiar

zgłoszenie

przerwania

odczyt

danych

przyj

ę

cie

przerwania

odczyt

danych

odczyt

danych

2

strukturalne opó

ź

nienia

Przerwania
THS1206

przetwarzanie

A/C (1)

wykonaj
pomiary

zgłoszenie przerwania

przyj

ę

cie przerwania

przetwarzanie

A/C (2)

odczyt

danych

1

strukturalne opó

ź

nienia

odczyt

danych

2

przetwornik A/C

koniec

pomiaru

pocz

ą

tek

pomiaru

dane

MCU

licznik

Px.y

zgłoszenie
przerwania

kontroler

przerwa

ń

port

wej

ś

ciowy

wykonaj
pomiar

1

4

2

3

5

8

7

6

9

12

13

14

15

16

11

10

5

5

wska

ź

nik

odczytu

wska

ź

nik

zapisu

wyniki pomiarów

w buforze FIFO

np. THS1206 (TI)

THS1206. 12-BIT, 4 ANALOG INPUT, 6 MSPS,

SIMULTANEOUS SAMPLING ANALOG-TO-DIGITAL CONVERTERS.

Texas Instruments, SLAS217H – JULY 2003

Problemy i pytania

1. Jaki jest cel stosowania przerwa

ń

?

2. Jak rozwin

ąć

poj

ę

cie ‘ISR’ ?

3. Czy si

ę

ż

ni

ą

metody: polling oraz interrupt ?

4. Jak zachowuje si

ę

procesor po zgłoszeniu przerwania ?

5. Czym si

ę

ż

ni

ą

przerwania maskowalne od niemaskowalnych ?

6. Na czym polega maskowanie przerwa

ń

?

7. Jaki jest powód stosowania przerwa

ń

niemaskowlnych ?

8. W jakim celu w procesorach jest stosowane przerwanie programowe SWI ?

9. Jak w procesorach Cortex-Mx jest interpretowane poj

ę

cie przerwania

wektorowego ?

10. Jakie s

ą

ź

ródła przerwa

ń

w mikrokontrolerach ?

11. Jak w mikrokontrolerach s

ą

identyfikowane

ź

ródła przerwa

ń

?

12. Co to jest tablica wektorów przerwa

ń

?

13. Czym si

ę

ż

ni

ą

przerwania jednopoziomowe od wielopoziomowych ?

14. Co oznacza poj

ę

cie ‘zagnie

ż

d

ż

enie przerwa

ń

’ ?

15. Jakie czasy definiuj

ą

reakcj

ę

procesora po przyj

ę

ciu przerwania ?


Wyszukiwarka

Podobne podstrony:
9 Liczniki 2015 www
10 Serial Interface 2015 www
13 Power 2015 www
4 Typy instrukcji Tryby adresowania 2015 www (1)
3 Przetw danych Typy proces 2015 www (1)
7 Stos 2015 www
12 DMA 2015 www
Lokalny program rewitalizacji osiedla „Stara Kolonia” w Brzeszczach 2005 2015 www old brzeszcze pl
6 Pamieci ROM RAM 2015 www
11 Przetworniki 2015 www
2 Architektura 2015 www
5 Architektura MCU 2015 www (1)
9 Liczniki 2015 www
10 Serial Interface 2015 www
11 Przetworniki 2015 www
Sprawozdanie 2015 www

więcej podobnych podstron