Autor Tema: como se calcula el tiempo del watchdog ?  (Leído 3736 veces)

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

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
como se calcula el tiempo del watchdog ?
« en: 28 de Abril de 2012, 19:55:12 »
Hola a todos, ya se como programarlo, pero no se calcular el tiempo máx en el que ha de ser reffrescado o puesto a 0.

P.ej, si en el prescaler WDT he seleciobado 1:64 , y mi PIC 12F617 opera a 4Mhz, utilizando el oscilador interno, como calculo el tiempo máx. de refresco ?

Gracias de antemano

un saludo
« Última modificación: 29 de Abril de 2012, 05:18:09 por JoseLuis2801 »

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: como se calcula el tiempo del watchdog ?
« Respuesta #1 en: 28 de Abril de 2012, 23:47:29 »
Si no me equivoco seria:

4Mhz/4=1Mhz
1Mhz/64=15625hz

65535/15625=4,19424s

De todas formas de un pic a otro suele variar ya que algunos meten pre y postscalers, y tambien habria que mirar si el contador es de 16bits que creo que si.

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Re: como se calcula el tiempo del watchdog ?
« Respuesta #2 en: 29 de Abril de 2012, 05:44:10 »
Muchas gracias, y disculpame que no había el PIC en el enunciado, ahora ya si, es el 12F617.

Segun he visto en el manual PDF,  he copiado esto del mismo:

The Timer0 module is an 8-bit timer/counter with the
following features:
• 8-bit timer/counter register (TMR0)
• 8-bit prescaler (shared with Watchdog Timer)
• Programmable internal or external clock source
• Programmable external clock edge selection
• Interrupt on overflow


Entonces es de 8 bits ¿ verdad ?

El prescaler tiene estas opciones:  1:1 ; 1:2 ; 1:4 ; 1:8 ; 1:16 ; 1:32 ; 1:64 ; 1:128 , ya deopendiendo de como configure los 3 últimos bits del registro Option_reg.
Ya no hay mas opciones en cuanto al tiempo.

Luego entonces entiendo que al ser de 8 bits, la formula sería (para 1:64) :

4Mhz/4=1Mhz   ;   1Mhz/64 =  15625Hz   ;    255/15625 = 16,32mseg.

Cambiaré al prescaler 1:128 , asi me saldrá el doble de tiempo, saldrán 32,64ms

Bueno con esto ya tengo una referencia para hacer pruebas,  ya te diré..............................

Un saludo

 
 

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Re: como se calcula el tiempo del watchdog ?
« Respuesta #3 en: 29 de Abril de 2012, 10:56:00 »
MerLinz, acabo de hacer las pruebas, con 2 bucles anidados, no coincide con los tiempos calculados, a 4Mhz, son éstos:

Prescaler                           Tiempo

    1:1                             18ms.
    1:2                             36ms.
    1:4                             72ms.
    1:8                           144ms.

A partir de 1:8 , el programa no avisa del desbordaiento del WDT y se queda colgado, pero vamos, en los otros 4 si, y como es lo correcto, van subiendo el doble.

Lo he probado grabando en el PIC y coinciden los tiempos tb  tb.

Post scaler no hay.

Un saludo
« Última modificación: 29 de Abril de 2012, 11:05:34 por JoseLuis2801 »

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: como se calcula el tiempo del watchdog ?
« Respuesta #4 en: 29 de Abril de 2012, 12:13:25 »
pues la verdad nose, en los datasheet vienen muy poco sobre esto y un diagrama muy escaso, incluso busque en google y ninguno lo explica para calcular tiempos. Pero bueno a base de probar quizas lo saques correctamente

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: como se calcula el tiempo del watchdog ?
« Respuesta #5 en: 29 de Abril de 2012, 14:06:36 »
Tiene un oscilador RC independiente del principal, cuyo periodo es de 18ms.
Esto está extraído de la página 121 de este datasheet.

12.6 Watchdog Timer (WDT)
The Watchdog Timer is a free running, on-chip RC
oscillator, which requires no external components. This
RC oscillator is separate from the external RC oscillator
of the CLKIN pin and INTOSC. That means that the
WDT will run, even if the clock on the OSC1 and OSC2
pins of the device has been stopped (for example, by
execution of a SLEEP instruction). During normal operation, a WDT time out generates a device Reset. If the
device is in Sleep mode, a WDT time out causes the
device to wake-up and continue with normal operation.
The WDT can be permanently disabled by programming the Configuration bit, WDTE, as clear
(Section 12.1 “Configuration Bits”).

12.6.1 WDT PERIOD
The WDT has a nominal time-out period of 18 ms (with
no prescaler). The time-out periods vary with
temperature, VDD and process variations from part to
part (see DC specs). If longer time-out periods are
desired, a prescaler with a division ratio of up to 1:128
can be assigned to the WDT under software control by
writing to the OPTION register. Thus, time-out periods
up to 2.3 seconds can be realized.
The  CLRWDT and  SLEEP instructions clear the WDT
and the prescaler, if assigned to the WDT, and prevent
it from timing out and generating a device Reset.
The TO bit in the STATUS register will be cleared upon
a Watchdog Timer time out.

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Re: como se calcula el tiempo del watchdog ?
« Respuesta #6 en: 29 de Abril de 2012, 15:12:02 »
NO importa MerLinz, no hay formula, hay que ver el datasheet de cada PIC, aunque imagino coincidirá en muchos. Pero bueno, lo había sacado: 18ms, con el prescaler a 1:1, a partir de ahí , hasta 2,3seg a 1:128, coincide si hubiera seguido al serie.

Ok NOcturno, culpa mia que no habia llegado a ver esa sección, no creí que estuviese ahi, en fin, ahora ya lo tengo todo claro, y para otro PIC ya se donde buscar.

Infinitas gracias por vuestra colaboración. ;-)

Acabo de ver que en la pag. 160, parametro 31, indica como valor tipico 20ms., bueno, 2 ms. mas que menos no importa, en mi caso.

Un saludo

« Última modificación: 29 de Abril de 2012, 15:34:14 por JoseLuis2801 »