Essi non sono necessariamente uguali a quelli del proprio statet nel primo punto degli ISR: Gli interrupt sono asincroni e quindi devono in qualche modo "interrompere" il lavoro del/dei processore/i principale/i.
Ad esempio, consente di guardare a questo codice MIPS decorato con indirizzi, che non fa nulla di utile:
4000. add $1, $2, $3
4004. sw $ra, 0($sp)
4008. jal subr # function call, sets $ra to 4012 and jumps to 4024
4012. lw $ra, 0($sp)
4016. jr $ra
4020.
4024. subr: sub $2, $1, $3
4028. jr $ra
Questo codice può essere handeled dal processore principale: le operazioni aritmetiche (linee 1, 7) vengono eseguiti dall'unità aritmetica, dall'accesso alla memoria (righe 2, 4) dal controller di memoria e i salti (righe 3, 5, 8) vengono eseguiti anche dalla CPU principale. (L'indirizzo effettivo di jal
viene impostato durante l'associazione del file oggetto.)
Questo è per le chiamate di funzione.In qualsiasi momento viene determinato, dove il codice è in questo momento e quale codice viene eseguito al momento successivo (ad esempio quando il contatore del programma viene incrementato: PC + = 4).
Ora arriva il momento, quando le tue funzioni fanno qualcosa di complicato ma vuoi comunque che il software reagisca su un colpo di chiave. Quindi entra in gioco un cosiddetto coprocessore. Questo coprocessore attende fino a quando si verifica qualche evento (come un colpo di tasto sulla tastiera) e quindi chiama il gestore di interrupt. Questo è un blocco di codice situato su un determinato indirizzo nella memoria.
Think, il processore è nel calcolo sopra, ma nel frattempo si desidera memorizzare il numero di tratti chiave all'indirizzo keys
. Poi si scrive un programma a partire dall'indirizzo 0x80000180
(questo è definito come l'indirizzo del gestore esibirci in MIPS):
lw $at, keys
addi $at, $at, 1
sw $at, keys
eret
Ora che cosa accade ad un tasto?
- Il coprocessore ottiene consapevole del tasto
- La corrente PC del procesor principale viene salvato
- Il PC del processore principale è impostato su 0x80000180, il codice di interrupt viene eseguita
- Sulla
eret
la Il PC è impostato sul PC del processore principale prima che si verificasse l'interruzione
- L'esecuzione del programma principale continua lì.
Qui v'è un interruttore dall'esecuzione normale interrompere movimentazione tra i passaggi 2 e 3 e di nuovo da 4 a 5.
Nota: ho semplificato questo molto, ma deve essere chiaro, come gli interrupt sono diversi dalle chiamate alle funzioni e il modo in cui l'hardware deve disporre di ulteriori funzionalità per la gestione degli interrupt.
Purtroppo non posso offrire risorse online su questo, dal momento che questo si basa su un copione scritto per i sistemi informatici;) – contradictioned
Così lo fa significa che per un microprocessore come 8051 o un microcontrollore 8091 che non ha un coprocessore avrà interrupt e chiamate di funzione uguali? Per favore aiutami, sono davvero confuso –
Non sono un esperto di microcontrollori, ma su questo sito c'è uno schema a blocchi dell'8051: http://aninditadhikary.wordpress.com/tag/intel-8051/ dove puoi vedere il 'Interrupt Control', che si trova accanto alla CPU, simile al coprocessore mips. – contradictioned