Interrupt systeem

Het interrupt systeem zorgt er voor dat handelingen kunnen uitgevoerd worden na dat er iets gebeurd is. Wanneer er een interrupt zich voordoet kan er naar een routine gesprongen worden om iets af te handelen. De verschillende onderdelen die gebruik maken van dit systeem hebben elk een interrupt vlag (flag). Met deze kunnen ze dan een interrupt laten genereren.

Het interrupt systeem controleert deze vlaggen continu. Wanneer er een vlag '1' is. Dan zal het interrupt systeem de program counter (PC) naar een bepaald adres laten springen.

Het interruptsysteem wordt geactiveerd door het SEI-bit in het status register. Als dit bit = 0 dan is het systeem gedeńctiveerd, bij een 1 is het geńctiveerd.

Vector tabel

Wanneer een interrupt wordt gegenereerd, dan wordt er naar een bepaald adres gesprongen. Iedere interruptbron heeft zijn eigen vast adres. Al de adressen van de interruptbronnen bevinden zich in de vector tabel. Het adres van een interruptbron is dus een vector. Bij normale werking van de ÁC bevindt deze tabel zich bovenaan het programmageheugen. Op adres 0x0000 bevindt zich de reset vector, na een reset wordt er naar deze vector gesprongen. Om de 0x0002 volgt een vector.

vector nr.programma adresbronomschrijving
10x0000RESETreset pin, power-on reset ,brown-out,...
20x0002INT0externe interrupt vraag 0
30x0004INT1externe interrupt vraag 1
40x0006INT2externe interrupt vraag 2
50x0008TIMER2 COMPtimer/counter2 compare match
60x000ATIMER2 OVFtimer/counter2 overflow
70x000CTIMER1 CAPTtimer/counter1 capture event
80x000ETIMER1 COMPAtimer/counter2 compare match A
90x0010TIMER1 COMPBtimer/counter2 compare match B
100x0012TIMER1 OVFtimer/counter1 overflow
110x0014TIMER0 COMPtimer/counter0 compare match
120x0016TIMER0 OVFtimer/counter0 overflow
130x0018SPI, STCserial transfer complete
140x001AUSART,RXCUSART receive complete
150x001CUSART,UDREUSART data register empty
160x001EUSART,TXCUSART transmit complete
170x0020ADCADC conversion complete
180x0022EE_RDYEEPROM ready
190x0024ANA_COMPanalog comparator
200x0026TWItwo wire serial interface
210x0028SPM_RDYstore program memory ready
Voorbeeld: vector tabel van de ATmega32.

Voorrang en uitvoering

De ene interrupt heeft meer voorrang dan de andere. Dit wil zeggen dat als er 2 interrupts tergelijkertijd optreden, dan zal de interrupt met de hoogste voorrang uit gevoerd woreden. Bij een zelfde voorrang worden deze uitgevoerd volgens de volgorde van de vectortabel. Zolang een programma in een interrupt routine werkt, wordt het interruptsysteem automatisch gestopt (SEI = 0). Alle interrupt die tijdens deze tijd gebeuren worden onthouden. Bij een reti instructie wordt het interruptsysteem terug opgestart (SEI = 1). En worden dan de onthouden interrupts uitgevoerd in de volgorde waarin ze zijn gegenereerd.

terug