TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: IngRandall en 12 de Marzo de 2012, 13:22:22
-
Hola amigos del foro, es que estoy haciendo una temporizacion con el Timer 2 del PIC 24FJ128GA010, pero no se muy bien como saber cuanto tiempo es teóricamente si utilizo el timer, es que la verdad poco he utilizado el timer pero esta vez me toco así :(. el Preescaler esta configurado así Fosc/2, prescaled 1:256, ojala me puedan ayudar.
-
Preba este enlace en la web de Redpic http://picmania.garcia-cuervo.net/recursos.php
tiene una magnifica calculadora para los timers de 8 y 16 bit.
Espero te sirva como a mi que doy las gracias a Redpic por ella.
Saludos
-
Exactamente como lo configuraste? Y en base a eso, viendo el datasheet (o manual de referencia), que temporización calculaste?
-
es que en realidad eso me lo pasaron y quiero saber como se calcula, mira,
T2CON = 0x8030;
allí esta una imagen para q veas el datasheet.
:?
-
Hola Ing Randall, te muestro como lo hago:
Timer1 prescaler a 256
#define MIPS 40.0
PR1 = MIPS/256*10000; ////10 ms de tiempo del timer1
saludos
-
Bueno, muy complicado no es.
El timer cuenta 1 cada (1/(Fosc/2))x256. Y se resetea al llegar a PR2=?.. :tongue:
Busca por la red teoría sobre los timer, hay muuucho! ;-)
-
aaaaaaaaaaaaaaa yaaaaaaaaaaaaaaaaaaaa... jajajajaja al parecer e faltaba el PR2, hice una pequeña prueba y funciono perfecto, vamos a ver como me va y les comento, gracias.
-
El señor AngelGris puso lo siguiente:
A ver si puedo tratar de explicar el asunto...
FCY = 40Mips -> 40MHz -> que cada ciclo de instrucción dura 1/40M -> 25nS
El timer queda contando dichos pulsos pero con un divisor (prescaler) de 256, por lo tanto cada 256 pulsos sólo se incrementará en 1. Si ahora multiplicamos por el período que vos pusiste nos da 25nS * 256 * 65535 = 419.424ms
La idea es, duración el pulso * prescaler * periodo = tiempo total de la cuenta
osea que si eso es valido y transportamos eso a mi ejemplo, tendríamos que:
Mi oscilador es de 8MHz.
FCY = 8Mips -> 8MHz -> que cada ciclo de instrucción dura 1/8M -> 1.25uS
1.25uS * 256 * 65535 = 20.9712s
Esto es cierto???
-
Según mis calculos:
MIPS = 8.0
PRESCALER = 256
TIEMPO en us = 65535
PR2 = MIPS/PRESCALER * TIEMPO;
PR2 salio 2047
Simulando, el tiempo resulto 65.535875 ms, probado en MPLAB.
No encuentro el apunte de como llegué a esa formula, pero siempre me ha funcionado.
saludos
-
Hola KALLITOS, utilice la formula que me pasaste y me funciono muy bien, ya probé con un timer de 1 seg y funciono, muchas gracias.
-
Que bueno.
saludos.