NMI

© by Vittorio Crapella - i2viu

UN USO INSOLITO DI NMI

Il tutto é nato come risposta ad un E-Mail

La richiesta era:

<< Realizzando un progetto elettronico con un ST62 della Thomson sono "incappato" in un piccolo problema: quale è l' indirizzo di memoria da cui posso leggere lo stato del piedino di interrupt NMI? voglio precisare che non mi interessa controllare il fronte di discesa o di salita di tale ingresso, ma il suo stato

(1 o 0) per motivi un po' lunghi da spiegare nella presente.>>

La risposta fu:

<<... il pin NMI é normalmente a livello 1 e in tali condizioni lascia
girare il programma normalmente , quando NMI passa a 0
il programma che stava girando,ovunque si trova,
sospende il suo lavoro e va a gestire la routine che viene messa fra 

nmi_int e reti

eseguita questa routine dopo reti riprende l'esecuzione
da dove aveva lasciato il programma principale.......
riconoscere quando va a 0 non é difficile mentre il vero problema e
riconoscere quando ritorna a 1 ....il trucco forse c'é e consiste 
nel mettere una porta XNOR come nell'allegato nmi.gif che invio
...ottenendo un impulso verso 0 per ogni fronte del
livello da controllare e nella routine dell'nmi_int mettere quanto segue:

nmi_int  
  jrs   0,level,zero  ;se level=1 allora salto a zero
  set  0,level        ;altrimenti era 0 pertanto level=1
  ......              ;qui posso già fare quello che voglio 
                      ;abbinare  al livello 1
  reti
zero  res  0,level    ;metto level=0
  ......              ;qui posso già fare quello che voglio 
                       ;abbinare al livello  0
  reti

level

é la variabile che avrò definito per sapere il livello che devo
controllare attraverso NMI nell'inizzializzazione del programma si predisporrà
 level=1 che andrà a 0 , al primo scendere a 0 di NMI cioè del livello che devo controllare
...quando questo tornerà a 1 avrò un altro impulso di NMI cosi nella routine cambierò 
stato a level ricordando che é tornato a 1.