baltimora Inserito: 5 gennaio 2012 Segnala Inserito: 5 gennaio 2012 (modificato) E' possibile attivare in un qualche modo un bit con fronte di salita ogni qual volta si richiama un blocco interrupt a tempo? Il bit poi dovrà essere utilizzato all'interno dello stesso blocco interrupt. Modificato: 5 gennaio 2012 da baltimora
Livio Orsini Inserita: 6 gennaio 2012 Segnala Inserita: 6 gennaio 2012 Vediamo se ho capito.Hai un timer che alla scadenza attiva un interrupt. All'ingresso della routine di servizio dell'interrupt vorresti mandare a "1" un bit. La cosa è fattibile, c'è solo il problema di chi resetta, e quando lo resetta, il bit.Io uso una funzione simile per verificare l'esatta temporizzazione o i tempi di ciclo.Entrando nella funzione sotto test scrivo tutti "1" su un'uscita analogica. Quando esco dalla funzione, come ultima istruzione, scrivo tutti "0" nella medesima uscita. Ovviamente le scritture son dirette, saqltando i registri immagine.In questo modo ottengo un segnale alto per la durata della funzione. Con un oscilloscopio posso verificare sia la durata della funzione, sia la temporizzazione di ciclo.Se ti serve avere un flag che cambia di stato puoi usare la medesima tecnica.
baltimora Inserita: 7 gennaio 2012 Autore Segnala Inserita: 7 gennaio 2012 (modificato) e se all'apertura del blocco provassi a portare un bit (come prima istruzione) ad 1 e a zero come ultima istruzione prima della chiusura utilizando set e reset? Modificato: 7 gennaio 2012 da baltimora
Livio Orsini Inserita: 8 gennaio 2012 Segnala Inserita: 8 gennaio 2012 Va benissimo, però se ci spiegassi anche lo scopo forse potremmo avere qualche suggerimento differente.
amed Inserita: 9 gennaio 2012 Segnala Inserita: 9 gennaio 2012 Se guardi un ingresso di periferia hai un fronte di salita quando l'ingresso passa da "0" ad "1".Se guardi un bit della memoria immagine hai un fronte di salita quando nella scansione precedente era nello stato logco "0" e nello stato logico "1" nella scansione attuale. Nel bit ausiliario dell'istruzione "P-TRIG", quando è letta ed eseguita, c'è lo stato logico del bit nella scansione precedente. Se il bit ausiliario è ritentivo e la rete diventa off e poi on con il bit della memoria immagine sempre on, non hai un nuovo impulsino sul fronte di salita. Nel caso il bit ausiliario sia non ritentivo hai un nuovo impulsino sul fronte.Nel tuo caso di un subroutine eseguita ad interrupt per una scansione ad intervalli regolari di tempo, forse vuoi (ma non ho capito bene) rilevare il fronte di salita di un bit che passa dallo stato "0" allo stato "1" nella stessa scansione usando 2 volte l'istruzione "P-TRIG" (segmenti identici). La prima volta la usi all'inizio della subroutine, la seconda volta la usi dopo le istruzioni di comando del bit del quale vui rilevare il fronte e dopo metti le istruzioni che usano l'impulsino. Non ho mai provato ma credo funzioni. Ciao
baltimora Inserita: 9 gennaio 2012 Autore Segnala Inserita: 9 gennaio 2012 (modificato) Va benissimo, però se ci spiegassi anche lo scopo forse potremmo avere qualche suggerimento differente.Avevo la necessità di far si che determinate operazioni all'interno del blocco potessero essere eseguite solo se all'apertura del medesimo, fossero attivi dei consensi provenienti da altri blocchi. Se (i contatti si chiudevano) quando il blocco era già in esecuzione non dovevano essere eseguite Modificato: 9 gennaio 2012 da baltimora
triodegecio Inserita: 14 gennaio 2012 Segnala Inserita: 14 gennaio 2012 non devi fare nullamentre viene elaborato l interupt non viene eseguito nientaltro quindi i bit scritti in altre parti del sw non vengono modificati
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora