Autor Tema: Como convive el WDT y TMR0 .... ?  (Leído 9158 veces)

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

Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #15 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,

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #16 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
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #17 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?

Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #18 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,

Desconectado PicKetero

  • PIC12
  • **
  • Mensajes: 80
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #19 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 !!!!!!!

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #20 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        
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #21 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?

Desconectado T0ni0

  • PIC16
  • ***
  • Mensajes: 196
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #22 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.
- T0ni0 -
30RCF112

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #23 en: 19 de Agosto de 2004, 05:11:00 »
¡ahá!, ahora sí que todas las piezas encajan.



Muchas gracias por la aclaración, T0ni0.

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #24 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?          
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #25 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á.

Desconectado Micom

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 783
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #26 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  
El programador GTP USB PLUS es un super programador
GRACIAS dobles amigo SISPIC

Tan solo queda seguir sobreviviendo

Desconectado T0ni0

  • PIC16
  • ***
  • Mensajes: 196
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #27 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
- T0ni0 -
30RCF112

Desconectado Carlete71

  • PIC18
  • ****
  • Mensajes: 433
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #28 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,

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Como convive el WDT y TMR0 .... ?
« Respuesta #29 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í