Domanda:
Cosa sta causando il risveglio del mio Uno?
craigkoiter
2014-07-08 23:16:47 UTC
view on stackexchange narkive permalink

NOTA: questo codice funzionava perfettamente in un altro programma.

Ho un semplice pezzo di codice che mette in pausa Arduino. Quando è finito e integrato nel mio progetto, si riattiverà il processore solo quando un allarme proveniente da un RTC esterno attiva uno degli interrupt hardware.

  #include <avr / sleep.h> # include <avr / power.h>void setup () {Serial.begin (9600);} void loop () {set_sleep_mode (SLEEP_MODE_PWR_DOWN); // modalità deep sleep Serial.println ("Il dispositivo sta per dormire ..."); sleep_enable (); // mette il dispositivo in stato di stop sleep_disable (); // Il dispositivo si riavvia qui alla riattivazione Serial.println ("Il dispositivo è sveglio ..."); ritardo (1000); // per rallentare l'output seriale}  

In teoria, il programma dovrebbe arrestare il processore a tempo indeterminato perché non c'è nulla disponibile per riattivarlo.

Tuttavia, il il dispositivo continua a svegliarsi immediatamente dopo lo spegnimento.

Ho provato ad allegare le interruzioni sperando che fosse una sorta di funzione anomala del watch-dog. Ho provato a legare i pin di interrupt a + 5V e anche (in un tentativo separato) a GND. Niente ha aiutato.

Cosa causa il costante risveglio del processore (e / o programma)?

Una risposta:
#1
+8
Ignacio Vazquez-Abrams
2014-07-08 23:28:39 UTC
view on stackexchange narkive permalink

sleep_enable () consente all'MCU di dormire, ma non lo fa dormire. Chiama sleep_cpu () dopo l'abilitazione.

Non posso credere di averlo trascurato, funziona perfettamente.


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...