Uso di attach e detach interrupt

Ciao

Auguri di buona Pasqua.
Stavo usando le funzioni attach e detach interrupt nel mio codice.
In pratica non le uso nel setup ma all’interno di alcune funzioni nel loop.

In pratica il codice rappresenta una parte di un sistema di allarme, quando viene disattivato richiamo la detach e quando viene attivato chiamo l’attach.

L’interrupt gestisce un sensore reed. Quello che mi accade è questo:

  • Sistema attivato, faccio scattare il sensore e si attiva l’interrupt. Passaggio OK
  • disattivo l’allarme e riunisco i poli del sensore reed. Passaggio OK
  • Poi riattivo di nuovo l’allarme, e mi scatta subito l’interrupt appena fatta l’attach, senza che io lo abbia generato. Come se gli fosse rimasto in memoria qualcosa.

Appena rientro a casa vi giro il codice.

Quello che mi stavo chiedendo se fosse corretto quest’uso delle funzioni attach e detach.

Grazie

... infatti, devi pulire la interrupt flag che, quasi sicuramente, è rimasta comunque alzata. In funzione dell'interrupt e della MCU che usi, vai a vedere nel datasheet quale è il registro ed il bit che la contiene.

Guglielmo

Non basta eseguire un attach a una ISR fasulla e poi uno "giusto"?

Che comunque si può disabilitare l'azione della isr senza fare un detach esplicito

Certo, tutto si può fare ... ma perché complicare le cose quando basta cambiare il valore di 1 bit?

Registro EIFR (External Interrupt Flag Register), bit INTF0 o INTF1 a seconda dell'interrupt usato ...

Guglielmo

Altrimenti, basta mettere un if nella parte relativa all'allarme. In questo modo il sistema rimane attivo facendo solo accendere un LED, che può essere utile per verifiche.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.