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.
... 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.
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.