ESP07 Error: ets Jan 8 2013,rst cause:4, boot mode:(1,7)

Buenas noches,

Estaba haciendo un proyecto sobre el control de una bombilla a través de un servidor web basado en el modulo wifi ESP07 (variante del ESP8266) y mi problema es el siguiente: Puedo interactuar con la luminosidad presencialmente, es decir, tengo botones para encender y apagar la luz (pudiendo atenuarla si pulso el botón de subir) y funciona correctamente, el problema llega cuando intento hacer eso mismo desde el servidor wifi que he creado me sale el error:

Soft WDT reset

ctx: sys 
sp: 3fffecf0 end: 3fffffb0 offset: 01b0

>>>stack>>>
3fffeea0:  00000000 000007c6 00000000 3fffee34  
3fffeeb0:  00000000 00000000 4bc6a7f0 00000000  
3fffeec0:  3fffeee0 3fffeee0 00000004 4022b9da  
3fffeed0:  00000000 00000008 00000018 00000000  
3fffeee0:  3ffea498 3ffea4b0 000007c6 00000001  
3fffeef0:  00000018 0000000c 00000000 60000600  
3fffef00:  0aac66b5 3fff059c 3ffefbb8 4020fd11  
3fffef10:  00000000 3ffeec78 00000000 00000000  
3fffef20:  4022b7f8 3ffeec78 3ffefbe0 60000600  
3fffef30:  4022e40d 3ffeec78 3ffefbe0 0aac66b5  
3fffef40:  4022e452 3fffdab0 00000000 3fffdcb0  
3fffef50:  3ffefbf0 3fffdad0 3fff03f4 402079e7  
3fffef60:  40000f49 40000f49 3fffdab0 40000f49  
3fffef70:  40000e19 40001878 00000001 00000000  
3fffef80:  3fffff10 aa55aa55 000000ec 40104424  
3fffef90:  4010442a 00000001 00000000 0541e12d  
3fffefa0:  4010000d 200e51cb 7afd378b 953d9a1b  
3fffefb0:  00000000 3fffef4c 00000000 3fffff08  
3fffefc0:  3fffffd0 00000000 00000000 feefeffe  
3fffefd0:  feefeffe feefeffe feefeffe feefeffe  
3fffefe0:  feefeffe feefeffe feefeffe feefeffe  
3fffeff0:  feefeffe feefeffe feefeffe feefeffe  
3ffff000:  feefeffe feefeffe feefeffe feefeffe  
3ffff010:  feefeffe feefeffe feefeffe feefeffe  
3ffff020:  feefeffe feefeffe feefeffe feefeffe  
3ffff030:  feefeffe feefeffe feefeffe feefeffe  
3ffff040:  feefeffe feefeffe feefeffe feefeffe  
3ffff050:  feefeffe feefeffe feefeffe feefeffe  
3ffff060:  feefeffe feefeffe feefeffe feefeffe  
3ffff070:  feefeffe feefeffe feefeffe feefeffe  
3ffff080:  feefeffe feefeffe feefeffe feefeffe  
3ffff090:  feefeffe feefeffe feefeffe feefeffe  
3ffff0a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff0b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff0c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff0d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff0e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff0f0:  feefeffe feefeffe feefeffe feefeffe  
3ffff100:  feefeffe feefeffe feefeffe feefeffe  
3ffff110:  feefeffe feefeffe feefeffe feefeffe  
3ffff120:  feefeffe feefeffe feefeffe feefeffe  
3ffff130:  feefeffe feefeffe feefeffe feefeffe  
3ffff140:  feefeffe feefeffe feefeffe feefeffe  
3ffff150:  feefeffe feefeffe feefeffe feefeffe  
3ffff160:  feefeffe feefeffe feefeffe feefeffe  
3ffff170:  feefeffe feefeffe feefeffe feefeffe  
3ffff180:  feefeffe feefeffe feefeffe feefeffe  
3ffff190:  feefeffe feefeffe feefeffe feefeffe  
3ffff1a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff1b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff1c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff1d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff1e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff1f0:  feefeffe feefeffe feefeffe feefeffe  
3ffff200:  feefeffe feefeffe feefeffe feefeffe  
3ffff210:  feefeffe feefeffe feefeffe feefeffe  
3ffff220:  feefeffe feefeffe feefeffe feefeffe  
3ffff230:  feefeffe feefeffe feefeffe feefeffe  
3ffff240:  feefeffe feefeffe feefeffe feefeffe  
3ffff250:  feefeffe feefeffe feefeffe feefeffe  
3ffff260:  feefeffe feefeffe feefeffe feefeffe  
3ffff270:  feefeffe feefeffe feefeffe feefeffe  
3ffff280:  feefeffe feefeffe feefeffe feefeffe  
3ffff290:  feefeffe feefeffe feefeffe feefeffe  
3ffff2a0:  feefeffe feefeffe feefeffe feefeffe  
3ffff2b0:  feefeffe feefeffe feefeffe feefeffe  
3ffff2c0:  feefeffe feefeffe feefeffe feefeffe  
3ffff2d0:  feefeffe feefeffe feefeffe feefeffe  
3ffff2e0:  feefeffe feefeffe feefeffe feefeffe  
3ffff2f0:  feefeffe feefeffe feefeffe feefeffe  
3ffff300:  feefeffe feefeffe feefeffe feefeffe  
3ffff310:  feefeffe feefeffe feefeffe feefeffe  
3ffff320:  feefeffe feefeffe feefeffe feefeffe  
3ffff330:  feefeffe feefeffe feefeffe feefeffe  
3ffff340:  feefeffe feefeffe feefeffe feefeffe  
.
. (no pongo todas las filas por no ocupar el maximo de caracteres en un post)
.
3fffff80:  40208120 00000000 00001388 3fff03f4  
3fffff90:  3fffdad0 00000000 3fff03ec 3fff03f4  
3fffffa0:  00000000 00000000 00000001 40207a4d  
<<<stack<<<

 ets Jan  8 2013,rst cause:1, boot mode:(1,7)


 ets Jan  8 2013,rst cause:4, boot mode:(1,7)

wdt reset

He estado buscando información acerca sobre ese error y no he llegado a una conclusión clara. Viendo mi código creo que se debe a que tengo un attachInterrupt que se activa cada vez que onda de la red eléctrica pasa por cero (cada 10 ms). Pero la única forma que he encontrado para poder hacer que funcione el atenuador de luminosidad es de la siguiente forma:

1.- Declaro el attach en el void setup().
2.- llamo a la funcion de attach.

El error creo que se debe a que el attach se llama cada 10 ms y, dentro de la funcion a la que se llama se pasa 8ms aprox en delay y por tanto no da tiempo a realizar la llamada a la pagina web, pero no he encontrado otra forma de que funcione el atenuador de luz si no es con ese delay.

Adjunto el codigo del main y de la funcion en concreto de zero crossing. A ver si alguien me podria decir como hacer o bien no realizar el attach para que no se llame cada 10ms y deje libre el micro para poder hacer llamadas al servidor, o bien, eliminar el delay de 8ms aprox dentro de la funcion que deja el micro bloqueado.

void setup(void){
  Serial.begin(115200);
  //TRIAC
  pinMode(14, OUTPUT);
  // initialize the button pin as a input:
  pinMode(5, INPUT); //Resistencia de pullup interna
  pinMode(4, INPUT); //Resistencia de pullup interna
  pinMode(13, INPUT);
  // initialize the LED as an output:
  pinMode(2, OUTPUT);
  
  initDHT();

  //Conectamos el ESP a nuestro wifi
  WiFi.begin(ssid, password);     
  Serial.println(""); 
  
  // Esperando para conectarse
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
 
  //Si la conexión se ha realizado correctamente 
  Serial.println("");
  Serial.print("Conectado a ");
  Serial.println(ssid);
  Serial.print("IP: ");
  Serial.println(WiFi.localIP());  //direccion IP asignada a nuestra ESP

  //Creación de las páginas asociadas al servidor
  server.on("/", handleRoot);     
  server.on("/pageTH", handleTH);
  server.on("/pageL_off", handleL_off);
  server.on("/pageL_on_50", handleL_on_50);
  server.on("/pageL_on_100", handleL_on_100);

  //Servidor arrancado
  server.begin();                  
  Serial.println("HTTP server started");
  attachInterrupt(13, zero_crossing, RISING);
}

//==============================================================
//                     LOOP
//==============================================================
void loop(void){
  server.handleClient();          //Handle client requests
  gettemperature();
  comprobarpulsador();
}

Y por otro lado la funcion zero_crossing (dimming es una variable que tiene valor desde 0 - 128 que doy valor yo para controlar la luminisidad).

void zero_crossing()  
// function to be fired at the zero crossing to dim the light
{
  int dimtime = (75*dimming);    // For 60Hz =>65   
  delayMicroseconds(dimtime);    // Off cycle
  digitalWrite(14, HIGH);   // triac firing
  delayMicroseconds(10);         // triac On propogation delay
  digitalWrite(14, LOW);    // triac Off
}

Muchas gracias.

No es un error, es la protección de watchdog de tu ESP que te avisa que el códigoi se cuelga en algun punto. Revisa que linea de código es la responsable.

Muchas gracias por contestar,

¿Cómo puedo saber yo en que linea se cuelga el código?, pensaba que era porque dentro de una interrupción realizo un delay, y que como la interrupción se llama cada 10ms y el delay dentro de la interrupción es de aprox 8ms no daba tiempo a ejecutar ninguna otra cosa que no fuera esa interrupción.

Un saludo.

Es un buen punto, prueba por ahi.