# Contador de pulsos unido al microcontrolador DLP-245PB



## dcshonda (Nov 3, 2005)

Hola amigos. Encantado de formar parte de este foro.

El tema del que os quiero consultar es sobre como hacer un contador de pulsos para luego pasarlo a un ordenador mediante el puerto USB. Tengo un sistema hardware implementado que me produce una secuencia de unos y ceros, y quiero detectar mediante un contador, el numero de unos de esa secuencia para pasarlo luego mediante el microcontrolador DLP-245PB que emplea el FT245BM. Pero realmente no se muy bien como funciona. 

En principio he pensado en implementar un contador que me lea una secuencia serie cada cierto tiempo (5 microsegundos mas o menos) y me pase el numero de unos mediante una secuencia en paralelo al microcontrolador. Pero no se que dispositivo emplear.

Luego no se si debo interconectar las lineas paralelas procedentes del contador al bus de datos entre el PIC18F877 y el FT245BM (dentro del DLP-245PB)  o si debo interconectarlas a la entrada del PIC18F877.

Si alguien me puede echar una mano, y decirme la mejor manera de implementar un contador de pulsos (Trabajare con frecuencias de reloj comprendidas entre 1.25Mhz y 20Mhz) , de forma que coja una secuencia serie, y me de el resultado en una secuencia en paralelo..

Muchisimas gracias por vuestro tiempo.


----------



## Marcelo (Nov 3, 2005)

Hola dcshonda,

Creo que la forma más sencilla es utilizar y configurara el pin RBO para que permita capturar una interrupción externa en el pic 16F877, llevando a él la señal en la que quieres contar los pulsos.

De esta forma cada vez que la señal genera un "1", se producirá una interrupción. En la rutina encargada de manejar esta interrupción, lo único que debes implementar es un contador.  Cuando quieras enviar al módulo USB (FT245BM)  la cantidad de "1", solo debes pasarle el valor del contador que manejas en la rutina de interrupción.

Saludos,
Marcelo.


----------



## dcshonda (Nov 4, 2005)

Muchas gracia Marcelo. 
Tengo que cambiar de micro. Creo que lo que dices de programar la patilla RBO para que detecte interrupciones tmb lo podré hacer con este micro. 
Ahora bien, no dispongo de nada para programar el micro, y voy apurado de tiempo pues tengo que hacer un programa software para que me lea del puerto USB (Visual C++), y necesito realizar un contador para que me pase el resultado de la cuenta al microcontrolador. Lo que quiero decir, es si conoceis alguna forma de no reprogramar el micro (ya q viene reprogramado de fábrica...para emplearlo como tx y rx de puerto),  y realizar un contador externo al micro, que le pase el resultado al micro.
Os paso unos esquemas del micro, y de lo que tengo pensado, para ver si está bien, o si podeis ayudarme con más ideas. Muchas gracias.


----------



## Marcelo (Nov 4, 2005)

Creo que todo lo que tienes que hacer es colocar las salidas de tu contador a los puertos del PIC, si es que esos pines (desde C0 hasta C7) están declarados como entradas; y usar como reloj del contador, la señal a la que la quieres contarle los pulsos.

Cada vez que la señal manda un "1", el contador avanza y se lo pasa al uP (PIC).

Estuve leyendo el flyer del módulo que tienes, pero no es claro en como usas las facilidades de Tx y Rx pues depende de como esté preprogramado el uP y como se controla desde el PC.

De la forma en que te digo, cuando solicites leer el USB éste te mandará el valor que tiene el contador que son las mismas señales que tiene el PIC en sus puertos es decir, que el byte formado por los estados de las puertas C0 hasta C7 será el número de pulsos contados.

El problema radica en que debes sincronizar de alguna forma el timing de lectura es decir:  Suponte que el contador leyó 256 unos (8 bits, que es lo que tienes); si no lees el conteo con tu programa C++ en ese momento y esperas el próximo pulso, la interfaz te mandará un "0" pues el contador dió toda la vuelta. 

Por otra parte, si el circuito ( DLP-245PB) envía a Tx cada vez que haya un cambio de estado en las compuertas del PIC, entonces si podrías actuar en consecuencia pues tendría un feedback establecido entre el PC y el módulo.

Es muy dificil responderte sin la información completa, el algoritmo que quieres seguir para tu programa y como funciona a ciencia cierta (o como está preprogramado) ese módulo, pero espero que esto te sea de utilidad.

Marcelo.


----------



## dcshonda (Nov 7, 2005)

Lo he estado mirando, y creo que puede funcionar. Respecto a la implementacion del software (Visual C++), creo que no fallara. Lo tengo escrito para que cada poco tiempo coja los bits contados del puerto USB y los almacene. Tengo que probar el algoritmo...ya te comentare. 

La programacion que lleva el uP no lo tengo muy claro, pero lo que he estado leyendo... dice que viene programado para emplearlo como simple interfaz, para enviar los datos al ordenador como si de un puerto COM se tratase... Por lo que mediante el programa podre monitorizar el puerto COM para extraer los resultados del contador. 

No voy a reprogramar el uP porque el sistema es un trabajo que tengo que hacer, y no encima no me corresponde a mi, asi que por eso creo que voy a simplificarlo con el contador externo. De todas formas cuando consiga los componentes y lo pruebe, ya os comentare como resulto. Por si le sirve a alguien de algo. 

Muchas gracias otra vez Marcelo. (Y gracias, por el consejo de no duplicar los posts)


----------



## danny_ldu (Ene 31, 2006)

Que tal Marcelo

Mira estoy diseñando un proyecto en donde necesito enviar información de una cámara de videa a una memoria USB removible pero el enlace tengo que hacerlo sin utilizar el PC si me puedes dar alguna idea te agradezco de antemano

DANNY


----------

