Discusiones sobre Productos NI

cancelar
Mostrando los resultados de 
Buscar en lugar de 
Quiere decir: 

Problema al enviar caracter por puerto serie en Labview

¡Resuelto!
Ir a solución

Hola, he diseñado un programa que me permite enviar un caracter segun la tecla pulsada. Entonces me ocurre un problema. Estoy usando el microcontrolador 80c51 y cuando interconecto el micro con el pc mediante un puerto serie virtual, y envio un caracter con labview. en el micro se reciben bien los 4 bits bajos del caracter, pero los 4 bits altos no se corresponden con los que deberian ser.

 

Por ejemplo si yo envio el caracter ''A'' (41h)  en el micro se me recibe en hexadecimal 81h, si envio el caracter ''U'' (55h) en el micro se me recibe A5h. No sé si puede se rproblema de la programación o configuración de labview. Si alguien pudiera hecharle un vistazo se lo agradeceria.

0 kudos
Mensaje 1 de 9
4.854 Vistas

Hola, coloca el vi en version 8.6 o menor.

Chequeaste la velocidad de comunicación, bits de stop y paridad en tu programa en el micro?, se te está corriendo un bit en el nibble alto y puede ser debido a eso o a algún otro retraso dentro de tu rutina de interrupción...

 

Saludos,

 

Jorge N.

0 kudos
Mensaje 2 de 9
4.842 Vistas

Aquí lo tienes guardado en versión 8.6, No sé a que puede ser debido ese retraso. El microcontrolador lo tengo programado a una velocidad de 9600 (como no encuentré oscilador de 11MHZ para generar los baudios utilizé uno de 12Mhz y me proporciona una velocidad de 10416 baudios en el microcontrolador)

 

Lo que me estraña es eso... que los 4 bits bajos se me representen correctamente y los 4 bits altos no correspondan con los que deberia ser...

 

A ver si puedes hecharme una mano... me tiene desesperado el tema...

 

Gracias por tu respuesta!!

0 kudos
Mensaje 3 de 9
4.838 Vistas

Respecto a bits de paridad y bits de start y stop está todo configurado correctamente..

0 kudos
Mensaje 4 de 9
4.837 Vistas

Hola. Quizá no configuraste bien el número de bits a ser recibido en el microcontrolador. Por ejemplo, en la serie AVR de Atmel, puedes seleccionar cuantos bits se reciben, 5, 6, 7, 8, o 9.  

Puedes usar herramientas de simulacion de puertos seriales como por ejemplo VSPD, e integrarlo a Proteus, o simplemente chequear la trama de datos con un osciloscopio.

Suerte!!

0 kudos
Mensaje 5 de 9
4.828 Vistas

Hola, utilizo el microcontrolador 80C51 y configuro la UART en modo 1 de funcionamiento... creo entendido que en ese modo son 10 bits los que tiene en cuenta (1 bit start, trama 8 bits y por último 1 bit stop), Mi configuración del puerto serie es esta la adjunto en una imagen.

 

Y por si alguien se atreve a hecharle un vistazo a la configuración de mi puerto serie en el micro también adjunto el programa.

 

 

Descargar todos
0 kudos
Mensaje 6 de 9
4.826 Vistas

No sé si tiene mucho que ver que en vez de utilizar una velocidad de 9600 baudios utilize una velocidad de 10440 baudios... es debido a que no poseo un cristal de 11MHz para generar la velocidad teórica correcta (9600 baudios para la recepción)

0 kudos
Mensaje 7 de 9
4.806 Vistas
Solución
Aceptado por el autor del tema inprogress09

Tu problema es el cristal.... Mira las imágenes que te adjunto, son los reportes de los diagnósticos de la simulacion de Proteus con tu programa. Al usar un cristal de 12MHz el dato llega corrupto...

Una sugerencia: cambiate a los AVR o a otro micro más nuevo...

Descargar todos
0 kudos
Mensaje 8 de 9
4.789 Vistas

Efectivamente, colocando el cristal de 11.059Mhz funciona correctamente.

 

Muchas gracias por sus respuestas :=)

0 kudos
Mensaje 9 de 9
4.775 Vistas