Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

03/01/2008 #1


adquisición de tren de bits
Hola y Feliz año nuevo!
Necesito, para monitorear un sistema, tomar trenes de bits de alrededor de 128kbytes cada uno a una velocidad de 500kbits por segundo. Los bits llegan en 2 pines, uno de clock y uno de datos. Llegan los 128 kbytes un bit detrás de otro, sin bit de inicio, parada ni stop, o sea, no es asincrónico.
La idea es tomar todos esos bits a la velocidad que llegan y guardarlos en una memoria, por ejemplo flash, o sino mandarlos por el puerto serie de la computadora a una de las velocidades que maneja este puerto.
Pueden ayudarme? Que PIC o qué micro de motorola podría usar si es necesario usar alguno? ¿Cómo sería la lógica y el tamaño del buffer que podría usar? ¿Cómo podría hacer la interfaz para el puerto serie de la computadora, que es asincrónico y maneja otras velocidades?

Desde ya les agradezco. Saludos
04/01/2008 #2


busca un poco, creo recordar que hay un programa que utiliza el pc como analizador logico a trabes dl puerto paralelo.

http://www.google.es/search?hl=es&cl...er+lpt&spell=1


Deberias invertigar si se trata de un protocolo de comunicacion standart por ejemplo I2C o spi
04/01/2008 #3


No, no tiene un protocolo de comunicación standard.
Solo manda una señal para transmitir datos y casi inmediatamente manda todos los bits sincrónicamente hasta el final. No me importa que pic interprete esos bits. Sólo que los guarde y pueda recuperarlos para enviarlos de la misma manera que los recibió cuando se le pida.
Yo interpretaría luego el significado de esos bits con la computadora, pero primero quiero almacenarlos en algún lugar, ya sea en una ram, en una sd por el protocolo spi, o en la pc a través de algún puerto.
Muchas gracias por la idea de usar un analizador lógico, ahora voy a visitar esos sitios. Un abrazo.
04/01/2008 #4


La forma en que se transmiten tus datos de entrada suena exactamente como el protocolo SPI (datos sincronizados a una señal de reloj y sin cabecera ni bit de parada). Puedes usar el modulo SPI que viene en varios modelos de PIC, ya sea que el PIC genere la señal de reloj (maestro) o que el PIC reciba la señal de reloj de datos externamente (esclavo).

La tasa de 500Kbit por segundo se oye un poco acelerada, aunque se mira perfectamente lograble si empujas al PIC a su maxima velocidad.

Considera usar el PIC16F876A o bien el PIC16F877A, pueden correr a 20MHz (5 MIPs) y se mira lograble con ellos tu tasa de transmision (80 instrucciones por byte).

Esos PIC sin embargo, solo poseen poco menos de 400 bytes de RAM, por lo que deberas usar una RAM externa para guardar las rafagas de 128KB. Puedes usar los puertos en ellos para dicho cometido (preferible con el 877A). Los PIC tienden a poseer poca RAM, y aunque busques en los PIC18, encontraras modelos con 4KB como maximo, asi que considera seriamente la memoria externa. O bien otro tipo de MCU.

Para enviar los datos a la PC, puedes usar el modulo USART contenido en los mismos PIC, lo que te permitira mover los datos hasta a 115Kbps por medio del puerto serial (RS232). Naturalmente deberas agregar un MAX232 para dicho cometido.

Tambien puedes usar el puerto paralelo y el protocolo de handshaking estandar de las impresoras (busca en internet por el protocolo usado en SPP) para enviar los datos. Del lado de la PC, buscate un driver o libreria que te permita usar el puerto paralelo directamente ya sea con Visual Basic (mas facil) o tu lenguaje de programacion favorito.

Esas serian mis sugerencias de forma general. Todo eso se mira lograble escribiendolo en assembler para PIC16 con el MPLAB.

Saludos.
05/04/2008 #5


Muchas gracias por sus respuestas!
El protocolo es parecido al SPI, pero tengo entendido (quizá me equivoque) que hay un protocolo para comunicarse mediante SPI, tienen que ponerse de acuerdo antes de mandar los datos.

Sí, parece que deberé usar como mínimo un micro de 20MHz. También estaba viendo si usar micros de motorola (freescale): MC9S12. Es difícil encontrar un micro que reúna todas las características que deseo a la vez.

Con respecto al USART, no creo que tenga tiempo de reloj para hacerlo en tiempo real. Parece que primero deberé guardar en una RAM externa, y luego hacer transferencia desde esa RAM hacia el puerto serie.

El analizador lógico no me convence.

¿A alguien se le ocurre algo más?
05/04/2008 #6


Ummm, yo no lo usé nunca al SPI pero por lo que tengo entendido es un protocolo de capa física, o sea, no define un protocolo lógico. Y por lo que decís arriba el PIC con SPI en modo Slave (tal como dice f_point) te tiene que andar bárbaro con una RAM externa.
Como decís vos, almacenás temporalmente la ráfaga de bytes en la RAM y después la envías via RS232 con el PIC y un MAX232 a la PC. Creo que es la solución más sencilla y adecuada.
Coincido 100% con f_point... además siempre ayuda mucho con los PICs, se nota que sabe lo que dice, hacele caso, jeje.

Slds...

Mariano
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.