Vai al contenuto
PLC Forum


Domanda Su Interrupt


MAURO+

Messaggi consigliati

Ciao,volevo sapere se qualcuno mi poteva dare una risposta a questa domanda:

se io scrivo una riga di programma un istruzione che mi attiva un interrupt ,quando l'interrupt finisce il programma riprende le sue istruzioni dall'ultima riga che aveva lasciato o quella successiva??

esempio : riga 75 istruzione che attiva l'interrupt

inizio interrupt

fine interrupt

riga 76 ripresa del programma ,giusto ??

grazie,Mauro

Link al commento
Condividi su altri siti


Questo dipende dal tipo di core utilizzato. Alcuni processori servono gli interrupt prima dell'esecuzione dell'istruzione alcuni dopo. Generalmente abbiamo tre fasi principali denominate FETCH,DECODE,EXECUTE. In molti processori il campionamento avviene prima della fase di FETCH.

Ovviamente qui stiamo parlando di "asintoti" ... nel senso .... stiamo analizzando il caso di interrupt campionato a cavallo di due fetch successive di istruzioni macchina.

Per i moderni processori la cosa si complica un pochino. Se il processore ha una tecnologia pipelined (coda di istruzioni), il campionamento dell'interrupt puo' avvenire durante la fase di esecuzione effettiva dell'istruzione anche se questa e' gia' stata decodificata all'interno della pipeline, anche qui non ci sono regole precise, dipende dall'architettura.

Se parli di linguaggi ad alto livello (C,Basic etc..) allora non c'e' una corrispondenza diretta tra la riga che hai scritto ed il codice generato. Una semplice riga di "C" ti puo generare piu' istruzioni macchina e l'interrupt puo' scatenarsi anche all'interno delle stesse istruzioni che compongono una riga di codice

Poi dipende da che tipo di interrupt stai generando, puoi generare interrupt hardware o software. Poi entrano in gioco schemi di priorità e latenze delle periferiche ...

Se hai un requisito specifico da seguire magari spiega meglio il tuo problema ...

RT

Link al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...