Autor Tema: PAUSAS con distintos relojes  (Leído 2885 veces)

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

Desconectado saracatunga

  • PIC10
  • *
  • Mensajes: 39
PAUSAS con distintos relojes
« en: 28 de Septiembre de 2006, 09:43:27 »

Tengo en claro que pauseus se usa para microsegundos y que pause para milisegundos. Se me presenta um problema, porque eso se toma por defecto para reloj de 4 Mhz. Qué pasa si uso otros relojes .......12Mhz, 20Mhz ???? cómo afectan las pausas?

Desconectado Nichita

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 86
Re: PAUSAS con distintos relojes
« Respuesta #1 en: 28 de Septiembre de 2006, 10:57:08 »
Estos comandos calculan los retardos en función al reloj que tengas configurado con la opción DEFINE OSC 4 ( puede ser 8 , 12 o 20)
saludos

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: PAUSAS con distintos relojes
« Respuesta #2 en: 28 de Septiembre de 2006, 11:53:21 »
Hola:

Como bien dice Nichita, el PBP calcula los retardos dependiendo del reloj, siempre y cuando este definido, si no defines la frecuencia que vas a utilizar, toma por defecto la de 4Mhz, que al hacer algo como esto:

Pause 1000

generara un retardo de 1 segundo utilizando un cristal de 4Mhz, si no declaraste la frecuencia, si estas utilizando un cristal que no sea de 4mhz para ese caso, ese tiempo se verá afectado.

Desconectado saracatunga

  • PIC10
  • *
  • Mensajes: 39
Re: PAUSAS con distintos relojes
« Respuesta #3 en: 29 de Septiembre de 2006, 19:07:31 »
Parece que soy claro con la pregunta.
Si uso un reloj que sea de 4Mhz, aunque no use define osc 4 toma por defecto el reloj de 4Mhz y el pauseus es en microsegundos y el pause en milisegundos y todo está perfecto.

Si uso un reloj distinto al de 4Mhz, ya sea de 12Mhz, 20Mhz, etc. debo usar define osc 12, define osc 20, etc. para decirle al micro que reloj uso.
Ahora la pregunta es si al especificar la frecuencia de reloj se ven afectados los tiempos, en realidad lord ya me dijo que los afecta, pero no sé cuantificar eso.
Siendo más claro deseo saber la relación matemática entre la frecuencia de reloj y el pauseus y el pause de forma de poder saber con exactitud los tiempos de las pausas que estoy usando.

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: PAUSAS con distintos relojes
« Respuesta #4 en: 29 de Septiembre de 2006, 19:54:13 »
Hola:

Veamos, yo dije que se ve afectado si en tu programas utilizas la pausa para un cristal por ejemplo de 4Mhz, y en el circuito pones uno de 20Mhz, es obvio que se vera afectado, ahora, si tu haces esto:

A)

Código: FreeBasic
  1. DEFINE OSC 4
  2.  
  3. INICIO:
  4.             HIGH 0
  5.             PAUSE 1000
  6.             LOW 0
  7.             PAUSE 1000
  8.             GOTO INICIO

B)

Código: FreeBasic
  1. DEFINE OSC 20
  2.  
  3. INICIO:
  4.             HIGH 0
  5.             PAUSE 1000
  6.             LOW 0
  7.             PAUSE 1000
  8.             GOTO INICIO


las dos cosas son lo mismo, ya que como digo el PBP calcula los tiempos para la frecuencia que se utilice.  Ahora, la relacion matematica a la que te refieres no la se, en eso no te puedo ayudar.

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: PAUSAS con distintos relojes
« Respuesta #5 en: 29 de Septiembre de 2006, 21:03:00 »
Pues es una ecuacion lineal
Si supongamos que defines un OSC de 4mhz o bien, lo ignoras(por lo que el compilador asumira 4mhz tambien)

y en el programa colocas un retardo de 1000ms(1seg)

pero en el proyecto real,le colocas un cristal de 20mhz, pues entonces la ecuacion sera:

  (4*1000ms)/20 = 200ms(exactamente la 5ta parte obviamente porque 4/20= 1/5)

o lo que es lo mismo:

(frec_definida_en_el_compilador/frec_real)*retardo= tiempo real del retardo.

Saludos.


"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: PAUSAS con distintos relojes
« Respuesta #6 en: 30 de Septiembre de 2006, 07:02:09 »
Un poco mas

El que utilicemos un leguaje de alto nivel es precisamente para olvidarnos de esos cálculos.

Pauseus/ms, el compilador del lenguaje se encarga de reajustar los cálculos necesarios para que siempre sean eso us/ms, y para ese reajuste de la rutina necesita por supuesto que se le informe al compilador de la velocidad a la que funciona el micro, F.cristal, (internamente F. Cristal/4 es lo que tarda el micro en realizar una instrucción exceptuando las de salto que tardan el doble, por supuesto me refiero a instrucciones maquina, programación en bajo nivel).

Así que para saber la precisión de la rutina, pues esto es difícil, la rutina no es exacta, habría que desensamblar la compilación de la rutina contar el numero de instrucciones de la que esta compuesta y añadir este tiempo como error al calculo anterior que te indican, y después esta el error al calculo inherente al cristal, ya que es difícil conseguir los tiempos exactos, dependiendo de la frecuencia del cristal... todo esto son errores acumulados en la rutina, que genera el comando pause, cuando es compilado... por lo que la precisión del comando varia de una versión de Basic a otro, todo esta en la fineza que haya tenido el programador que diseño el Basic... por eso cuando se quiere mayor precisión la rutina pause hay que fabricarla uno mismo... pero normalmente el error suele ser muy pequeño, también este error se puede disminuir usando un cristal de una frecuencia rara que nos de un múltiplo exacto del tiempo mínimo que usamos como base de tiempos para hacer el calculo del pause.
Saludos desde Granada, España.

Desconectado Mario

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 873
Re: PAUSAS con distintos relojes
« Respuesta #7 en: 30 de Septiembre de 2006, 17:32:24 »
Y si ya estamos en cuestiones tan técnicas, también influye la carga capacitiva del cristal.

No se le colocan capacitores a tierra con el cristal nada mas porque sí. Esos capacitores son necesarios para que empiece a oscilar.

Cuando trabajaba para una empresa tuvieron ese problema y después de 7 horas se dieron cuenta que los cristales estaban bien, la máquina de SMT había colocado capacitores que estaban fuera del rango permitido para los cristales.

Un ejemplo
http://www.tla.co.nz/xtal1.html

Otro ejemplo en el .rar
La buena administración es utilizar el sentido común y la regla de oro; aunque el sentido común no es tan común como quisiéramos que fuera y, quien tiene el oro, hace las reglas.
George Terry

"A loser will defeat a genius with hard work"
Rock Lee

Desconectado Nichita

  • Colaborador
  • PIC12
  • *****
  • Mensajes: 86
Re: PAUSAS con distintos relojes
« Respuesta #8 en: 02 de Octubre de 2006, 12:09:41 »
Aqui hay un ejemplo de como medir los tiempos de un bloque de código en PBP con el Timer1:

http://www.picbasic.co.uk/forum/showthread.php?t=365