Algunas respuestas...
Antes que nada, sería bueno que tengas a mano la hoja de datos específica del micro que vas a utilizar, por si hay alguna diferencia. Lo que yo voy a decir, está basado en el "QG8", ya que no tengo tiempo de investigar otro ahora... No es garantía, pero generalmente las cosas son iguales dentro de la misma familia,pero... no es garantía.
Resumen: El Datasheet tiene TODAS las respuestas a nuestras preguntas (aunque a veces no lo creamos!).
1) El COP tiene la misión de reiniciar el micro a un lugar "conocido", cuando el programa "se pierde", ya sea por caer en un loop infinito, acceder a una dirección ilegal, ruido eléctrico, etc.
Si el programa de aplicación se pierde y no se restablece el contador del COP antes de un cierto tiempo de espera , se genera un reinicio del sistema para forzarlo a un punto de partida conocido.
2)Para que esto ocurra (funcione) debe habilitarse el COP escribiendo "uno" en la bandera COPE del registro SOPT1. Luego, tu código (programa) debe reiniciar el contador del COP periódicamente, de manera tal que el micro "sepa" que el programa esta fluyendo correctamente. Este reseteo del contador debe hacerse en el loop principal (Assembler) y no dentro de alguna Interrupción (ver hoja de datos para "mas datos" del porqué de esto).
3) El contador del COP se resetea escribiendo cualquier valor en el registro SRS.
4) Dicho reseteo del contador del COP (escribiendo algo en SRS) debe realizarse ANTES de que se venza el tiempo ("timeout") prefijado.
5) El Timeout puede fijarse con dos banderas:
- La COPCLKS del registro SOPT2 (establece cual es la fuente de clock para este timeout)
- La COPT del registro SOPT1 (selecciona si se usa "tiempo largo" o "tiempo corto")
En el Datasheet (capítulo que habla del COP) puede verse una tablita con los "efectos" que producen estas banderas.
Por ejemplo, si tenemos:
COPCLKS = 0 (usará fuente de clock de 1Khz)
COPT = 0 (usará el "tiempo corto" = 32 ciclos de 1mS, es decir, 32mS)
En estas condiciones, el contador del COP debe resetearse dentro de un tiempo menor a 32 mS.
Aplicaciones del COP? Bueno... con que nos recupere el funcionamiento del programa ante un fallo ya es suficiente! No conozco que tenga otra aplicación, si alguien la sabe, que nos cuente...
Espero haber sido claro, pero INSISTO:
El Datasheet tiene TODAS las respuestas a nuestras preguntas. Dicho de otro modo:
"El Datasheet es al programador lo que la Biblia al Pastor (o Cura, según el caso!!!)".
Saludos.
PD. Si me olvidé de algo, por favor, que alguien lo agregue... Gracias.