TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: PicKetero en 08 de Agosto de 2004, 20:55:00

Título: Como convive el WDT y TMR0 .... ?
Publicado por: PicKetero en 08 de Agosto de 2004, 20:55:00
    Tengo una pregunta que hace tiempo que me la vengo haciendo y no he visto hasta ahora que traten este tema (si es que vale la pena ):z  je je je ) .
     Bueno, en el caso que en mi programa esté utilizando el TMR0 para generar cada determinado tiempo interrupciones en la cual hago determinadas acciones, pero en el caso que quiero controlar que el flujo de mi programa no se "salga del camino" sea por ruido o por lo que fuere, como se hace para pasar de TMR0 a WDT sin que el período de tiempo en el que TMR0 genera las interrupciones se alteren por haber pasado a utilizar el WTD ?

    Soy consciente de que puedo estar preguntando algo medio enredado, pero para mi es algo que no está muy claro.

    Desde ya muchas gracias por su ayuda !!!!!
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: RGL en 09 de Agosto de 2004, 04:36:00
El TIMER0 tu lo controlas pero el WD no lo controlas, es un hardware que va a su bola, por así decirlo, cada x tiempo si tu no lo reseteas te resetea el micro. Nada más. Lo único que puedes cambiar es el tiempo de refresco. Nada más. Lo que tu puedes hacer si lo conectas, es resetearlo en tus rutinas, cada x tiempo para que no te resetee el micro. Con el timer puedes ir modulando tu programa que haga esto o aquello, etc. Enfin, son dos partes de hardware diferentes y completamente independientes. Solo comparten un prescaler que se lo asignas a uno o al otro, pero nada más.

Saludos
Ricky
Madrid-España
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Nocturno en 09 de Agosto de 2004, 04:53:00
No acabo de ver muy bien la utilidad del WDT. Imagino que es un mecanismo de seguridad por si el programa se mete en un bucle infinito pero, ¿si el programa está depurado para qué sirve?, ¿conoces alguna aplicación práctica?
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: PicKetero en 15 de Agosto de 2004, 22:55:00
   Desde ya muchas gracias por responderme nocturno66 !!!!
   
    Quería hacerte una pregunta, es posible simularlo al WTD con el mplab ?

    Desde ya muchas gracias !!!!!
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Golden_Eagle en 16 de Agosto de 2004, 00:57:00
toda mi vida crei q el watchdog ponia al micro en un modo de bajo consumo, estoy errado?
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: T0ni0 en 16 de Agosto de 2004, 02:25:00
Pues va ser que si, para poner el micro en bajo consumo es SLEEP, RGL ha explicado muy bien la filosofía del watch dog, si os fijais es perro guardian.

Ah!!!  Nocturno fijate que por más depurado que está el programa si resulta que se depende de un módulo exterior (modem, memória etc..) con el WDT te aseguras el buen funcionamiento de todo, la verdad no se que haria yo sin el.
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Golden_Eagle en 16 de Agosto de 2004, 10:59:00
Todos los dias se aprende algo nuevo
Ya vere si meto a un perrito de estos en mis proyectos, parecen amigables
Cada cuanto hay q darles de comer??? (resetarlos)
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: T0ni0 en 16 de Agosto de 2004, 12:36:00
 Pues depende del cristal que pongas en tu tarjeta, además tiene un postscaler para asignarle.

Cuando lo actives (BSF WDTCON,0  en mi caso) piensa de ponerlo en un sitio para hacer un CLRWDT ok      veras como es facil
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Carlete71 en 16 de Agosto de 2004, 12:58:00
No he leido las demás respuestas con detenimiento, pero a modo de resumen y por lo que he visto en los libros, el WDT no es más que un contador interno del micro que tiene una función de seguridad para provocar un reset del micro en caso de que éste se quede colgado an alguna parte del programa. Obviamente, cuando se quiere usar este mecanismo de seguridad hay que setearlo en el micro y refrescar el contador en determinadas áreas del programa.

Si se puede usar en el simulador.

Saludos,  
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Nocturno en 17 de Agosto de 2004, 02:35:00
No había pensado en la dependencia de un módulo externo, aunque quizás tenga más lógica.
Aún así, no acabo de ver claro qué puede resolver un reset...

Gracias por la info, T0ni0
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: T0ni0 en 17 de Agosto de 2004, 03:32:00
Pues imagina que tienes varios periféricos y resulta que en un momento dado al acceder a uno este no responde, imagina que estas esperando strings terminados en CR y por interferéncias te llega mal el caracter, empiezas a grabar o esperar infinitamente  (aunque parezca mentida ocurre) en estas ocasiones no puedes hacer un RESET por Software (tipica situación que deseas hacer un reset por que no sabes que hace el programa )si resulta que tienes el WDT activado este realizará el RESET donde en tu inicio tienes que realizar un RESET de los periféricos  


Pues no se, son situaciones hipotéticas pero la verdad es que yo he montado varios equipos en vehiculos y estaba intranquilo, cuando le puse el WDT se termino mi angustia.

Tampoco soy de la oficina del defensor del WDT, pero si puedo explicar mis experiéncias.
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: YF-21 en 17 de Agosto de 2004, 19:25:00
Opino lo mismo T0ni0, el watchdog te sirve para saber si el micro se "trabó" y te resetea el pic automaticamente , yo nunca lo he usado porque es muy molesto estarlo limpiando a cada rato
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: PicKetero en 17 de Agosto de 2004, 20:22:00
   Hola nuevamente !!!!!!!!!!

    Quería pedir a quien ya tenga manejo del perro guardian algún programita sencillo en el cual lo utilice como para ver exactamente como se configura !!!
    Desde ya muchas gracias !!

;******************************************************
   El wdt perro que está entrenado para cuidar por nuestro programita.......... donde este salta a un bucle indefinido el perro ladrará provocando un reseteo,  todo esto es porque se supone que nosotros no estaremos frente a nuestro circuito para resetearlo manualmente si este se "colgara".
;******************************************************

P/D: todo esto lo se, pero no se como se configura. je je je  
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Carlete71 en 17 de Agosto de 2004, 20:45:00
Es muy sencillo, prácticamente no tienes que hacer nada más que colocar en varias partes del programa la instrucción clrwdt para refrescarlo y evitar el reset del micro.

El tiempo que tarda el WDT en cumplir su conteo en un PIC16F84 es de 18ms pero usando el divisor de frecuencias del registro OPTION se puede alcanzar hasta 2.3s.

Si el micro se cuelga (tranca) entonces no se refrescará y se reseteará automáticamente.

Para usarlo lo que haces es que cuando vas a grabar el programa en la memoria del PIC, por ejemplo con el software icprog puedes tildar el fusible del WDT que automáticamente le dirá al PIC que lo vas a usar en tu programa.

Si tildas el fusible y no refrescas el WDT con clrwdt, el micro permanecerá todo el tiempo reseteado... una falla muy común

También puedes activar o desactivar el WDT mediante el bit 2 de la palabra de configuración.

Saludos,
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: PicKetero en 17 de Agosto de 2004, 21:29:00
   Hola Cartele71 !!!!
 
    Estuvo muy clara tu explicación....... pero si en mi caso estoy usando el prescaler para el TMR0 cual es el tiempo del wdt ......... ?
   
    Esta es una gran duda que todavía no he logrado tener clara !

    Desde ya muchas gracias !!1
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Carlete71 en 17 de Agosto de 2004, 21:41:00

Ups, buena pregunta

Mira segun el libro de Angulo, con el bit PSA del registro OPTION defines si quieres que el divisor de frecuencias sea asignado al TMR0 o al WDT, de esta manera es lógico pensar que si el bit PSA es cero, implica que el divisor de frecuencia está asignado al TMR0, entonces el WDT no lo usará por lo que su tiempo de contéo será de 18ms.

También dice el libro que el control del WDT es independiente del TMR0 ya que está basado en una simple red R-C.

Voy a tratar de escanear la página del libro para que incluso puedas ver la topología del WDT y el TMR0.

Saludos,
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Micom en 17 de Agosto de 2004, 22:37:00
Aqui les va un programita que usa el WDT para secuenciar cuatro leds. Haber si con este ejemplito se orientan mas. Saludos
           http://miarroba.com/foros/ver.php?foroid=132135&temaid=2367663
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Nocturno en 18 de Agosto de 2004, 00:18:00
Micom, viendo el ejemplo que has colocado observo que en esta ocasión el WDT se encarga de sacar al micro del modo Sleep, pero no de provocar un Reset. ¿Se puede indicar al WDT que trabaje de una u otra manera o por defecto sólo lo resetea si no estaba en modo Sleep?
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Carlete71 en 18 de Agosto de 2004, 10:55:00
Escrito originalmente por Micom
Aqui les va un programita que usa el WDT para secuenciar cuatro leds. Haber si con este ejemplito se orientan mas. Saludos
           http://miarroba.com/foros/ver.php?foroid=132135&temaid=2367663[/cita]


Que interesante, no lo he chequeado en detalle pero aparentemente se está utilizando el WDT, que es un mecanismo que originalmente está diseñado para seguridad del PIC, como una aplicación específica.

Buena esa Micom. Todos los días se aprende algo nuevo.

Saludos,
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: PicKetero en 18 de Agosto de 2004, 20:38:00
  Hola gente !!!!
  Bueno, por lo visto era un tema que tiene sus cosillas , no ?
   Me parece que el mplab no simula la acción del WDT !!!
   Pero me hice un programita tonto y lo simulé con el Proteus y anduvo todo ok !!!
    En el caso que el micro se encuentre en modo bajo consumo ( sleep ) el WDT probocará un reseteo del micro,  de ahi podemos chequear del registro STATUS los bit"s  TO y PD y de acuerdo que nos indiquen estos bit"s tomaremos una acción determinada y que nosotros queramos.       ......... se me entendió ? ......... je je   soy medio malo para explicar..........

        bueno muchachos, nos estamos leyendo !!!

         bye bye !!!!!!!
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Micom en 19 de Agosto de 2004, 01:20:00
Bueno no lo simule en el mplab pero si lo arme con mi entrenador y jala de maravilla hasta lo amplie a 8 leds le cambie los tiempos del wdt y se puede hacer secuencias muy rapidas en fin lo intentare simular en el mplab y luego les cuento.Saludos  

Nocturno66 el wdt resetea el micro no importa lo que este haciendo por eso si esta activado hay que refrescarlo antes de que actue ya que el resetea y no le importa como este trabajando el pic, ya que puede estar en sleep o haciendo cualquier tarea o puede estar trabado en alguna tarea el lo resetea a como de lugar. espero no haberte confundido mas. Saludos        
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Nocturno en 19 de Agosto de 2004, 02:43:00
Seguramente estoy muy espeso, pero sigo sin entender algo.

Creo que me explicaré más claramente si pego aquí el código:
Codigo:

        LIST            P=16C84
        ERRORLEVEL      -302    ;SUPPRESS BANK SELECTION MESSAGES
        __CONFIG        3FF7H   ;RC OSC, WATCHDOG
        __IDLOCS        1234
;    
PORTB   EQU     6
TRISB   EQU     86H
OPTREG  EQU     81H
STATUS  EQU     3
CARRY   EQU     0
RP0     EQU     5
MSB     EQU     3               ;BIT POSITION OF LEFTMOST LED
;
        CLRF    PORTB           ;ALL LEDS OFF
        BSF     STATUS,RP0      ;SELECT REGISTER BANK 1  
        CLRF    TRISB           ;SET PORTB TO ALL OUTPUTS
        MOVLW   0AH
        MOVWF   OPTREG          ;ASSIGN PRESCALER (1 TO WDT
        BCF     STATUS,RP0      ;SELECT REGISTER BANK 0
        INCF    PORTB,F         ;TURN ON RIGHTMOST LED
        BCF     STATUS,CARRY    ;CLEAR CARRY
LEFT    SLEEP                   ;WAIT FOR WDT TIMEOUT
        RLF     PORTB,F         ;TURN ON LED TO LEFT
        BTFSS   PORTB,MSB       ;REACHED LEFTMOST?
        GOTO    LEFT            ;LOOP IF NOT
RIGHT   SLEEP                   ;WAIT FOR WDT TIMEOUT
        RRF     PORTB,F         ;TURN ON LED TO RIGHT
        BTFSS   PORTB,0         ;REACHED RIGHTMOST?
        GOTO    RIGHT           ;LOOP IF NOT
        GOTO    LEFT            ;START NEW CYCLE
;
        ORG     2100H
;
        DE      "Copyright (C) 1996 David Tait"
        END


Mi duda la tengo en las líneas con etiquetas LEFT y RIGHT. Según veo, el micro se detendrá ahí y sólo saldrá de su estado adormecido mediante el reset del WDT. Pero, si es cierto lo que me estáis contando, el reset del WDT hará que el micro comience la ejecución del programa por la primera línea del mismo, y no por el siguiente comando al SLEEP. ¿Dónde me he perdido?
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: T0ni0 en 19 de Agosto de 2004, 05:03:00
 Bueno pues después de probar el codigo y observar que realmente funciona !!!    he buscado una explicación :

El WatchDog realiza un RESET si no se refresca tal como se ha dicho en los anteriores posts, pero....  cuando se trata de despertar del SLEEP dice lo siguiente


6.11.2 WAKE-UP FROM SLEEP
The device can wake-up from SLEEP through one of
the following events:
1. External RESET input on MCLR pin.
2. WDT wake-up (if WDT was enabled).
3. Interrupt from RB0/INT pin, RB port change, or
data EEPROM write complete.
Peripherals cannot generate interrupts during SLEEP,
since no on-chip Q clocks are present.
The first event (MCLR Reset) will cause a device
RESET. The two latter events are considered a continuationof program execution.


pues si que si está en SLEEP solo se puede hacer un RESET con el MCLR  
  ideal para consumir poco y ir despertando  a intervalos

Nunca te acostarás sin haberte despertado.
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Nocturno en 19 de Agosto de 2004, 05:11:00
¡ahá!, ahora sí que todas las piezas encajan.



Muchas gracias por la aclaración, T0ni0.
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Micom en 19 de Agosto de 2004, 23:27:00
Buena por esa T0ni0 , no me la sabia, asi que nuestro amigo el perro puede despertar a nuestro pic para que siga con su tarea donde se durmio, y en ese caso no resetea al micro solo lo despierta. ¿es asi?          
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Nocturno en 19 de Agosto de 2004, 23:54:00
Parece que sí Micom; la única forma de hacer RESET cuando el micro está dormido es tirando a masa la patilla MCLR.

Me ha llamado la atención también el tercer punto que explica T0ni0 en su post. Se sale del modo SLEEP también cuando termina de escribir en la EEPROM. De esta manera, ya no hay que hacer un chequeo continuo del fin de escritura; se duerme al micro y cuando acabe de escribir despertará.
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Micom en 20 de Agosto de 2004, 00:05:00
Que bueno que se disipen las dudas ya que asi se aprende, si tambien me parece muy interesante ese punto hay que implementar alguna rutinita para comprobarlo. Saludos  
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: T0ni0 en 20 de Agosto de 2004, 02:42:00
Aquí teneis tal como grabo yo la EEPROM,:


;___________GRABA EEPROM____________________________

;  UTILITZA LES VARIABLES DIRGRA I DATGRA


GRABA:   BCF STATUS,RP1   ;BANK0
   MOVF DIRGRA,0   ;MOVEM LA DIR AL ACUMUL
   BSF STATUS,RP1   ;BANK2
   MOVWF EEADR   ;MOVEM ACUMUL A EEADR

   BCF STATUS,RP1   ;BANK0
   MOVF DATGRA,0   ;MOVEM DATO AL ACUM
   BSF STATUS,RP1   ;BANK2
   MOVWF EEDATA   ;MOVEM ACUM A EEDATA


   BSF STATUS,RP1
   BSF STATUS,RP0   ;BANK 3

   BCF EECON1,EEPGD
   BSF EECON1,WREN

   BCF INTCON,GIE   ;DESACTIVEM INTERRUPCIONS
   MOVLW 0X55
   MOVWF EECON2
   MOVLW 0XAA
   MOVWF EECON2
   BSF EECON1,WR
   BSF INTCON,GIE   ;ACTIVEM INT I ESPEREM FINAL


   SLEEP

   BCF EECON1,WREN

   BCF STATUS,RP0
   BCF STATUS,RP1   ;BANK 0

   RETURN


Es una función que le pones el Dato en DATGRA y la dirección en DIRGRA , acordaros de definir esas variables o de entrar los valores directamente. Lo saque del Datasheet de un PIC he mirado pero no recuerdo cual era
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Carlete71 en 20 de Agosto de 2004, 10:41:00
Escrito originalmente por Micom
Buena por esa T0ni0 , no me la sabia, asi que nuestro amigo el perro puede despertar a nuestro pic para que siga con su tarea donde se durmio, y en ese caso no resetea al micro solo lo despierta. ¿es asi?          


Estimados compañeros veo que según el amigo Angulo… Si, el mismo del libro rojo que aparece abajo. Según él dice, cuando al PIC se le da la instrucción Sleep, se refresca el WDT y el micro entra en estado de reposo, pero cuando se desborde el WDT el PIC no sigue a la próxima instrucción sino que se resetea. Eso lo dice él en su libro. Voy a escanearlo y se los muestro esta tarde. Me encantaría despejar esta duda para mi y para todos.
Será que el amigo Angulo se peló? No lo se.

Saludos,
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Modulay en 20 de Agosto de 2004, 11:05:00
Parece que sí...al entrar en sleep el wdt se refresca y provoca un reset al desbordarse.Sacado de unas fotocopias que tengo por ahí
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: MGLSOFT en 20 de Agosto de 2004, 13:46:00
Yo sostengo seriamente lo que dice Angulo.

Me paso que hice un programa utilizando el WDT y ademas esperaba una interrupcion por teclado durmiendo el micro con Sleep.
Nunca me explicaba porque no andaba, si todo estaba OK!! Es mas lo simulaba en MPLAB y estaba correcto, solo que armado no funcionaba.

Esto fue asi hasta que desprograme el uso del WDT.

Aclaro que reseteaba el WDT por software en el programa, pero no anduvo, se llevan muy mal entre las funciones estas...
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Nocturno en 20 de Agosto de 2004, 13:53:00
Curiosa contradicción. Bueno, pues entonces tendremos que probarlo...

Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Carlete71 en 20 de Agosto de 2004, 16:31:00

Bueno, ya estoy en casa. Me da un poco de flojera conectar el escaner, pero les voy a decir lo que dice el libro: Microcontroladores PIC Diseño práctico de aplicaciones Primera parte PIC16F84, 3ra edición de Angulo

Capítulo 7, Página 100

Cito: "La instrucción clrwdt borra el WDT y reinicia su cuenta. Sin embargo, la instrucción sleep, además de borrar WDT, detiene al sistema y lo mete en un estado de <<reposo>> o <<de bajo consumo>>. Si no se desactiva el Perro Guardián al entrar en el modo de reposo, al completar su contaje provocará un Reset y sacará al microcontrolador del modo de bajo consumo."

Bueno, esa es la teoría, pero como dice el amigo Manolo, lo más sano es probarlo.

Saludos,
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Micom en 20 de Agosto de 2004, 22:41:00
Bueno parece que ahi hay un errorsito ya que el programa que subi dice lo contrario ya que al desbordarse el WDT estando en Sleep el pic, solo lo despierta para que siga con la siguiente instruccion donde se durmio. ...saludos   armado en un entrenador lo comprobe..
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Nocturno en 21 de Agosto de 2004, 01:09:00
[cita title=Escrito originalmente por Carlete71]
al completar su contaje provocará un Reset y sacará al microcontrolador del modo de bajo consumo."
[cita]

Quizás esta frase pueda interpretarse como "despertar" al PIC y seguir por la siguiente instrucción. Seguramente hemos entendido mal la palabra RESET y de ahí viene la contradicción.

Después de la prueba de Micom yo creo que está claro el funcionamiento.
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Modulay en 21 de Agosto de 2004, 01:52:00
Un reset es un reset lo mires por donde lo mires no?
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Carlete71 en 21 de Agosto de 2004, 08:06:00

Que cosas no? Fíjense que en esta guía que conseguí en la WEB, que por cierto se las estoy dejando aquí:

http://miarroba.com/foros/ver.php?foroid=256746&temaid=2224840

Habla en la página 84 del reset y coloca un cuadro bien curioso donde pareciera apoyar la teoría del amigo Micom, ya que pareciera que en caso de que el WDT se desborde cuando se está en Sleep, eso implica que PC=PC+1 Así que toma más fuerza la teoría de que el pana Angulo se peló Bueno todos tenemos derecho no? jajajaja

Saludos,
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: adrian2a1 en 22 de Agosto de 2004, 02:42:00
Yo pensaba que el desbordamiento del WDT provocaba siempre un
reset y el reinicio del sistema y creía que T0ni0 estaba equivocado.
Pero investigándolo en el libro que yo uso, probé el siguiente programa
que demuestra que el amigo T0ni0 tenía razón (y que yo estaba equivocado).
;
Codigo:
   ===================================================================
;     Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;     E. Palacios, F. Remiro y L. López.
;      Editorial Ra-Ma.  www.ra-ma.es
;   ===================================================================
;
; Este programa comprueba el funcionamiento de la instrucción "sleep" y el "Watchdog".
; El PIC se pone en modo bajo consumo. El despertar del mismo se producirá cada vez que el
; Watchdog desborde su cuenta, en ese momento se producirá un incremento de un contador que se
; visualizará en pantalla. El proceso debe repetirse cada medio segundo aproximadamente.
;
; Con un preescaler de 32 el desbordamiento del Watchdog se producirá cada
; 18 x 32 = 576 ms, es decir, cada medio segundo aproximadamente.

; ZONA DE DATOS **********************************************************************

   __CONFIG   _CP_OFF &  _WDT_ON & _PWRTE_ON & _XT_OSC

; Observad que se ha habilitado el Watchdog.

   LIST      P=16F84A
   INCLUDE  <P16F84A.INC>

   CBLOCK   0x0C
   Contador
   ENDC

; ZONA DE CÓDIGOS ********************************************************************

   ORG    0
Inicio
   call   LCD_Inicializa
   bsf   STATUS,RP0
   movlw   b"00001101"   ; Un prescaler de 32 es asignado al Watchdog.
   movwf   OPTION_REG
   bcf   STATUS,RP0
   clrf   Contador      ; Inicializa el contador y lo visualiza.

; La sección "Principal" es de mantenimiento. Visualiza y pasa a modo bajo consumo
; del cual solo puede salir por desbordamiento del Watchdog.

Principal
   call   LCD_Linea1
   movf   Contador,W   ; Pasa a visualizar el contador.
   call   BIN_a_BCD   ; Se debe visualizar en BCD.
   call   LCD_Byte      ; Visualiza el contador.
   sleep         ; Pasa a modo de bajo consumo.
   incf   Contador,F   ; El Watchdog incrementa el contador.
   goto   Principal

   INCLUDE  <RETARDOS.INC>
   INCLUDE  <BIN_BCD.INC>
   INCLUDE  <LCD_4BIT.INC>
   END
   
;   ===================================================================
;     Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
;     E. Palacios, F. Remiro y L. López.
;      Editorial Ra-Ma.  www.ra-ma.es
;   ===================================================================


Efectivamente: en el modo SLEEP un desbordamiento del Watchdog provoca
que se ejecute la siguiente instrucción, NO el reinicio del programa.

Gracias amigos, me han provocado a investigar y aprender algo nuevo.

Saludos.
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Nocturno en 23 de Agosto de 2004, 02:44:00
Por fin ya lo tenemos claro. Ha sido un debate muy interesante.
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: pocher en 23 de Agosto de 2004, 06:40:00
Todos nos podemos equivocar, pero en este caso Angulo no lo hizo. Tengo la 2ªEd de Microc. PIC Diseño Práctico de Aplicaciones y en la pg. 129 dice claramente que hay 3 formas de sacar al PIC del SLEEP:

- MCLR
-Desbordamiento del perrito
- Interrupción (salvo la del TMR0 que no cuenta pulsos)

Y luego encuadrado pone que: Cuando se despierta el PIC ... se pasa a ejecutar la siguiente instrucción a sleep (PC+1).
Título: RE: Como convive el WDT y TMR0 .... ?
Publicado por: Carlete71 en 25 de Agosto de 2004, 19:30:00

Tienes razón Pocher. Yo tengo la tercera edición y la tabla de la que hablas está en la página 119 Tal vez fue un error de la imprenta o la traducción en la página 100 de la 3ra edición donde se habla del WDT.

Saludos,