Go Down

Topic: Pulsante, interrupt e led (Read 646 times) previous topic - next topic

Standardoil

Domanda della mattina presto:
ma siamo sicuri (io non lo so) che i delay si comportino come si devono comportare a interrupts disattivati?
mi sembra di ricordare che la delay si basi su un interrupts, o faccio confusione?
Prima legge di Nelson (che sono io):
A parità di risultato
maggiore è il pensiero,
minore il lavoro.
Quindi prima di fare pensa!

Claudio_FF

#16
Apr 21, 2018, 08:57 am Last Edit: Apr 21, 2018, 09:06 am by Claudio_FF
Quote from: Silente
quindi agisce quando il pulsante viene rilasciato
Dipende da come è collegato. La condizione del ciclo while mi fa supporre che chiude verso massa una resistenza di pull-up (a margine: per evitare questi tipi di dubbi io preferisco non usare esplicitamente HIGH LOW ma definire delle label come PRESSED_LEVEL ecc che imposto all'inizio a seconda del collegamento hardware realizzato).

Quote from: mefore
Quindi ho la prova che nella while ci rimango finche c'è il pulsante premuto, quando lo rilascio il led verde si spegne e solo dopo che il led verde si è spento e sono trascorsi ulteriori 200ms vado a riarmare l'iterrupt. Ma spesso, oltre a spegnersi il led verde, mi cambia ancora di stato il led rosso.
Forse i fronti di discesa vengono catturati anche in condizione noInterrupts, e vengono gestiti alla riattivazione con interrupts. Le funzioni noInterrupts/interrupts agiscono solo sul bit di abilitazione globale, o anche su quelli specifici delle singole periferiche?
* * * *    if non è un ciclo   * * * *
* * * Una domanda ben posta è già mezza risposta. * * *

Standardoil

Forse i fronti di discesa vengono catturati anche in condizione noInterrupts, e vengono gestiti alla riattivazione con interrupts. Le funzioni noInterrupts/interrupts agiscono solo sul bit di abilitazione globale, o anche su quelli specifici delle singole periferiche?

credo che tu qui ci abbia preso...
stavo proprio pensando quello
secondo me le delay sembrano funzionare male perchè al ripristino degli interrupt esegue un (almeno uno, non so se tutti) uno degli interrupt che aveva in pancia, memorizzati ma non eseguiti
Guglielmoooo pensaciii tuuuuuuuuuu....
sulla musichetta del gigante buono Ferrero
Prima legge di Nelson (che sono io):
A parità di risultato
maggiore è il pensiero,
minore il lavoro.
Quindi prima di fare pensa!

Claudio_FF

#18
Apr 21, 2018, 10:33 am Last Edit: Apr 21, 2018, 10:34 am by Claudio_FF
Quote from: Standardoil
almeno uno, non so se tutti) uno degli interrupt che aveva in pancia, memorizzati ma non eseguiti
Direi uno solo per ogni periferica. Non ho mai visto architetture che accumulano/accodano in hardware più int request dello stesso tipo... anche perché se la richiesta precedente non è stata gestita quella seguente indica un nuovo evento (dello stesso tipo) che si sovrappone... la logica complessiva a questo punto può essere totalmente compromessa.

Resta il fatto che un segnale interrupt *non deve mai* essere un segnale "sporco".
* * * *    if non è un ciclo   * * * *
* * * Una domanda ben posta è già mezza risposta. * * *

Go Up