Tengo problemas con un sketch luego que añadí un WatchDog.
Ahora se reinicia constantemente encendiendo el led en pin 13. y no me deja cargar ningun otro sketch
Ya resolvi, envie a cargar el sketch nuevo justo antes que terminara la compilación conecte el arduino en el puerto USB.
#include <avr/wdt.h>
byte dato[40];//={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int cuen_dat = 0;
boolean negativo = false;
boolean inestable= false;
boolean overload= false;
boolean bruto=false;
int bits = 4;
unsigned long tiempo;
void setup(){
pinMode(13,OUTPUT);
pinMode(3,INPUT);
digitalWrite(3,HIGH);
Serial.begin(115200);
Serial.println("LISTO");
digitalWrite(21,HIGH);
attachInterrupt(2, tomadatos, RISING);
wdt_enable(WDTO_500MS);
}
void tomadatos(){
if(bits==0){
bits=4;
cuen_dat++;
}
bits--;
bitWrite(dato[cuen_dat], bits, digitalRead(3));
if (cuen_dat==1 && digitalRead(3)==0){
switch (bits){
case 3:
overload= true;
break;
case 2:
negativo= true;
break;
case 1:
inestable= true;
break;
case 0:
bruto=true;
break;
}
}
wdt_reset();
tiempo= millis();
}
void loop(){
wdt_reset();
if(millis()-tiempo > 200 && dato[1]>0){
noInterrupts();
// Serial.print(dato[0],HEX);
// Serial.print(dato[1],DEC);
if (overload== false){
switch (inestable){
case false:
Serial.print("ST,");
break;
case true:
Serial.print("US,");
break;
}
}
else {Serial.print("OL,");}
switch (bruto){
case false:
Serial.print("NT,");
break;
case true:
Serial.print("GS,");
break;
}
switch (negativo){
case false:
Serial.print(" ");
break;
case true:
Serial.print("-");
break;
}
for (int i = 2; i < 8; i++){
Serial.print(dato[i],HEX);
dato[i]=0;
}
cuen_dat=0;
bits=4;
negativo = false;
inestable= false;
overload= false;
bruto=false;
dato[0]=0;
dato[1]=0;
tiempo= millis();
interrupts();
}
}