Autor Tema: Timer programable pic16f84  (Leído 3282 veces)

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

Desconectado paolivera

  • PIC10
  • *
  • Mensajes: 5
Timer programable pic16f84
« en: 05 de Diciembre de 2010, 01:52:37 »
Hola
Trate de buscar la solucion a mi problema pero no la encontre en este foro, si alguin sabe donde esta, por favor indiqueme donde, y pido disculpas.
Mi problema es el siguiente, con un pic16f84 represento en dos display 7 segmentos multiplexados los valores que van de 0,1...0,2....hasta 1,9. Estos valores representan retardos que van de 300 mseg hasta 2,02 seg respectivamente que activan una salida (rb0) del pic. NO PUEDO establecer la relacion entre el numero presentado en los display y el tiempo, cabe destacar que el incremento no es lineal, para tratar de aclarar les muestro la siguente tabla
Display             tiempo
0,1                    300mseg
0,2                    300mseg
0,3                    480mseg
0,4                    580mseg
0,5                    680mseg
0,6                    770mseg
0,7                    860mseg
0,8                    960mseg
0,9                    1,06seg
1,0                    1,16seg
 .
 .
 .
1,9                    2,02seg                 

Para donde arranco?
Muchas gracias

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Timer programable pic16f84
« Respuesta #1 en: 05 de Diciembre de 2010, 10:57:21 »
Hola, si no hay relación matemática trivial entonces yo usaría una tabla con RETLW.

Desconectado Felixls

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 300
Re: Timer programable pic16f84
« Respuesta #2 en: 05 de Diciembre de 2010, 14:56:27 »
Hola paolivera, como dice mig, si no queda otra usa la tabla, pero por si te sirve podrías usar la siguiente fórmula

Y = LN(x+1.3)+x*0.45



Pienso que podría servirte, igualmente no se como se comporta tu delay entre (1, 1.9) ya que no diste más datos, pero es cuestión de probar y ajustar.

saludos.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Timer programable pic16f84
« Respuesta #3 en: 06 de Diciembre de 2010, 11:44:28 »
Uff Félix, un logaritmo natural en assembler  :shock:

Creo que una tablita sería más amigable jeje  ;-)

Desconectado pelacable

  • PIC10
  • *
  • Mensajes: 38
Re: Timer programable pic16f84
« Respuesta #4 en: 06 de Diciembre de 2010, 14:02:20 »
Hola muchachos!

Si los tiempos los generas con rutinas independientes y fijas es muy simple: llama a la rutina de tiempo, por ejemplo la Nº 1 luego dirigete a la dirección de la tabla que corresponda, La rutina Nº2 tiene el mismo tiempo, entonces nombras a la rutina como 1_1 la repites y ya estás en la posición de tabla Nº2, colocas ése dato y listo!

Si los tiempos son generados desde un mismo y único sitio, tendrás que disponer de un contador que por cada 10ms. avance o descuente (como más te guste) y luego al salir la señal por el puerto (fin del tiempo) lees el contador y lo vuelcas a la tabla.

En el caso que se repitan los números tendrás que ver si ya lo colocaste antes y si es así saltas una posición de la tabla.

De última, siempre te queda la opción de hacer cuentas :D :D :D

Saludos


Desconectado paolivera

  • PIC10
  • *
  • Mensajes: 5
Re: Timer programable pic16f84
« Respuesta #5 en: 09 de Diciembre de 2010, 16:54:50 »
Hola muchachos!

Si los tiempos los generas con rutinas independientes y fijas es muy simple: llama a la rutina de tiempo, por ejemplo la Nº 1 luego dirigete a la dirección de la tabla que corresponda, La rutina Nº2 tiene el mismo tiempo, entonces nombras a la rutina como 1_1 la repites y ya estás en la posición de tabla Nº2, colocas ése dato y listo!

Si los tiempos son generados desde un mismo y único sitio, tendrás que disponer de un contador que por cada 10ms. avance o descuente (como más te guste) y luego al salir la señal por el puerto (fin del tiempo) lees el contador y lo vuelcas a la tabla.

En el caso que se repitan los números tendrás que ver si ya lo colocaste antes y si es así saltas una posición de la tabla.

De última, siempre te queda la opción de hacer cuentas :D :D :D

Saludos


Hola, ante todo gracias por responder
Ya entendi el tema de las tablas
Como me aconsejaron realice un delay BASE de 10 mseg, luego lo meti en un bucle que es comandado por una variable que corresponde al numero presentado en los display.
Funciona todo de diez
Muchas gracias por todo