ELEMANIA
Z80 - Interrupt non mascherabili
Interrupt non mascherabili

Gli interrupt non mascherabili  sono interruzioni che non si possono in alcun modo disabilitare. In altre parole, in presenza di una richiesta di interrupt non mascherabile il µP è costretto ad abbandonare in ogni caso il normale flusso di esecuzione per servire l'interrupt. Per questo motivo gli interrupt non mascherabili sono spesso usati per gestire situazioni di emergenza come un calo di tensione improvviso o altre condizioni che richiedono una risposta immediata da parte del µP,

Nello Z80 l'interrupt non mascherabile viene innescato quando sul piedino NMI (Not Maskable Interrupt) del componente arriva un impulso negativo (attivo a livello basso). Dopo aver ricevuto in tal modo una richiesta di interrupt non mascherabile,  lo Z80 porta a termine l'esecuzione dell'istruzione corrente ed effettua una chiamata automatica a una routine di gestione dell'interrupt non mascherabile all'indirizzo (fisso) 0066h in memoria.

All'arrivo di una richiesta di interrupt non mascherabile lo Z80:

  1. salva il contenuto del program counter (PC) sullo stack (in modo da poterlo ripristinare al termine della routine di gestione dell'interrupt);
  2. disabilita gli interrupt mascherabili e salva lo stato del flip flop IFF;
  3. effettua un salto all'indirizzo 0066h

Il ritorno al programma interrotto non avviene con una RET, ma con la particolare istruzione RETN dove la "N" indica trattarsi del ritorno da una routine di gestione di un'interrupt non mascherabile. La RETN ripristina il program counter e gli interrupt mascherabili e torna all'istruzione successiva a quella in cui si era verificato l'interrupt.

Spesso, per evitare che la routine di servizio dell' interruzione occupi un' area di memoria utile per altri scopi, conviene collocare la routine in un'altra zona della memoria e inserire nella locazione 066H una semplice istruzione di salto (JUMP).

La figura qui sotto mostra un semplice circuito basato su un comparatore per inviare una richiesta di interrupt non mascherabile allo Z80 nel caso in cui la tensione di alimentazione scenda al di sotto di una soglia prefissata:

La corrispondente routine di servizio dell'interrupt potrebbe per esempio attivare una segnalazione di allarme per segnalare la situazione di emergenza oppure potrebbe salvare il contenuto dei registri interni e della RAM su un supporto di memoria non volatile.

 

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it