Interrupt prioriteiten
De processor bekijkt na het uitvoeren van elke instructie of er een interrupt is die afgehandeld moet worden. Er zijn meerdere interrupt bronnen. Tijdens het uitvoeren van een instructie zouden twee of meer interrupts actief kunnen worden. Aan het eind van de instructie kunnen meerdere I/O schakelingen daardoor tegelijkertijd een interrupt aanvraag actief hebben. De processor moet nu beslissen welke interrupt het eerst afgehandeld moet gaan worden. Hiervoor hebben alle interrupt bronnen een eigen prioriteit gekregen.
Als er twee of meer interrupts actief zijn, zal de actieve interrupt met de hoogste prioriteit het eerst afgehandeld worden. Wanneer de interrupt met de hoogste prioriteit is afgehandeld, keert de processor terug uit de betreffende interrupt routine, en wordt de actieve interrupt met de eerstvolgende prioriteit afgehandeld.
De XIRQ interrupt heeft altijd een hogere prioriteit dan de interrupts die via het I-bit geblokkeerd kunnen worden.
Wanneer twee of meer interrupt bronnen uit de onderstaande lijst (alle interrupts die door het I-bit geblokkeerd kunnen worden) tegelijkertijd optreden, wordt de interrupt die het verst beneden aan de lijst staat het eerst uitgevoerd.
|
Naam |
Omschrijving |
|
sciint |
interrupt van de seriële interface |
|
spiint |
interrupt van de uitbreidingspoort |
|
paiint |
een actieve flank op de ingang van de puls teller |
|
paoint |
de pulsteller gaat van $FF naar 0 |
|
timint |
de free running counter gaat van $FFFF naar 0 |
|
toc5int |
interrupt van output compare 5 |
|
tic4int |
interrupt van input capture 4 |
|
toc4int |
interrupt van output compare 4 |
|
toc3int |
interrupt van output compare 3 |
|
toc2int |
interrupt van output compare 2 |
|
toc1int |
interrupt van output compare 1 |
|
tic3int |
interrupt van input capture 3 |
|
tic2int |
interrupt van input capture 2 |
|
tic1int |
interrupt van input capture 1 |
|
rtiint |
interrupt van de real time interrupt |
|
irqint |
interrupt via de externe IRQ pin |
Nadat de I/O uitgebreider is behandeld, zult u beter begrijpen waar de verschillende interrupts vandaan komen. De lijst hierboven is opgenomen om compleet te zijn, het is niet nodig er nu al veel aandacht aan te schenken.
prioriteiten veranderen
Via 4 bits in het HPRIO register kan één van de onderstaande interrupt bronnen de hoogste prioriteit gegeven worden, zodat deze als eerste zal worden uitgevoerd als er twee of meer interrupts tegelijkertijd optreden. Deze 4 bits mogen alleen veranderd worden als de interrupts via het I-bit geblokkeerd staan.
|
PSEL3
|
PSEL2
|
PSEL1
|
PSEL0
|
bron met hoogste prioriteit
|
|
|
|
0
|
0
|
0
|
0
|
timint
|
|
0
|
0
|
0
|
1
|
paoint
|
|
0
|
0
|
1
|
0
|
paiint
|
|
0
|
0
|
1
|
1
|
spiint
|
|
0
|
1
|
0
|
0
|
sciint
|
|
0
|
1
|
0
|
1
|
gereserveerd
|
|
0
|
1
|
1
|
0
|
irqint
|
|
0
|
1
|
1
|
1
|
rtiint
|
|
1
|
0
|
0
|
0
|
tic1int
|
|
1
|
0
|
0
|
1
|
tic2int
|
|
1
|
0
|
1
|
0
|
tic3int
|
|
1
|
0
|
1
|
1
|
toc1int
|
|
1
|
1
|
0
|
0
|
toc2int
|
|
1
|
1
|
0
|
1
|
toc3int
|
|
1
|
1
|
1
|
0
|
toc4int
|
|
1
|
1
|
1
|
1
|
tic4int of toc5int
|
Bij de meeste toepassingen zal het niet nodig zijn de prioriteiten van de interrupts te wijzigen. In de cursus zal hieraan verder geen aandacht geschonken worden.
|