Autor Tema: Entendiendo el TIMER0 en CCS  (Leído 38719 veces)

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

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Entendiendo el TIMER0 en CCS
« Respuesta #15 en: 23 de Diciembre de 2010, 12:45:04 »
Si escribís 19531, el timer cuenta 46005 (65536-19531) veces antes de la interrupción, y eso es correcto?
No contesto mensajes privados, las consultas en el foro

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Entendiendo el TIMER0 en CCS
« Respuesta #16 en: 23 de Diciembre de 2010, 12:56:48 »
segun las cuentas con esa precarga el timer se desborda cada 2355,45 mS es decir 2.355 segundos
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Entendiendo el TIMER0 en CCS
« Respuesta #17 en: 23 de Diciembre de 2010, 13:17:20 »
Que tal amigos!
Con esta formula puedes calcular mas exacto el tiempo con el timer 0:

temp = [(256 – carga) · PS + 2] · Tinstr

ps:Pre escaler
tinst:4/frecuencia del cristal
carga:Valor a cargar en el timer 0
temp: tiempo deseado a temporizar  :mrgreen:

Espero les sea util!

Saludos

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Entendiendo el TIMER0 en CCS
« Respuesta #18 en: 23 de Diciembre de 2010, 13:20:26 »
Que tal amigos!
Con esta formula puedes calcular mas exacto el tiempo con el timer 0:

temp = [(256 – carga) · PS + 2] · Tinstr

ps:Pre escaler
tinst:4/frecuencia del cristal
carga:Valor a cargar en el timer 0
temp: tiempo deseado a temporizar  :mrgreen:

Espero les sea util!

Saludos


Ojo, eso es solo para Timer0 de los 16F


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado lopb

  • PIC12
  • **
  • Mensajes: 77
    • contactos lopb
Re: Entendiendo el TIMER0 en CCS
« Respuesta #19 en: 23 de Diciembre de 2010, 16:15:39 »
segun las cuentas con esa precarga el timer se desborda cada 2355,45 mS es decir 2.355 segundos
ah, ya entendi jeje
« Última modificación: 23 de Diciembre de 2010, 17:11:52 por lopb »

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Entendiendo el TIMER0 en CCS
« Respuesta #20 en: 23 de Diciembre de 2010, 16:51:20 »
Hola lopb, para contar 1 segundo, puedes por ejemplo configurar el Timer0 así:

setup_timer_0(RTCC_INTERNAL|RTCC_DIV_128);      //1.6 s overflow

luego haces tus cálculos así:

clock = 20000000 Hz
Tosc = (1 / clock)

Tiempo = 4 x Tosc x Valor a contar en Timer0 + 1 x Rango del Divisor
Tiempo = 4 x 0.00000005 x 39062 x 128 = 0.9999 Seg.        // Timer 16 bits a 20MHz
Valor de inicio para Timer0 = 65536 - 39062 = 26474

set_timer0(26474);

Saludos!

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Entendiendo el TIMER0 en CCS
« Respuesta #21 en: 23 de Diciembre de 2010, 18:03:32 »
Citar
Ojo, eso es solo para Timer0 de los 16F


Que tal suky amigo eso que coloque arriba es valido solo para el timer 0 en los pic de la serie 16 y 18 incluso.
Fijate en el diagrama de bloques de este alli veras el bloque de retardo de 2 ciclos de instruccion  :mrgreen:

Saludos

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Entendiendo el TIMER0 en CCS
« Respuesta #22 en: 23 de Diciembre de 2010, 18:08:02 »
lo que pasa es que en la serie 16f el timer0 es de 8bits, mientras en los 18f es configurable a 8 ó 16bits
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Entendiendo el TIMER0 en CCS
« Respuesta #23 en: 23 de Diciembre de 2010, 18:18:07 »
lo que pasa es que en la serie 16f el timer0 es de 8bits, mientras en los 18f es configurable a 8 ó 16bits

Exactamente!
Citar
Ojo, eso es solo para Timer0 de los 16F
Fijate en el diagrama de bloques de este alli veras el bloque de retardo de 2 ciclos de instruccion  :mrgreen:

No solo hay que mirar las imagenes!  :D Sirve para un modo de configuración  ;-)



Saludos!
« Última modificación: 23 de Diciembre de 2010, 18:24:13 por Suky »
No contesto mensajes privados, las consultas en el foro

Desconectado RALF2

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2062
Re: Entendiendo el TIMER0 en CCS
« Respuesta #24 en: 23 de Diciembre de 2010, 20:30:37 »
Que tal amigos!
Tal como dicen una imagen habla mas que mil palabras!
Otro detalle es que el timer 0 independientemente de que sea de 8 0 16bits usa un bloquecito que retarda la señal 2 ciclos de reloj, ver imajen.
Asi que para operar en modo de 8 bits la formula seria:

temp = [(256 – carga) · PS + 2] · Tinstr

Y para operar a modo de 16bits seria esta:

temp = [(65536 – carga) · PS + 2] · Tinstr

Con esto aclaro por completo los modos de operacion para la familia pic18XXXX

Nota: ver el bloquecito que dice Sync witch internal clocks en ambas figuras :D



Saludos

Desconectado Manel28

  • PIC10
  • *
  • Mensajes: 23
Re: Entendiendo el TIMER0 en CCS
« Respuesta #25 en: 29 de Marzo de 2011, 06:16:25 »
Hola buenas,
estoy usando un PIC18F25j10 con ccs 4.093. Que versión de CCS tienen ustedes? Estoy intentando compilar usando timer0 con 16 bits y no puedo( Error 12 "Prueba1.c" Line 288(44,55): Undefined identifier   RTCC_16_BIT).

La configuración es la siguiente:
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16|RTCC_16_BIT);

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
Re: Entendiendo el TIMER0 en CCS
« Respuesta #26 en: 29 de Marzo de 2011, 10:46:54 »
me suena a que no es la forma de indicar que el timer será de 16 bits, tendrias que confirmarlo buscando en la carpeta ”devices” de ccs el .h de tu pic, ahi deberia estar explicada la sintaxis para el timer
Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA

Desconectado bmb

  • PIC18
  • ****
  • Mensajes: 423
Re: Entendiendo el TIMER0 en CCS
« Respuesta #27 en: 29 de Marzo de 2011, 17:50:00 »
Hola Manuel28, es como te dice jhozate.  En este caso, como el Timer0 del PIC18f25j50 trabaja por defecto a 16 bits, te estaría sobrando la última instrucción y quedaría asi:

Citar
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16);

En el caso de que lo quisieras trabajar a 8 bits, ahí si tendrías que adicionar la instrucción: RTCC_8_BIT asi:

Citar
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_16|RTCC_8_BIT);

Saludos!

Desconectado diegoap

  • PIC10
  • *
  • Mensajes: 20
Re: Entendiendo el TIMER0 en CCS
« Respuesta #28 en: 11 de Abril de 2011, 15:38:54 »
Pues para lograr un segundo exacto con el timer del PIC utilice el Timer2 seteado para que la interrupcion salte cada 400us, y puse un contador a 2500. Cuando el contador llega a 0, tengo 1seg casi exacto.
Lo arme y lo heche a andar, y lo deje un buen rato, conectado a unos leds q marcaran minutos y segundo, y comparando con un cronometro, y al cabo de poco mas de una hora y media, tuve una desviacion por arriba de un poco màs de 1seg.

Esepero les sea util mi experiencia.
Un Salduo.

Desconectado Simon21

  • PIC18
  • ****
  • Mensajes: 302
Re: Entendiendo el TIMER0 en CCS
« Respuesta #29 en: 19 de Enero de 2013, 14:19:08 »
Muy buena tu explicacion RALF2. Para los aplausos  ((:-))  ((:-))  ((:-))  ((:-))  ((:-))

Hacia rato andaba buscando una explicación así por la web.

Mucha gente genia en este foro  :) !!
 
Saludos a todos
INGENIERIA ELECTRONICA
UNIVERSIDAD TECNOLOGICA NACIONAL