07.pdf
(
704 KB
)
Pobierz
Reakcja procesora
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
Technika cyfrowa 2
wykĀad 7
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
warunkw, dodatkowych warunkw; rozpoczħcie wykonywania
procedury obsþugi przerwania (podobieıstwo do wywoþania
podprogramu)
Katedra Metrologii Elektronicznej i Fotonicznej
Andrzej Stİpieĺ
Przerwanie (interrupt)
Typy przerwaĺ
zawieszenie (przerwanie) wykonywanego programu, najczħĻciej po
speþnieniu dodatkowych warunkw, zapamiħtanie wszystkich danych
niezbħdnych do kontynuowania zawieszonego programu
¤ sprzħtowe zerowanie procesora (Reset) Î rozpoczħcie wykonywania
procedury bez warunkw wstħpnych (zawsze), zmiana wartoĻci
rejestrw
¤ przerwanie
sprzħtowe
niemaskowalne
(NMI Î Non - Maskable
Interrupt)
rozpoczħcie wykonywania obsþugi przerwania bez warunkw
wstħpnych (zawsze)
¤ przerwanie
sprzħtowe
maskowalne
(Maskable Interrupt)
rozpoczħcie wykonywania procedury obsþugi przerwania zaleŇnie od
speþnienia okreĻlonych warunkw wstħpnych; programowe blokowanie
/ odblokowanie obsþugi przerwaı (Enable / Disable Interrupt)
¤ przerwanie programowe
(SWI Î SoftWare Interrupt)
programowe wywoþanie obsþugi przerwania
¤ operacja puþapki
(Trap)
inicjowana pojawieniem siħ bþħdu, np. prba dzielenia przez zero
wykonanie podprogramu (ISR - Interrupt Service Routine)
obsþugi zdarzenia (sygnaþu) ŇĢdajĢcego (wymagajĢcego)
obsþugi
kontynuacja zawieszonego programu
zachowanie
stan
u procesora
odtworzenie
stanu procesora
ISR
program
t
ŇĢdanie przerwania
Identyfikacja urzīdzenia
Adresy procedur obsĀugi przerwaĺ
Programowa / sprzħtowa identyfikacja urzĢdzenia / sygnaþu
zgþaszajĢcego 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, ktre podaje swj numer
identyfikacyjny szynĢ danych
¤ metoda wektorowa
wygenerowanie adresu podprogramu obsþugi przerwania od
urzĢdzenia
Adres poczĢtkowy procedury obsþugi przerwania:
- dostarczany przez urzĢdzenie zewnħtrzne, to samo, ktre wywoþaþo
przerwanie; po akceptacji przerwania przesyþanie szynĢ danych
adresu poczĢtku obsþugi przerwania
- w tablicy wektorw przerwaı:
w tablicy wyþĢcznie 2 * N bajtw adresw przerwaı (16 bitowa szyna
adresowa); pozycja adresu zaleŇna od rodzaju przerwania
staþe adresy ustalone przez producenta procesora, np. co 4 lub co 8
bajtw (3, 0Bh, 13h itd.)
1
Koniec procedury obsĀugi przerwania
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
KaŇdy
podprogram
obsþugi przerwania
musi koıczyę siħ wþaĻciwĢ
instrukcjĢ
:
¤ RETI (MCS 51)
¤ RETFIE (PIC17Cxx)
¤ RTI (68HC7xx)
¤ IRET (ST7)
priorytet przerwania
ISR
program
ŇĢdanie
przerwania A
ŇĢdanie
przerwania A
aby
odtworzyę stan rejestrw kontrolera priorytetw przerwaı
ŇĢdanie przerwania B
ŇĢdanie przerwania C
Wielopoziomowa obsĀuga przerwaĺ
Czas reakcji
przyporzĢdkowanie rŇnych poziomw priorytetw 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 poziomw priorytetw
¤ priorytety sprzħtowe sĢ ustalane przez producenta procesora
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ı
¤ liczby cykli maszynowych potrzebnych do zakoıczenia bieŇĢcej,
wykonywanej instrukcji
¤ typu wykonywanych instrukcji, np. programowania kontrolera
priorytetw przerwaı
priorytet przerwania
ISR
ISR
program
program
ŇĢdanie
przerwania A
ŇĢdanie
przerwania A
ŇĢdanie przerwania
(Interrupt Request)
rozpoczħcie
wykonywania ISR
reakcja na przerwan
ie
(Response Time)
ŇĢdanie przerwania B
ŇĢdanie przerwania C
Czas opŎnienia
Czas opŎnienia i reakcji
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 rozkazw PC
¤ liczby bajtw innych rejestrw przesyþanych na stos przed
rozpoczħciem podprogramu obsþugi przerwania
PICmicro MID-RANGE MCU FAMILY. Microchip Technology,
December 1997, 33023a.pdf, 8.3 Interrupt Latency (p.132):
przygotowanie do
rozpoczħcia ISR
reakcja procesora
na ŇĢdanie procedury
obsþugi przerwania
PUSH PC
....
CALL ISR
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
start
s execution
(when that interrupt is enabled).
ISR
program
przygotowania
reakcja na ŇĢdanie
obsþugi przerwania
8-bit Microcontrollers. Da
tabook - 1997. Temic Sem
iconductors, 1997
reakcja
na przerwanie
(Response Time)
PUSH PC
CALL ISR
....
ŇĢdanie przerwania
(Interrupt Request)
Response tim
e
... if a request is active and condit
ions 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).
rozpoczħcie
wykonywania ISR
ISR
opŅnienie
(Latency Time)
program
opŅnienie
(Latency Time)
Ň
Ģdanie przerwania
(Interrupt Request)
rozpoczħcie
wykonywania ISR
2
ObsĀuga przerwaĺ
ObsĀuga przerwaĺ w C51
(1/2)
¤ brak sprzħtowego przeþĢczania danych
¤ programowe przeþĢczanie danych tylko w odniesieniu do:
Î standardowo: A, PSW i DPTR (jeĻli wystħpuje tylko jeden)
Î nietypowo: IE, IP itp.
Ochrona
, przechowywanie
stanu rejestrw
procesora po przyjħciu i
rozpoczħciu realizacji procedury obsþugi przerwania:
¤ przeþĢczanie danych
(
data swapping
)
przechowywanie na stosie zawartoĻci rejestrw 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
Î programowe
dodatkowe instrukcje na poczĢtku (PUSH) i koıcu (POP)
programu obsþugi przerwania, np. x86
¤ przeþĢczanie kontekstowe
(
context switching
)
wykorzystanie dodatkowych zestaww, bankw rejestrw, np. C51
IrqInit:
PUSH
ACC
; ochrona akumulatora
PUSH
DPL
; ochrona DPTR
PUSH
DPH
.......................
; zasadnicza czħĻę ISR
POP
DPH
; odtworzenie DPTR
POP
DPL
POP
ACC
; odtworzenie akumulatora
RETI
ObsĀuga przerwaĺ w C51
(2/2)
PICmicro MID-RANGE MCU FAMILY
(1/3)
PICmicro MCUs can have many sources of interrupt (one interrupt source
for each peripheral module):
INT Pin Interrupt (external interrupt), Parallel Slave Port Interrupt
Timer0 / Timer1 / Timer2 module Overflow Interrupt
PORTB Change Interrupt (pins RB7:RB4)
Comparator Change Interrupt
USART Interrupts
Receive / Transmit Interrupt
A/D Conversion Complete Interrupt
LCD Interrupt
Data EEPROM Write Complete Interrupt
Capture, Compare and PWM (CCP) Interrupt
Synchronous Serial Port (SSP) Interrupt
¤ przeþĢczanie kontekstowe, standard w obsþudze przerwaı:
IrQInit:
PUSH
ACC
; ochrona akumulatora
PUSH
PSW
; ochrona rejestru statusowego
ANL
PSW, #1110$0111b
;wybr banku RB1
ORL
PSW, #0000$1000b
.......................
; zasadnicza czħĻę ISR
POP
PSW
; odtworzenie rejestru statusowego
POP
ACC
; odtworzenie akumulatora
RETI
¤ adresowanie bezpoĻrednie rejestrw
:
USING
2
; deklaracja banku RB2
PUSH
AR4
; (SP) (R4
RB2
) = (2*8 + 4)
PICmicro MID-RANGE MCU FAMILY
(2/3)
PICmicro MID-RANGE MCU FAMILY
(3/3)
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.
Context Saving During Interrupts:
during an interrupt, only the return PC value is saved on the stack
typically, users may wish to save key registers during an interrupt e.g.
Working register (W) and STATUS register; this has to be
implemented in software.
Interrupt to CPU
clear GIE bit
addr = 0004h
The action of saving information is commonly referred to as
ÐPUSHing,Ñ while the action of restoring the information before the
return is commonly referred to as ÐPOPing.Ñ These (PUSH, POP) are
not instruction mnemonics, but are conceptual actions. This action
can be implemented by a sequence of instructions.
GIE
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.
3
MSP430 FAMILY
ST7FLite0 Interrupt mapping
0FFFEh RESET_Proc
NMI_Proc
ŇĢdanie przerwania NMI
0FFFCh
PC
0FFFAh
I/O_Proc
¤ 16-bitowa (word) struktura
pamiħci programu i danych
¤ indywidualne, poĻrednie
adresy wektorw przerwaı
¤ kolejne adresy wektorw
przerwaı co 2
¤ przyjħcie przerwania
kasuje znacznik
GIE i
zachowuje na stosie Status
Register (SR)
¤ RETI odtwarza znacznik
GIE oraz SR
.....................
NMI_Proc
PC
0FFE2h
BasicTimer_Proc
0FFE0h
Port_P0_Proc
RETI
.........
.........
RETI
.........
.........
RESET_Proc
NMI_Proc
RETI
.........
.........
BasicTimer_Proc
Peripheral Int management
Interrupt mechanism
An interrupt is requested
Interrupt flag
set by H/W
Periph Status Register
X
X
X
1
X
X
X
X
Its relative
pending bit is set
Interrupt Enable bit
set by S/W
Yes
Periph Control Register
X
X
X
1
X
X
X
X
No
This interrupt will
be serviced when I = 0
I = 0
(CC register)
Yes
Interrupt Mask bit I
reset/set by S/W
Condition Code Register
1
1
1
H
0
N
Z
C
PC
,
X
(not Y)
,
A
,
CC
are
pushed
onto the
stack
I = 1
(disable interrupt)
PC
=
address
of the
interrupt vector
ISR
Interrupt generation
IRET
instruction:
CC (I=0)
,
A
,
X
,
PC
to be
popped
from
stack
The interrupt program to resume or
another interrupt program
to start
Context switch takes 10 CPU clock cycles
Interrupt Management
TRAP instruction
a special instruction TRAP produces the same effect as an externally
hardware generated interrupt request, but under program control
the TRAP instruction uses of the interrupt mechanism within the
regular execution of the main program
the trap instruction triggers interrupt processing regardless of the state
of the I bit in the Condition Code register
an example of the use of the TRAP instruction is the real-time
debugger. When the user sets a breakpoint somewhere in the
program, the debugger replaces the instruction at which the execution
must stop with a TRAP instruction. The interrupt thus generated is
processed by displaying on the screen the state of the microcontroller
at that precise time. However, other uses of this instruction may be
found as well.
Concurrent Interrupt
:
an interrupt can not be interrupted by another one
except by the NMI (Non Maskable Interrupt) or TLI (Top level interrupt)
interrupt Vectors: up 16 Vectors
S/W Priority (Nested mode only): 4 levels user configurable
Nested Interrupt can be interrupted by
:
the NMI (Non Maskable Interrupt) or TLI (Top Level Interrupt)
an interrupt request having an higher software Priority
RIM
: Reset Interrupt Mask (I bit =0, allows the interrupts)
SIM
: Set interrupt Mask (I bit =1, disable the interrupts)
4
Standard C51
- wektory przerwaı
Standard C51
- kontroler przerwaı
High Priority
PX0
1
EA
IT0
1
1
03h
1
EX0
Low Priority
inne przerwania / program
RESET_Proc
P3.2
INT0#
0
IE0
0
RETI
..........
0
0
INT0#_Proc_Cont
1
PX1
RETI
..........
¤ indywidualne,
bezpoĻrednie
adresy wektorw
przerwaı
IT1
1
1
13h
1
EX1
Intr_Serial = 0023h
0
P3.2
INT0#
IE1
0
JMP T1_Proc_Cont
..........
0
PT0
PT1
Intr_T1 = 001Bh
1
0
ET0
ET1
1
0Bh
1Bh
JMP INT1#_Proc_Cont
..........
Timer 0
Overflow
Timer 1
Overflow
1
¤ kolejne adresy
wektorw
przerwaı co 8
0
TF0
TF1
Intr_INT1# = 0013h
0
JMP T0_Proc_Cont
..........
0
1
PS
Intr_T0 = 000Bh
1
23h
JMP INT0#_Proc_Cont
..........
1
ŇĢdanie przerwania
INT0# = 0003h
RI
E
S
Serial
Port
0
0
TI
JMP RESET_Proc
0
0000h
Standard C51
- rejestry
Standard C51
- priorytety przerwaı
IE
Interrupt Enable Register
addr = 0A8h, RW = 00h
Priorytety sprzħtowe:
¤ IE0
EA
Ï
ET2
ES
ET1
EX1
ET0
EX0
najwyŇszy
adres procedury obsþugi = 03h
¤ TF0
0Bh
¤ IE1
13h
¤ TF1
1Bh
TCON
Timer/Counter Control Register
addr = 088h, RW = 00h
¤ RI + TI
najniŇszy
23h
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
Priorytety programowe, zmieniane przez uŇytkownika
SCON
Serial Port Control Register
addr = 098h, RW = 00h
SM0 SM1 SM2 REN TB8 RB8
TI
RI
IP
Interrupt Priority Register
addr = 0B8h, RW = 00h
Ï
Ï
PT
2
PS
PT
1
PX1
PT
0
PX0
IP
Interrupt Priority Register
addr = 0B8h, RW = 00h
Ï
Ï
PT2
PS
PT1
PX1
PT0
PX0
Standard C51
- przyjħcie przerwania (1/2)
Standard C51
- przyjħcie przerwania (2/2)
testowanie
wa
runkw (polli
ng)
obsþuga przerwania
(ISR)
testowanie warunkw
(polling)
obsþuga przerwania
(ISR)
S5P2
S5P2
C1
C2
C3
C4
C5
C1
C2
C3
C4
C5
prbkowanie przerwaı
zawsze w fazie S5P2
(sampling)
prbkowanie
przerwaı zawsze w
fazie S5P2
(sampling)
opŅnienie
Skok do adresu wektora
(LCALL to vector address)
Skok do adresu wektora
(LCALL to vector address)
Blokada
skoku jeĻli:
¤ jest wykonywana obsþuga przerwania o rwnym / wyŇszym priorytecie
¤ testowanie jest wykonywane w cyklu, ktry nie jest ostatnim cyklem
maszynowym instrukcji
¤ jest wykonywana instrukcja modyfikujĢca kontroler przerwaı (RETI,
modyfikacja: IE, IP, ...)
¤ jeĻli podane warunki sĢ speþnione to wykonywana jest
dodatkowo
jedna (neutralna) instrukcja
Czas opŅnienia
- czas liczony od momentu zgþoszenia przerwania do
momentu rozpoczħcia wykonywania podprogramu obsþugi przerwania
(ISR):
¤ minimum 3 peþne cykle maszynowe
Czas trwania zewnħtrznego sygnaþu przerywajĢcego nie krtszy niŇ
1 cykl maszynowy
5
Plik z chomika:
pir23
Inne pliki z tego folderu:
01.pdf
(2217 KB)
02.pdf
(948 KB)
03.pdf
(2327 KB)
04.pdf
(794 KB)
05.pdf
(692 KB)
Inne foldery tego chomika:
3L-Stepien
Zgłoś jeśli
naruszono regulamin