NMI
© by Vittorio Crapella - i2viu
UN USO INSOLITO DI NMI
UN USO INSOLITO DI NMI
Il tutto é nato come risposta ad un E-Mail
La richiesta era:
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:
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
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
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.