TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Pchuqui_1 en 03 de Octubre de 2012, 00:31:22

Título: Medir frecuencia de 1 Hz con modulo ccp
Publicado por: Pchuqui_1 en 03 de Octubre de 2012, 00:31:22
Hola a todos. Estoy tratando de medir  una señal de 1 Hz con el modulo CCP con un pic18F4550. Lo estoy usando a 20 Mhz, así que el tiempo de desbordamiento del TIMER1 es de 0.104 seg. o sea que la mínima frecuencia que puedo medir es de 9,5 Hz, luego el timer1 se desborda. Si quiero medir frecuencias bajo este valor, tengo que contabilizar la cantidad de veces que se desborda el timer1 y sumarle el resto. (me explico  :oops:).  Bueno, mi pregunta es, como hago para chequear la bandera que genera el desbordamiento del timer1, en que parte del programa lo pongo... (yo se que hay que controlar el bit TMR1|F del regsitro PIR1).  Hay alguna otra técnica para hacer lo mismo?
Título: Re: Medir frecuencia de 1 Hz con modulo ccp
Publicado por: Pchuqui_1 en 03 de Octubre de 2012, 00:44:17
Agrego una dudita.. jaa Cuando el modulo CCP se dispara por la detección de algún flanco, el timer1 comienza su cuenta desde 0 no???
Título: Re: Medir frecuencia de 1 Hz con modulo ccp
Publicado por: AngelGris en 03 de Octubre de 2012, 09:19:40
  Ese tiempo de desbordamiento es con el prescaler a 8. Pero si se hace la inversa de ese tiempo no da 9.5KHz sino 9.5Hz
 
Título: Re: Medir frecuencia de 1 Hz con modulo ccp
Publicado por: Pchuqui_1 en 03 de Octubre de 2012, 12:12:40
Si perdon!!!! son 9.5 Hz, estaba dormido cuando escribí eso.  :? Estoy pensando en habilitar la interrupción por desbordamiento del TIMER1 y cuando ingresa a la rutina de atención  contar la cantidad de veces que se va desbordando el TIMER1, pero se complica bastante y no se si es correcto hacerlo así. En proteus de esa forma no funciona bien..  :5] :5] :5]
Título: Re: Medir frecuencia de 1 Hz con modulo ccp
Publicado por: Suky en 03 de Octubre de 2012, 12:29:45
Agrego una dudita.. jaa Cuando el modulo CCP se dispara por la detección de algún flanco, el timer1 comienza su cuenta desde 0 no???

No! Guarda en los registros CCP el valor que tenga el timer.

Si perdon!!!! son 9.5 Hz, estaba dormido cuando escribí eso.  :? Estoy pensando en habilitar la interrupción por desbordamiento del TIMER1 y cuando ingresa a la rutina de atención  contar la cantidad de veces que se va desbordando el TIMER1, pero se complica bastante y no se si es correcto hacerlo así. En proteus de esa forma no funciona bien..  :5] :5] :5]

Lo debes hacer de esa forma, contar overflows. Por ahí te conviene utilizar la interrupción externa, vas a tener suficiente resolución y precisión. En el primer flanco seteas el timer a 0, y en la siguiente capturas el valor del timer y junto con los overflows calculas el periodo.

Saludos!
Título: Re: Medir frecuencia de 1 Hz con modulo ccp
Publicado por: RedPic en 03 de Octubre de 2012, 15:56:36
Tiene ya su tiempo pero igual te puede servir  :)

Midiendo un pulso. 2ª Parte. Tiempo en Alto con INTCCP (http://www.todopic.com.ar/foros/index.php?topic=14479.0)
Título: Re: Medir frecuencia de 1 Hz con modulo ccp
Publicado por: Pchuqui_1 en 03 de Octubre de 2012, 16:21:05
Estoy simulándolo, y puse una foto para que vean lo que hace. Cuando se ejecuta la interrupción por flanco de subida, CCP1, pongo el valor del timer1 a 0. Que como bien se ve lo hace, pero luego ese valor tiene que transferirse al registro de 16 bits CCPR1 y luego a la variable que yo escogí (TFS). Pero se carga con otro valor que no entiendo de donde sale....
Gracias RedPic... anoche estuve mirándolo y estudiándolo mucho a ese articulo. Voy a seguir insistiendo.


(http://imageshack.us/a/img802/9467/capturazg.jpg) (http://imageshack.us/photo/my-images/802/capturazg.jpg/)
Título: Re: Medir frecuencia de 1 Hz con modulo ccp
Publicado por: Suky en 03 de Octubre de 2012, 18:07:43
Y esta bien, o sea, al ocurrir el flanco guarda en CCP el valor del timer y después tu lo colocas a 0. Que quieres que haga entonces?
Título: Re: Medir frecuencia de 1 Hz con modulo ccp
Publicado por: Pchuqui_1 en 04 de Octubre de 2012, 00:12:44
Yo creo estar poniendo el timer1 a cero y luego guardar ese valor. O sea que cuando detecte el flanco se guarde en el registro CCP 0. No estoy haciendo eso en el programa....  :(
Título: Re: Medir frecuencia de 1 Hz con modulo ccp
Publicado por: Suky en 04 de Octubre de 2012, 00:32:07
Yo creo estar poniendo el timer1 a cero y luego guardar ese valor. O sea que cuando detecte el flanco se guarde en el registro CCP 0. No estoy haciendo eso en el programa....  :(

No, para nada. Para que puedas capturar cuando el timer esta en 0, o lo haces de casualidad o tienes que tener apagado el timer  :mrgreen: El timer cuenta libremente, y cuando ocurre un flanco en el pin CCP, se copia por hardware lo que tiene en ese momento el timer en los registros del CCP y si tienes habilitada la interrupción se activa. Todo ese código que implementas se ejecuta unos ciclos después del evento de captura.


Saludos!
Título: Re: Medir frecuencia de 1 Hz con modulo ccp
Publicado por: jeremylf en 04 de Octubre de 2012, 00:45:38
Tiene ya su tiempo pero igual te puede servir  :)

Midiendo un pulso. 2ª Parte. Tiempo en Alto con INTCCP (http://www.todopic.com.ar/foros/index.php?topic=14479.0)

+1