TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fede_joe en 21 de Octubre de 2014, 15:46:28
-
Hola a todo,
estoy teniendo problemas para medir el tiempo entre pulsos. básicamente se trata de un disco que gira por medio de una fuente de agua, este tiene un imán que por medio de un transistor de efecto Hall toma el pulso del mismo.
Estoy utilizando un Pic16f84a con XTAL de 4MHz programando en C con MikroC Pro
Intente utilizar el TMR0 ingresando un pulso por T0CKl pero no pude lograr que me devuelva en microsegundos cuanto tiempo hay entre pulso y pulso.
Espero que alguien me pueda orientar a la solución
Atte.
-
Hola, un PIC trabajando a 4Mhz tiene un tiempo por instrucción de 1uS, el tmr0 tiene 8 bit cuenta hasta 255 pulsos, si el tiempo entre pulsos es mayo no te va a servir, si le pones el preescaler debes multiplicar los pulsos pero pierdes exactitud, te recomiendo utilizar otro PIC que tenga un temporizador de 16 bit y aún un modo de captura, puede ser el 16f628 ó el 16f1827, así podrás contar el tiempo entre pulsos hasta 65535 uS y le puedes poner preescaler hasta de 8 si lo necesitas.
Saludos.
-
Hola, un PIC trabajando a 4Mhz tiene un tiempo por instrucción de 1uS, el tmr0 tiene 8 bit cuenta hasta 255 pulsos, si el tiempo entre pulsos es mayo no te va a servir, si le pones el preescaler debes multiplicar los pulsos pero pierdes exactitud, te recomiendo utilizar otro PIC que tenga un temporizador de 16 bit y aún un modo de captura, puede ser el 16f628 ó el 16f1827, así podrás contar el tiempo entre pulsos hasta 65535 uS y le puedes poner preescaler hasta de 8 si lo necesitas.
Saludos.
Otra que se me ocurre que puede hacer es incrementar un contador cada vez que desborde el timer y asi poder ocupar ese mismo micro.
//---------------------------------
interrupcion del timer()
{
contador ++;
}
Me parece que podria funcionar, igual es mejor como vos decis ocupar un timer1 o timer2 que suelen ser de 16bits
-
Hola, un PIC trabajando a 4Mhz tiene un tiempo por instrucción de 1uS, el tmr0 tiene 8 bit cuenta hasta 255 pulsos, si el tiempo entre pulsos es mayo no te va a servir, si le pones el preescaler debes multiplicar los pulsos pero pierdes exactitud, te recomiendo utilizar otro PIC que tenga un temporizador de 16 bit y aún un modo de captura, puede ser el 16f628 ó el 16f1827, así podrás contar el tiempo entre pulsos hasta 65535 uS y le puedes poner preescaler hasta de 8 si lo necesitas.
Saludos.
Otra que se me ocurre que puede hacer es incrementar un contador cada vez que desborde el timer y asi poder ocupar ese mismo micro.
//---------------------------------
interrupcion del timer()
{
contador ++;
}
Me parece que podria funcionar, igual es mejor como vos decis ocupar un timer1 o timer2 que suelen ser de 16bits
Hay que sumarle los ciclos que llevan a la interrupcion + lo que se le suma a la variable + lo que pones a 0 el temporizador y el desactivado y activado de la interrupcion y limpieza de flag. no se si me olvido algo e.e, sino los tenes en cuenta es un error acumulativo.
-
Fede, no se si te servirá de ayuda pero hace tiempo escribí una serie de artículos sobre el tema (en CCS C) que podrían por lo menos aclararte algunos conceptos. :mrgreen:
Serie Técnicas en C : Presentación e Indice de Contenidos (http://www.todopic.com.ar/foros/index.php?topic=14427.msg87502#msg87502)
-
Fede, no se si te servirá de ayuda pero hace tiempo escribí una serie de artículos sobre el tema (en CCS C) que podrían por lo menos aclararte algunos conceptos. :mrgreen:
Serie Técnicas en C : Presentación e Indice de Contenidos (http://www.todopic.com.ar/foros/index.php?topic=14427.msg87502#msg87502)
Yo los recomiendo, todos estos artículos siempre me aportan ideas y soluciones
-
Fede, no se si te servirá de ayuda pero hace tiempo escribí una serie de artículos sobre el tema (en CCS C) que podrían por lo menos aclararte algunos conceptos. :mrgreen:
Serie Técnicas en C : Presentación e Indice de Contenidos (http://www.todopic.com.ar/foros/index.php?topic=14427.msg87502#msg87502)
Yo los recomiendo, todos estos artículos siempre me aportan ideas y soluciones
Gracias ppyote :oops:
Aprovechando que hemos hablado de ellos les he dado un repaso para corregir los links de las imágenes, ahora se ven correctamente :mrgreen:
-
Realmente es a ti al que hay que agradecer RedPíc...
Un saludo
-
porque no emplean el módulo CCP y listo!
PD: y muerte al 16F84...
-
porque no emplean el módulo CCP y listo!
PD: y muerte al 16F84...
Por que no tiene modulo CCP xD
Y si.. no entiendo como la gente compra uno de esos cuando el costo es el doble de un PIC16F887 o un 16F628A y las prestaciones mucho menores, y tambien los vendedores que lo siguen comprando para venderlos e.e