Creando una libreria de retardos
| #1 Creando una libreria de retardos |
| #2 |
|
mario18560
|
Hola:
No se si es la respuesta que buscas, pero para el calculo de temporizaciones se usa la siguiente formula: Temporizacion[ms] = 4 . Tclock . valor de cuenta del TMR0 . prescaler Como ves, la temporizacion buscada es un multiplo del ciclo de instruccion. En la formula: 4 . Tclock = 1 ciclo de instruccion. Tclock = 1/fclock; donde, fclock, es la frecuencia del oscilador que estas usando. valor de cuenta del TMR0: es el valor que pretendes que cuente el TMR0 para lograr la temprizacion buscada. Recuerda que el timer funcionando como contador sincronico, cuenta de 0 a 255 y desborda produciendo overflow. Pero, si le cargo un valor al inicio, puedo hacer que cuente a partir de alli hasta 255. prescaler: es el divisor programable con que cuenta el PIC. Esta ubicado en el registro OPTION. Ejemplo, si escribes en los tres primeros bits de dicho registro 000, logras dividir la frecuencia por 2. Si escribes 001, la divides por 4...., asi hasta 111, donde divides por 256 Por lo tanto, para lograr una temporizacion determinada, por ej. 1ms trabajando a fclock= 4MHz, haces lo siguiente: 1/4MHz= 250ns, y por lo tanto, 4 . 250ns= 1 us de ciclo de instruccion. Te queda entonces 1ms = 1us . X Luego, determinas el valor de X. En este caso, X=1000. Es el multiplo del ciclo de instruccion que buscas. Lo que debes hacer ahora es el "ajuste fino" y el "ajuste grueso" para lograr de la forma mas exacta el multiplo de ciclo de intruccion calculado recien. Esto la haces ajustando el prescaler (ajuste grueso) y el valor de cuenta del TMR0 (ajuste fino). En este caso, puedes hacer valor de cuenta= 125 y prescaler=8. (8.125=1000). Es decir, debes escribir 010 en los bits PS2-PS1-PS0 de OPTION. Esto equivale a prescaler=8. Luego cargar al inicio en el TMR0, el valor 131 (256 - 125), para que cuente a partir de alli hasta su desborde. Para determinar el overflow del TMR0, testeas el bit T0IF (bandera de desborde de TMR0) del registro INTCON. Espero te sirva. Un saludo cordial. |
|||||||||||
|
|
||||||||||||
|
| Temas de interés | |
|---|---|
| Cuenta descendente horas, minutos y segundos. | |
| Cuenta revoluciones | |
| temporizador de cuenta atras | |
| cuenta revoluciones de leds | |
| Diseño de cuenta vueltas | |
| Foros de Electronica |
| ||
Cuestiones Elementales de Electrónica ||
Fuentes de alimentacion ||
Circuitos de radio ||
Diseño de circuitos en general || || Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión || || Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos || |
Site Map
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad
© Foros de Electrónica
Comunidad Internacional de Electrónicos
Powered by phpBB © 2001, 2005 phpBB Group
Acerca de || Política de privacidad

