Ciao a tutti,
vorrei capire se esiste un modo per eseguire una funzione o una serie di istruzioni subito dopo essere uscito da una ISR.
So che al termine di una ISR il program counter ritorna ad eseguire da dove era stato interrotto.
Vorrei quindi eseguire una funzione precisa al termine nel loop senza riprendere da dove era interrotto, in quanto questa funzione è più prioritaria.
... credo tu possa settare una flag nella ISR, poi con un'if controllarla nel loop e resettarla una volta fatto quello che vuoi ... andra' comunque controllata nel loop, ma penso non sia un problema duplicare la if di controllo in piu punti per minimizzare i ritardi ...
Se è così prioritaria devi eseguirla NELLA ISR, che però è meglio che sia il più breve possibile, come già saprai. Per cui, se è lunghetta, non ti resta che fare come suggerisce ete, eventualmente organizzando le altre cose che fai nel loop() in brevi operazioni, controllando tra l'una e l'altra se è scattata la ISR, in mondo da reagire il più in fretta possibile.
Salve,
Da quello che ho capito quello che vuole fare lei é qualcosa di simile al debounce software di un tasto, in cui se una condizione resta vera per un po allora fai qualcosa.
Se così fosse credo possa essere sufficiente una roba tipo
SE sento la condizione vera
carico una variabile di condizione vera
Carico una variabile col tempo attuale
ESCO dal se
Entro in una while che controlla se il tempo é passato
Nella while metto solo una if dove controllo se non sento la funzione
Nella if scarico la variabile di condizione vera e faccio uscire dalla while.
Così facendo alla fine la condizione rimane vera solo se rimane per tutta la while.
Infine verifico con un if se é vera la condizione e nel caso chiamo una funzione.
Se poi fosse necessario, per evitate di sentire 2 volte una pressione troppo lunga sarebbe sufficiente una while condizione vera vuota, seguita dallo scarico della variabile condizione vera