Hola, quería hacer un deep sleep en el arduino,pero después deejecutar éste programa el arduino no responde y windows no es capaz de reconocerlo.
He realizado un reset ni por esas, alguna manera de que vuelva a funcionar o lo doy por muerto.
void setup() {
Serial.begin(9600);
pinMode(2, INPUT_PULLUP); // Configura el pin 2 como entrada con resistencia pull-up
attachInterrupt(digitalPinToInterrupt(2), interruptHandler, CHANGE); // Asocia la interrupción al pin 2
}
void loop() {
Serial.println("Entrando en modo de bajo consumo profundo...");
SCB->SCR |= SCB_SCR_SLEEPDEEP_Msk; // Activa el modo de bajo consumo profundo
__DSB(); // Barrera de sincronización de datos
__WFI(); // Entra en el modo de espera hasta que se produzca una interrupción
}
void interruptHandler() {
Serial.println("Interrupción detectada, despertando...");
// Realiza las tareas necesarias después de despertar del modo de bajo consumo profundo
detachInterrupt(digitalPinToInterrupt(2)); // Desasocia la interrupción del pin 2
SCB->SCR &= ~SCB_SCR_SLEEPDEEP_Msk; // Desactiva el modo de bajo consumo profundo
delay(1000); // Pequeña pausa para evitar rebotes en la entrada
attachInterrupt(digitalPinToInterrupt(2), interruptHandler, CHANGE); // Vuelve a asociar la interrupción al pin 2
}