Autor Tema: como implementar contadores en un integrado  (Leído 2032 veces)

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

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
como implementar contadores en un integrado
« en: 28 de Abril de 2010, 05:59:00 »
Buenas,

estoy implementando unos 10 a 15 contadores de 16bit (frecuencia entorno a 300khz). Me refiero a contadores de la frecuencia de señales cuadradas externas. Actualmente utilizo un pequeño micro para cada contador (usando su timer en modo contador). Estirando puedo poner un micro con 2 contadores (y mas patas). Luego, se tienen que pasar entre todos ellos el resultado de contaje a cierto ritmo (po ej. cada 100ms todos los contajes enviados). Por cierto, utilizo micros de Freescale.

Que alternativas se os pasa por la cabeza para mininizar el diseño?
Se me ocurre utilizar una FPGA implementando contadores. Seguro que funciona, pero me parece matar moscas a cañonazos (y supongo que más consumo).
Tal vez una CPLD tipo coolrunner XC2C64A,... aunque creo que dispone de pocos registros para implementar tantos contadores. Si me voy a CPLD mas grandes, ya meto un bicho de muchas patas (aun así, ocuparía penos que 8 o 15 micros contando).
Desconozco si los micros de la serie PSCOC puede implementar algo asi.

La idea es que necesito contar muchas señales, y en función de ellas actuar (muchos contadores y un micro sería el resumen).

Un saludo. Dani.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: como implementar contadores en un integrado
« Respuesta #1 en: 28 de Abril de 2010, 12:31:12 »
Hola, se me ocurre esto, decime si no estoy mandando cualquiera.

  • Usar las entradas KBI como detectores de eventos, en los micro FreeScales podes programarlas para que generen int en cualquiera de los flancos
  • Usar algunos de los timers y sus canales como "Input capture"

Por ejemplo un AW60 tiene 8 entradas de KBI y 9 canales de timer, un SH32 que tiene un pinout mucho mas pequeño tiene 4 canales de timers.

Saludos !

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: como implementar contadores en un integrado
« Respuesta #2 en: 29 de Abril de 2010, 07:39:21 »
Hola que tal,

no se si te he entendido bien. Te comento:
- necesito leer la frecuencia de unos 10-12 osciladores externos, cuya frecuencia es entorno a los 300kHz (3us por período), y puede tener variaciones de pocos hercios (no es fija). Me interesa capturar esas variaciones.

Como actuo ahora:
- utilizo un timer para temporizar 100ms, y otro timer (como contador). Este contador está asociado a un pin externo en concreto como entrada de reloj. Cada 100ms, generó una interrupción donde leo el valor de contaje del otro timer, y lo reseteo. Así continuamente.

Por ejemplo, con un QE32, puedo utilizar un timer para temporizar y los otros 2 para contar 2 frecuencias.

Respecto a lo que me comentas, más bien parece que querías temporizar el tiempo de un período de la señal o algo así? La resolución de la medida creo que sería pobre (aunque el timer que temporiza use cuentas de varios megahercios).
Con el otro sistema, una frecuencia de 300kHz me da 30000 cuentas en 100ms, sy la frecuencia sube 40Hz, yo cuento 30004 y soy capaz de tener esa resolución (cuenta arriba, cuenta abajo).

Como tu me comentas, si que tendría muchas posibles entradas (KBI), pero poco resolución no? además habría una interrupción cada 3us de cada uno de las entradas KBI.

Estoy en lo cierto, o no te he interpretado bien?

Por otro lado, he estado ojeando los PSCO1, y parece que se le pueden integrar 8 contadores de 16bit. Aunque tienen una pega, no permiten depuración del soft. La familia PSOC3 permite integrar hasta 12 contadores de 16bit, y si permite depurar, pero parece demasiado novedosa. Creo que ayer salieron a la venta en Future electronics los primeros dipositivos de sa familia (al menos pone la fecha de ayer).

Seguiré dándole un poco de vueltas.

Un saludo. Dani.

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: como implementar contadores en un integrado
« Respuesta #3 en: 29 de Abril de 2010, 13:52:56 »
Hola Dani, tenes razon habia entendido cualquier cosa. Creia que solo querias contar y no ademas "medir". Mucho no se me ocurre, y tampoco en estos temas la tengo tan clara. Que pasaria usar por ejemplo el Timer3 que tiene 6 canales y hacerlos trabajar como Input Capture manejando el clock del Timer internamante dijamos a 1Mhz ( 1us ) en los registros respectivos TPM3CXVH/VL deberias tener los valores de la medicion.

Saludos !

PD si mando cualquiera no te molestes en contestar :P

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: como implementar contadores en un integrado
« Respuesta #4 en: 29 de Abril de 2010, 17:01:19 »
Hola Richi777,

cualquier opinion es buena :)

el método de input capture no me sirve, ya que aun siendo 1Mhz el reloj de clock interno, durante 1.5us del pulso (medio período), apenas hay 1 o 2 cuentas.
La gracia de contar flancos durante 100ms (utilizando ese pin como entrada del contador) está en que tienes una resolución brutal. Es cierto que tardas 100ms en tener una nueva lectura de la frecuencia, pero a cambio puedes detectar el cambio entre 300kz y 300,01khz (es decir 30.000 cuentas pasa a 30.001 cuentas).

Si doy más tiempo para contar flancos, tendré todavía más resolución, a cambio de un refresco más lento de las lecturas.

Probablemente voy a ir por un camino poco elegante, pero simple: colocar 7 u 8 QE32 y así contar con cada uno de ellos 2 frecuencias. Entre ellos, pasaé los datos por SPI.
Cogeré de momento probablemente esa opción.

Un saludo. Dani.

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
Re: como implementar contadores en un integrado
« Respuesta #5 en: 30 de Abril de 2010, 03:44:39 »
hola

si vos no tenes que medir todas las frecuencias al mismo tiempo, lo haria secuencial. Es decir, pondria un multiplexer para cada oscilador y mediria la frecuencia con un solo micro. O sea que cada 100ms tendria que cambiar de oscilador.

Espero que te sirva la idea
Saludos desde Suiza, Pablo.

Desconectado damago

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 320
Re: como implementar contadores en un integrado
« Respuesta #6 en: 30 de Abril de 2010, 06:01:53 »
Thanks gauchosuizo,

tu respuesta tendría toda la razón, si yo hubiese comentado totalmente lo que necesito (he sido un poco escueto en la información). En realidad, el problema es que no me puedo permitir esto, ya que si tengo 10  o 20 frecuencias, tendría una lectura de cada uno cada 1seg o 2 seg, y desgraciadamente me interesa la 'dinámica' de esa señal. Se pueden producir cambios en ese intervalo de un segundo que me interese conocer.

De todos modos, en caso contrario, sería sin duda la solución adecuada  :)  ;-)

Un saludo. Dani.