Pagina 1 di 1

Come fare per disaccoppiare la linea di interrupt?

MessaggioInviato: 20 apr 2011, 13:09
da MarcoNik
Ciao a tutti,
chiedo un vostro parere riguardo ad un nuovo problema che mi trovo ad affrontare.
Si tratta di questo: ho implementato un circuito basato su microprocessore atmega128 ed ho utilizzato la portd.0 come linea di interrupt su INT0.
A questa linea ho collegato i dispositivi di interrupt necessari al progetto.
quattro di questi sono dei pulsanti che, quando sono premuti, portano basso il livello e fanno scattare la ISR che discerne in base allo stato presente sulle porte associate ai pulsanti quale di questi e' stato premuto.
Fin qua nessun problema. Una resistenza di pull up mantiene alta la linea di portd.0 quando i pulsanti sono rilasciati e quando ne viene premuto uno torna bassa permettendo il buon funzionamento di tutto.
Adesso ho collegato con lo stesso sistema un dispositivo che necessita della gestione di interrupt, ma non e' un pulsante bensi' un modulino che riceve il segnale DCF di radiocontrollo.
Succede che al termine della sincronizzazione dell'orario lo spengo.
Anche qui nessun problema per la sincronizzazione.
Pero' l'uscita del modulo a questo punto (cioe' una volta tolta l'alimentazione) mantiene bassa la linea di interrupt impedendo il corretto funzionamento dei pulsanti...
Ho provato ad inserire una resistenza di pull up sull'uscita del modulo DCF ma non c'e' stato nulla da fare: resta comunque troppo bassa.
In effetti e' corretto che una volta spento il modulo DCF la sua uscita sia bassa (E' spento!) :ok:
mi chiedo come fare per riuscire a 'disaccoppiarla' dalla linea di interrupt nel momento del suo spegnimento.
Ogni suggerimento e' benvenuto!


Grazie 1000 per l'attenzione

Marco

Re: Come fare per disaccoppiare la linea di interrupt?

MessaggioInviato: 20 apr 2011, 13:48
da rusty
Ma l'alimentazione viene tolta solo al modulino o a tutto il sistema? Potresti provare ad inserire un tri-state e pilotarlo in modo adeguato per svolgere la funzione che desideri.

Re: Come fare per disaccoppiare la linea di interrupt?

MessaggioInviato: 20 apr 2011, 13:54
da IsidoroKZ
In linea di principio una porta open collector alimentata con il micro che passa il livello basso solo quando il modulo da` livello basso (segnale M) E c'e` l'alimentazione (segnale A). Una cosa del genere:



Al posto della porta open collector puoi mettere una porta normale con un diodo in serie all'uscita. Il tutto sempre che la tensione di alimentazione del modulo sia la stessa del micro.

La soluzione e` solo in linea di principio perche' in fase di spegnimento potresti trovare degli interrupt spuri. Non dovrebbe pero` essere un problema perche' a quel punto il sw sa che il modulo e` spento, e butta via l'interrupt.

Altra possibilita`, al posto di prendere il segnale A dall'alimentazione, lo prendi dal comando che esce dal micro e va a comandare l'accensione e spegnimento del modulo. In questo modo sei sicuramente compatibile con le tensioni di alimentazione e segnale.

Probabilmente si puo` anche fare con un diodo e un transistore, ma sono quelle schifezze che non si devono fare con la logica :-)


Re: Come fare per disaccoppiare la linea di interrupt?

MessaggioInviato: 20 apr 2011, 14:43
da MarcoNik
WOW!!!!
Tutto funziona di nuovo perfettamente!

Grazie 1000!
P.S.
il transistor sara' anche una schifezza, ma e' un grande!!

=D>