Autor Tema: ¿Qué lleva a un pic a resetearse automáticamente?  (Leído 1355 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado smrz

  • PIC10
  • *
  • Mensajes: 20
¿Qué lleva a un pic a resetearse automáticamente?
« en: 15 de Julio de 2013, 08:08:57 »
Buenos días,

Suelo usar dos compiladores dependiendo el micro que vaya a usar, para los de 8bits uso CCS, y para 16bits uso mikroC. He programado códigos bastante grandes con CCS, aunque no tanto como el que tengo ahora entre manos con mikroC, que genera un hex de unos 241kB . En este proyecto uso comunicación con el exterior a través de ethernet mediante una página web, la cual muestra gráficas, peticiones asíncronas, etc.
Pues bien, según ha ido creciendo mi programa, he ido teniendo problemas algo extraños. Los primeros se basaban en que no se mostraban en la web algunas de las peticiones asíncronas y la solución que le encontré me parece aún mas curiosa, llamando a la siguiente función en el main, antes de entrar en el bucle infinito:

Código: [Seleccionar]
   void dummyFunct()
   {
       delay_ms(10);
       I2C1_Is_Idle();
       I2C1_Start();
       delay_ms(2);
       I2C1_Stop();
       delay_ms(10);
   }

Esto hacía que cuando mostraba datos en la web de manera asíncrona, se mostrasen correctamente ¿?¿ En primer lugar pensé que sería problema de mi interfaz i2c, ya que uso un sensor sht11 con linea de reloj común al bus i2c (conectado al mismo pin del micro, la línea de datos es otra totalmente independiente) deshabilitando y habilitando el bus i2c cuando leo el sensor de temperatura.
Sin embargo, han aparecido nuevos problemas. Según he ido aumentando el código, han sido más comunes, y ya no ocurre sólamente al realizar peticiones asíncronas. He añadido una llamada a una función la cual no tiene mucha ciencia, un par de bucles for, un bucle while y poco más, todo cosas similares a otras cosas que funcionan bien. Tras compilar correctamente y refrescar la ip del mismo en el navegador, este no devuelve la web y se ¡¡reinicia automáticamente!! (lo se por un led que parpadea sólo cuando se inicia el micro). Uso un watchdog, pero lo tengo fijado a 4segundos, mientras que el reinicio del micro es casi instantáneo al solicitar la web, curiosamente a los pings responde bien sin reinicios.
Según las estadísticas que me ofrece el compilador, uso un 2% de RAM y un 25% de ROM.
Y aquí mi pregunta, ¿qué puede provocar un reinicio del micro? Yo pensaba que o se quedaba colgado o saltaba el watchdog, ¿pero reinicio por su propia cuenta? He descubierto los pantallazos azules embebidos?  :-/
Añadir que ya en su momento tuve problemas con este mismo proyecto ya que el programador de mikroE no estaba preparado para códigos tan grandes, y a partir de cierto tamaño daba error, a los pocos días me enviaron un firmware que solventó este problema.

Vaya tocho me ha quedado... saludos y gracias por leerme!
En resumen... senos y cosenos

Desconectado Darkman_A

  • PIC18
  • ****
  • Mensajes: 288
Re: ¿Qué lleva a un pic a resetearse automáticamente?
« Respuesta #1 en: 15 de Julio de 2013, 09:33:13 »
Hiola.
¿Que micro estas usando?
Saludos.

Desconectado smrz

  • PIC10
  • *
  • Mensajes: 20
Re: ¿Qué lleva a un pic a resetearse automáticamente?
« Respuesta #2 en: 15 de Julio de 2013, 09:39:54 »
Un 24FJ256GB206 con una placa Modtronix SBC66EC

Saludos!
En resumen... senos y cosenos

Desconectado smrz

  • PIC10
  • *
  • Mensajes: 20
Re: ¿Qué lleva a un pic a resetearse automáticamente?
« Respuesta #3 en: 15 de Julio de 2013, 10:32:39 »
Barajo dos posibles opciones más claras:

Reset por CM:  lo descarto ya que una vez fijo los bits de configuración no los vuelvo a modificar (creo que en este caso seria un cambio en los fuses, ¿estoy en lo cierto?), salvo que el compilador meta alguna instruccion que desconozco
Reset por TRAPR: Esta es la que mas temo. En la página 68 del datasheet habla de "extended data space". Añaden una nota que accesos a la página 0 en el EDS pueden provocar errores de trap. ¿Creeis que por aquí vayan los tiros y yo o el compilador me hagamos esto en alguna parte del código?

En resumen... senos y cosenos

Desconectado smrz

  • PIC10
  • *
  • Mensajes: 20
Re: ¿Qué lleva a un pic a resetearse automáticamente?
« Respuesta #4 en: 26 de Julio de 2013, 09:41:22 »
¿Alguien podría explicarme que es concretamente EDS? Es decir, ¿el micro la trata como memoria RAM normal? ¿Tiene algunas características especiales? Mis tiros van por si se está intentando acceder a zonas prohibidas o inexistentes...

Saludos!
En resumen... senos y cosenos