Autor Tema: Utilizar COPD en el HCS08  (Leído 2620 veces)

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

Desconectado Lovzi

  • PIC10
  • *
  • Mensajes: 4
Utilizar COPD en el HCS08
« en: 12 de Mayo de 2014, 23:51:58 »
Hola, disculpen ando investigando acerca del watchdog (en assembler) y sus usos en el hcs08, pero todo lo que encuentro es muy simple y no me lo explican como quisiera, alguno me puede decir ¿cómo es que funciona?,¿ con qué registros se maneja? ¿ cómo puedo cambiar los tiempos de reset? y sus aplicaciones. Se los agradeceré mucho que tengan excelente día . :g)
« Última modificación: 13 de Mayo de 2014, 00:06:49 por Lovzi »

Desconectado Freescalin

  • PIC10
  • *
  • Mensajes: 22
Re: Utilizar COPD en el HCS08
« Respuesta #1 en: 13 de Mayo de 2014, 14:57:06 »
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.
"El Datasheet es al Programador lo que la Biblia al Predicador"

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Utilizar COPD en el HCS08
« Respuesta #2 en: 13 de Mayo de 2014, 15:19:28 »
Mas claro echale agua. Dos aclaraciones. La primera es que el programa vuelva a punto seguro basicamente es que el programa se reinicia y vuelve a ejecutarse desde el Reset. La segunda, algunos miembros de la familia tienen la opción que la base de tiempo del COP pueda ser seleccionada desde el cristal o desde una base de tiempos interna. La primera tiene mucha más precisión pero si el cristal deja de funcionar el COP también lo hace. La segunda tiene mucho mas precisión pero te garantiza que funciones siempre. Yo siempre que puedo elijo la segunda.

Saludos !
« Última modificación: 13 de Mayo de 2014, 15:37:53 por RICHI777 »