Autor Tema: Medir tiempo entre pulsos usando timer1  (Leído 2980 veces)

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

Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
Medir tiempo entre pulsos usando timer1
« en: 29 de Junio de 2005, 08:52:00 »
Que tal, espero que me puedan ayudar ya que no he trabajado mucho con el  modulo Timer de los PIC.
Lo que necesito es medir el tiempo entre pulsos o mejor dicho medir el tiempo en que termina un pulso y comienza el pulso siguiente,
me dijeron que usara el Timer1 del Pic16F87X, en modo temporizador. Lei el pdf pero lo que entendi es que hace lo mismo que el modo contador,
pero los registros del Timer1 se incrementan con ciclos de instruccion y no con pulsos externos, asi que creo que ninguno de los dos me sirve.
O yo me equivoco (que es lo mas probable Sonrisa Gigante); en el caso de que funcione con el Timer1 en modo temporizador. Como seria el proceso?.
Yo lo que necesito es que cuando haiga un flanco de bajada me active el Timer1(eso lo se hacer) y me empiece a medir el tiempo en bajo y cuando llegue
el flanco de subida leer ese valor(TMR1H:TMR1L Tiempo en bajo) y mostrarlo en una lcd(eso tambien lo se hacer), pero no se si se debe detener el timer primero
y ademas cuando llegue el flanco de bajada y active el timer1 que debo hacer?, me quedo en un ciclo esperando un flanco de subida?. De verdad tengo muchas dudas.
Bueno espero que me puedan ayudar y disculpen lo extenso del post.

De antemano gracias.
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Medir tiempo entre pulsos usando timer1
« Respuesta #1 en: 29 de Junio de 2005, 12:09:00 »
Usa el módulo CCP en modo captura y lo conseguirás.

Desconectado kyo_Meros

  • PIC10
  • *
  • Mensajes: 32
RE: Medir tiempo entre pulsos usando timer1
« Respuesta #2 en: 29 de Junio de 2005, 21:03:00 »

Tambien lo podrias lograr... atravez de interrupciones... provocadas por un cambio en alguna de las lineas MSB del puerto B...

Cuando exista dicha interrupcion... checas si fue un flanco descendente o ascendente... en caso de ser descendente... borras el timer1... y en el caso de ser ascendente almacenas los registros del timer1 en alguna variable... esto evitaria lo que mencionas "un ciclo esperando"...

Claro que el timer1 lo debes configurar para que se incremente... por ciclos de instruccion y con el divisor a tu conveniencia...

Esta es otra alernativa... la del modulo CCP es mas conveniente... pero a final de cuentas tu eres quien conoce mejor tu necesidad... asi que... checa ambas haber cual se ajusta mejor...

Para la que yo te expongo... podrias tener hasta 4 entradas... es decir podrias medir el tiempo hasta de 4 niveles "0"... atravez de esos pines del puerto B clero que tendrias que pensarle bien en que harias ante la interrupcion...

Espero que te sirva de algo... lo expuesto y suerte con tu objetivo...

Y espero que... pronto expongas tus experiencias hacerca del USB "Módulo USB del 18Fx550", ya que tambien yo ando en esas...

ATTE... Oscar M R... Saludos....

Desconectado RaDoN

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1498
RE: Medir tiempo entre pulsos usando timer1
« Respuesta #3 en: 30 de Junio de 2005, 04:55:00 »
Se me ocurre que asín mientras el micro ocupa una interrupción, puede ser el tiempo o memento en que debe de saltar otra y no mida realmente bien ...

Si juegas contra el mejor, pierdes como los demás.

Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
RE: Medir tiempo entre pulsos usando timer1
« Respuesta #4 en: 10 de Julio de 2005, 09:14:00 »
Que tal gracias por sus respuestas, trate de hacerlo por el modo captura pero no me hace nada segui todos los pasos para configurar pero nada, alguno de ustedes a trabajado con el o sabe de alguna pagina donde pueda haber un ejemplo.

De antemano gracias.
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Medir tiempo entre pulsos usando timer1
« Respuesta #5 en: 11 de Julio de 2005, 00:17:00 »
Así te lo he hecho en C:

Codigo:

#include <16F876.h>

#use delay(clock=4000000)

#include <lcd.c>

int16 bajada,subida,tiempo_entre_pulsos;

#int_ccp2
void isr()
{
    bajada = CCP_1;
    subida = CCP_2;
    tiempo_entre_pulsos = subida - bajada;
 
    lcd_gotoxy(1,1);
    printf(LCD_PUTC,"t=%5lu%s",tiempo_entre_pulsos,"us"Giño;   
}               


main()
{
    set_tris_c(0xFF);
   
    lcd_init();                      // Comandos de inicialización del LCD.

    setup_ccp1(CCP_CAPTURE_FE);    // Configura CCP1 para capturas del TMR1
                                   // con flancos de bajada en RC2
    setup_ccp2(CCP_CAPTURE_RE);    // Configura CCP2 para capturas del TMR1
                                   // con flancos de subida en RC1
    setup_timer_1(T1_INTERNAL);    // El TMR1 será incrementado con la
                                   //frecuencia interna de reloj (fosc/4)
    enable_interrupts(INT_CCP2);   // Habilita la interrupción por captura de
                                   // CCP2 (PIN RC1)
    enable_interrupts(GLOBAL);

    while(1);

}



Debes cortocircuitar externamente RC1 y RC2 y aplicar a esta unión tus pulsos.

¡¡¡ Que cortito, eh !!!

Un saludo

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: Medir tiempo entre pulsos usando timer1
« Respuesta #6 en: 13 de Julio de 2005, 00:40:00 »
En ensamblador creo que también lo tengo, pero ya que no has dado signos de vida será para otra ocasión.

Un saludo

Desconectado atlasdelcarinakeel

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 277
RE: Medir tiempo entre pulsos usando timer1
« Respuesta #7 en: 14 de Julio de 2005, 11:30:00 »
Que tal pocher, gracias por el codigo y disculpa que no me habla conectado yo he trabajado poco con el C y me dices que lo tienes en asm, asi que si no es molestias lo podias subir o enviarmelo a mi correo: atlasdelcarinakeel@yahoo.es

De antemano gracias. Sonrisa Gigante
Si tienes un problema y tiene solucion, para que te preocupas? y si no tiene solucion, para que te preocupas?