Autor Tema: Calculo a lápiz de un tick  (Leído 140 veces)

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

Desconectado mariacontenis

  • PIC12
  • **
  • Mensajes: 57
Calculo a lápiz de un tick
« en: 10 de Agosto de 2018, 11:30:07 »
Amigos una duda simple para ustedes pero yo no se la respuesta por eso pregunto. Decía mi maestro.... Es mejor una pregunta  tonta que un tonto sin preguntar.

Bueno ahí va!!!.

Como calcular el tiempo de un tick del PIC con un cristal externo a 4 MHz y un
#use delay(clock=48000000)

Gracias por leer..
« Última modificación: 10 de Agosto de 2018, 11:41:34 por mariacontenis »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6750
Re:Calculo a lápiz de un tick
« Respuesta #1 en: 10 de Agosto de 2018, 12:08:27 »
Depende a que le llamas "Tick",

- si es al tiempo en que se ejecuta una instruccion es:

4 / Fosc = Tcy (Periodo de una instruccion )

Es decir la frecuencia se divide por 4 , ya que le lleva 4 ciclos de reloj ejecutar una instrucción.

- Si es el tiempo en el cual un Timer se incremente ( o decrementa) en 1, los que vi usualmente usan el mismo Tcy de antes como entrada.. Es decir:

( 4 / Fosc ) * Preescaler = Tiempo que incrementa en 1 el Timer



Observa que en ningun momento hago diferencia de cristal puesto, el Fosc es la frecuencia de entrada, luego del PLL, luego de divirlo etc... Ejemplo..

Si tenes un cristal de 4Mhz y no usas PLL ni lo dividis, entonces tu Fosc = 4Mhz.
Si tenes un cristal de 4Mhz y usas PLL, pasa por el preescaler que es 1:1 asi entra 4Mhz al VCO, la salida es de 96Mhz y se divide en 2, quedando 48Mhz, entonces tu Fosc = 48Mhz.
Si tenes un cristal de 20Mhz y no usas PLL pero usas el preescaler solo de 1:2, entonces tu Fosc = 10Mhz.

Es decir, es la frecuencia que va a entrar CPU, todo queda mas claro si miras el esquema del oscilador de tu micro.

Desconectado mariacontenis

  • PIC12
  • **
  • Mensajes: 57
Re:Calculo a lápiz de un tick
« Respuesta #2 en: 10 de Agosto de 2018, 17:06:40 »
Así es como lo tengo:

Código: C++
  1. #fuses PLL1,CPUDIV1,USBDIV,XTPLL,NOFCMEN,NOIESO,PUT,NOBROWNOUT,VREGEN,NOWDT,NOPBADEN,MCLR,NOSTVREN,NOLVP,NODEBUG,NOPROTECT,NOSTVREN,NOCPB,NOWRT  
  2.  
  3.          #use delay(clock=48000000,crystal=4000000)          
  4.  
« Última modificación: 10 de Agosto de 2018, 17:16:07 por mariacontenis »

Desconectado scrwld

  • PIC10
  • *
  • Mensajes: 17
Re:Calculo a lápiz de un tick
« Respuesta #3 en: 10 de Agosto de 2018, 20:29:57 »
hola mariacontenis, aqui tienes un tutorial muy bien explicado:

http://picfernalia.blogspot.com/2012/06/uso-de-temporizadores-timers.html

saludos

Desconectado mariacontenis

  • PIC12
  • **
  • Mensajes: 57
Re:Calculo a lápiz de un tick
« Respuesta #4 en: 11 de Agosto de 2018, 07:41:31 »
Si, gracias. Y me refiero al tick timer (incrementos del timer).
« Última modificación: 11 de Agosto de 2018, 08:01:44 por mariacontenis »

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 6750
Re:Calculo a lápiz de un tick
« Respuesta #5 en: 11 de Agosto de 2018, 10:09:11 »
Entonces  Fosc = 48Mhz, asumiendo que el preescaler es 1:1 entonces:

( 4 / 48Mhz ) * 1 = 83.33ns

Si tenes un preescaler en 256, haces 83.33ns * 256 = 21.33ms