Hola gente!
Explicaré un poco mejor de que me han salvado mis 'checkpoints'. Además del caso que he comentado en el link que he puesto un poco más arriba tengo otra situación un tanto curiosa.
Teniamos un equipo que consta de varias PBA´s conectadas entre si. El caso es que una vez me llamó un operario diciendome que una de las PBA´s se reiniciaba cuando se enchufaba el equipo. Era una cosa que núnca me habia pasado y me puse a hacerle pruebas como un loco al cacharro.
Una o dos de cada 10 veces que encendíala el equipo la maldita PBA se reseteaba. Al final me di cuenta que el operario había cortado el cable de alimentación demasiado largo y... se paseaba por encima de la PBA que se reiniciaba (el cable de 220V de la red tocaba la PBA y el lomo del micro).
Mi compañero se estaba comiendo un bocata y... ni corto ni perezoso le pedí el papel de aluminio con el que tenía envuelto el bocadillo. Apantalle la PBA y todo fenomeno paranormal dejó de suceder. Quité el papel de aluminio y otra vez con los reinicios, es decir, era el cable de 220V seguro.
Muy bien... por que os he contado todo este rollazo?? Pues porque mi software tenía implementado el 'checkpoint securty system' jejej y gracias a el la PBA se daba cuenta del salto en el contador de programa debido al ruido y se autorreiniciaba. Cogí una versión del software sin los chequpoint y... puufff!!! como fallaba la cosa. Con el software sin checkpoints en lugar de reiniciarse se pegaba unas colgadas de escandalo.
Entonces fué cuando decidí incluir este sistema en todos mis programas. Así evitamos que el ruido, ya sea por un mal diseño, por una mala colocación del equipo, o por lo que sea que se nos escape del entendimiento electrónico cuadrado que tenemos, nos cuelgue nuestos queridos cacharros.
Otro proyecto en el que puedo contrastar la eficacia de los checkpoints es en una fuente de alimentación que implementé y que tenía unos cuantos relés. Antes de descubrir los truquillos para evitar el ruido de los relés hice un montón de prototipos que fallaban más que una escopeta de feria. Al final conseguí un diseño del cual nunca he detectado nungún cuelgue pero... despues del buen resultado que me dieron los checkpoints decidí implementarlos también en este diseño.
Lo que hize fue... coger el peor diseño que tenía (uno de los primeros que insolé y que tenía un índide de cuelgues sobrehumano) e implementé el checkpoint security system hasta que conseguí que el equipo no se me colgara núnca. Tenía muchísimo ruido por los relés pero lo detectaba y rearmaba la fuente (tan rápido que el usuario no se daba ni cuenta). Cuando el equipo con el diseño malo se paso una semana encendido y funcionando a la perfección, cogí ese software y lo metí en el diseño bueno.
Nunca detecté ningún cuelgue en el hardware final que hice pero ademas... con el nuevo software que ya tenía y que era capaz de soportar tantos cuelgues, mi seguridad en el equipo es total. Se puede colgar? Pues a lo mejor si, pero, la probabilidad es ínfima. Resultado?? Iván duerme a pierna suelta todas las noches sin ningún miedo a que llamen clientes furiosos jejej
Bueno, os invito a que lo probeis. A mi me da muy buenos resultados.
PD: Diego, intenta implementarlo que ya verás como te puedes evitar un monton de problemas. Puedes hacer 2 cosas:
Cosa 1 -> Cuando detectes que la cuenta de checkpoints no se ha hecho correctamente, llama a una función que se quede en un bucle infinito con algún parpadeo característico y con refresco de Watchdog. Así la próxima vez que veas el equipo podras saber si es por el motivo del ruido los cuelgues.
Cosa 2 -> Cuando detectes que la cuenta de checkpoints no se ha hecho correctamente, llama a una función que resetee el PIC pero antes guarda en la eeprom el número de cuelgues. Así tras unas semanas de funcionamiento podrás distinguir si los cuelgues son por el ruido y el índice de reseteos que ha tenido el equipo.
Ufff... que panzá de escribir jejeje. Un saludo desde Alicante!