TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Fainx en 01 de Noviembre de 2009, 21:24:28

Título: [Pregunta] Tiempo minimo entre pulsos a 37khz
Publicado por: Fainx en 01 de Noviembre de 2009, 21:24:28
Saludos a los miembros del foro hace poco lo conoci y me atrapo. hace poco inicie mi camino al mundo d los pic y me resulta facinante se programar en c++, pero estoy tratando d aprender assembler por k la verdad me facino. luego d esta pequeña introduccion quisiera preguntar si alguien me podria ayudar con mi problema
si tengo un pic trabajando a 37khz y supongamos que quiero captar pulsos de una entrada podria ser desde un pulsador alguien sabe cual es el calculo para determinar el tiempo minimo entre pulso y pulso? para que se entienda un poco mejor si preciono un pulsador a una velocidad alta un pulso tras otro cuanto seria el tiempo minimo que detectaria entre pulso y pulso. espero que se entienda desde ya muchas gracias.
ejemplo

PULSO --tiempo-- PULSO me imagino que si recibo pulsos a una gran velocidad no todos serian captados.

Salute.
Título: Re: [Pregunta] Tiempo minimo entre pulsos a 37khz
Publicado por: todopic en 01 de Noviembre de 2009, 22:13:09
Hola, bienvenido al foro!
Si tu programa es por pooling, dependera de la cantidad de lineas que tenga por leer hasta llegar a tu instruccion de testeo del pulsador...
pero si trabajas con interrupcion, dejara lo que este haciendo para atender el llamado en el momento que pulsas...  pero si el proceso o tiempo  de calculos es mayor que el tiempo entre  dos pulsaciones, alli si perderas pulsos...
Ten en cuenta, que el micro trabajara a con un reloj 4 veces menor que la frecuencia del oscilador


Norberto
Título: Re: [Pregunta] Tiempo minimo entre pulsos a 37khz
Publicado por: BrunoF en 01 de Noviembre de 2009, 22:20:49
Lo mas eficaz si necesitas altas frecuencias es utilizar un timer como contador de pulsos, y otro para contar el tiempo transcurrido entre ellos.

Saludos.
Título: Re: [Pregunta] Tiempo minimo entre pulsos a 37khz
Publicado por: Fainx en 01 de Noviembre de 2009, 22:28:18
Gracias por la respuesta Norberto aper si entendi algo supongamos que mi procesador tarde 108µs por instruccion no voy a usar interrupciones, para calcular los pulsos uso 3 instrucciones 108x3=324µs si recibo 2 pulsos en menos de ese tiempo no lo detectaria?


Lo mas eficaz si necesitas altas frecuencias es utilizar un timer como contador de pulsos, y otro para contar el tiempo transcurrido entre ellos.

Saludos.

No tengo idea como utilizar el timer como contador de pulsos pero me pondre a investigar parece una buena opcion.

Gracias por la ayuda.
Título: Re: [Pregunta] Tiempo minimo entre pulsos a 37khz
Publicado por: BrunoF en 01 de Noviembre de 2009, 22:34:47
Gracias por la respuesta Norberto aper si entendi algo supongamos que mi procesador tarde 108µs por instruccion no voy a usar interrupciones, para calcular los pulsos uso 3 instrucciones 108x3=324µs si recibo 2 pulsos en menos de ese tiempo no lo detectaria?

Si usas polling y cada iteracion de tu bucle es mas lenta que el cambio de flanco del pulso, vas a perder obviamente la cuenta.


Lo mas eficaz si necesitas altas frecuencias es utilizar un timer como contador de pulsos, y otro para contar el tiempo transcurrido entre ellos.

Saludos.

No tengo idea como utilizar el timer como contador de pulsos pero me pondre a investigar parece una buena opcion.

Gracias por la ayuda.

No es para nada dificil hacerlo. No recuerdo bien los tiempos de demora, pero si no me equivoco podrias detectar frecuencias bastante mas altas que 37khz usando el pic a 4Mhz.

Es cuestion de mirar el datasheet. Si usas un PIC de gama baja o media, el Timer0 y/o 1 son los que normalmente poseen,entre otras, la capacidad de actuar como contadores de pulsos.

Saludos.

Título: Re: [Pregunta] Tiempo minimo entre pulsos a 37khz
Publicado por: Suky en 01 de Noviembre de 2009, 23:58:42
No tengo idea como utilizar el timer como contador de pulsos pero me pondre a investigar parece una buena opcion.

Gracias por la ayuda.

Por aquí (http://174.123.172.210/~todopicc/foros/index.php?topic=24720.0) hay un ejemplo en assembler de como usar el timer0 en modo contador.


Saluods!