Hola a todos;
Estoy haciendo un programita que hace lo siguiente.
tengo un interruptor a la interrupcion1 y al pin4
Cuando el interruptor se pone a 0 entra en modo sleep , pero no me escribe "me voy a dormir" y se duerme.
cuando el interruptor se pone a 1 se resetea por software y empieza a funcionar perfectamente.
Que puede pasar , que no me escribe cuando se va a dormir?
Tambien me gustaria eliminar el pin4 pero no se como
os dejo el programa
//sleep_power_down con un interruptor e interrupcion INT1
//cuando el interruptor se pone a 0 sleep power down
//cuando el interruptor se pone a 1 despierta y reseteate
#include <avr/sleep.h>
#include <avr/power.h>
void setup() {
// put your setup code here, to run once:
pinMode(3,INPUT);
pinMode(4,INPUT);
pinMode(13,OUTPUT);
Serial.begin(9600);
//configurar INT1
cli(); // Aca se desactivan las interrupciones, no antes.
EICRA |= 1 << ISC00 ; //Int1 en rising
EIMSK |= 1 << INT1; // elijo la interrupcion externa pin3
sei();
Serial.println("Configuracion completada");
}
void loop() {
// put your main code here, to run repeatedly:
Serial.println("Despierto.");
digitalWrite(13,HIGH);
delay(100);
digitalWrite(13,LOW);
if(!digitalRead(4)){
Serial.println("ME voy a dormir");
delay(50);
set_sleep_mode (SLEEP_MODE_PWR_DOWN);
sleep_enable();
sleep_cpu (); // one cycle
}
}
ISR(INT1_vect){
asm ("jmp 0"); //reset por software
}
Os agradeceria que me pudieseis ayudar.
un saludo