Autor Tema: Medir un pulso  (Leído 1486 veces)

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

Desconectado Ric555

  • PIC10
  • *
  • Mensajes: 37
Medir un pulso
« en: 23 de Febrero de 2005, 13:22:00 »
Hola a todos/as

Desearía saber como se puede hacer de una forma sencilla el medir cuanto dura un pulso. Estoy haciendo una rutinas para el 16f84 para leer IrDa pero me cuesta el saber cuanto dura un pulso IrDa.

alguna sugerencia?

Muchas gracias

Desconectado pikman

  • Moderador Local
  • PIC24F
  • *****
  • Mensajes: 679
RE: Medir un pulso
« Respuesta #1 en: 23 de Febrero de 2005, 20:10:00 »
Pues, con el 84 , puedes usar el TMR0, si pones un xtal de 4 mhz, el timer se incrementa a 1 uS, usando la interrupcion del timer y la de RB0 puedes capturar el valor del timer, claro no se la frecuencia pero el timer0 que es el unico en el 84 tiene solo un registro de 8 bits lo que te permitira contar si no lo preescalas hasta 255 uS, pero si ajustas el preescaler a 256 podras contar hasta 65535 uS, si no cambia por un 16F627 ó 16F828 que tiene un puerto de captura CCP, que justamente sirve para eso, pero ademas esta asociado al TMR1 que es de 16 bits, y el CCP genera una interrucion, asi que es mas facil, yo lo use para decodificar un control remoto manchester,

espero te sirva

SALUDOS

saludos
PikMan

Desconectado Ric555

  • PIC10
  • *
  • Mensajes: 37
RE: Medir un pulso
« Respuesta #2 en: 24 de Febrero de 2005, 12:18:00 »
Gracias Pikman por la respuesta lo que pasa es que me cuesta un poco implementarlo en código.

Según el protocolo irda un Bit a 38400 dura 26 us que se desglosa, si es un cero irda de la siguiente forma
10us (sin pulso) 5us(pulso) 10us(sinpulso) mas o menos sumando dan los 26 us. y si es un uno son 26us sin pulso.

Lo que no tengo claro es implementarlo, ya que la idea sería cuando se detecte el StarBit esperar 15 us (que sería 5us de pulso y los 10 sin pulso). Y a partir de ahí repetir 8 veces el siguiente proceso (uno por cada bit), si en 26us no hay pulso es un 1 y si ha habido pulso es un cero.

Alguna sugerencia?

Muchas gracias