Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
Este hilo lo abro, porque no hay ninguno asi en el foro, y además de necesitar ayuda, pretendo resumir aqui lo que implica este tipo de conexión.
Materiales que nos hacen falta:
-Un pic, preferiblemente con USART, yo empleo un 16F876
-Un ordenador con puerto serie, o un adaptador USB Serie
-Max232 o 233 conectado del siguiente modo:
-Los componentes que necesitamos para hacer que todo esto funcione, especificados tb en el esquema.
Además de esto, para realizar la comunicación entre PC y PIC, debe haber un programa en el PC para comunicarse por RS232, y otro en el PIC para que haga lo mismo, cada uno de ellos en sus lenguajes.
En el PC lo más rápido para probar es usar el hyper terminal, que viene en todos los windows del mundo. Más adelante adaptaré un programa de Visión artificial para que pueda comunicarse con el PIC via RS232 y mandar ordenes a un par de servos.
En el PIC he elegido ensamblador, por costumbre. Peeero, aqui está mi problema, ¿cómo leches se configura el 16F876 para que haga esta comunicación? ¿Tenemos algun ejemplo básico de comunicación con este micro? Hay mucha información en internet, pero siempre de programas demasiado complicados para lo que tiene que ser, o muy mal explicados, o programas en los que se saltan la configuración...
en fin, que para seguir con mi proyecto necesito una ayuda de alguien que sepa cómo hacerlo, asi, además de desatascarme, conseguimos hacer un hilo aclarativo de este tipo de comunicación.
Muchas gracias por vuestra ayuda.
Ángel.
Con lo fácil que es usar un compilador que tenga alguna instrucción para envío y recepción de datos por puerto serie...
En esta página tenéis un compilador de prueba del pic basic pro de melabs, que tiene instrucciones de ese tipo, tanto para comunicaciones con emulación por software para pics sin usart como instrucciones para comunicaciones usando el hardware usart:
http://www.melabs.com/pbpdemo.htm
si, la verdad es que hay veces que usar ensamblador es un poco desesperante, pero cuando consigues que las cosas funciones te dices... ¡queeeeeeee guapooooo! y sientes que lo has hecho tu, y lo has entendido a fondo... bueno, al menos es lo que me pasa a mi, que no soy un experto en esto, casi estoy empezando...
Esta noche la dedicaré a arreglar esos problemills de comunicación, que sospecho que se deben al error que comentaba Mosvack:
Hola Mif
Como "X" debe ser un número entero, elegimos 15... pero, al no ser el número exacto, cometeremos un "error" en los 9600 baudios que habíamos planeado tener... en este caso sale:
Velocidad = (10*10^6)/(64*(15+1)) = 9765.625 Baudios
Dependiendo del sistema, este pequeño error será tolerable o no... puedes jugar con los parámetros de la fórmula, cambiando el cristal y el valor del bit, a fin de obtener un número lo más cercano posible a un entero... no obstante, los errores que se obtienen en la mayoría de los casos son despreciables...
Os informaré sopbre el tema.
Acicuecalo, algun dia tendre que dar el paso, porque es mucho más cómodo programar en C o Basic, pero entiendo que es mejor hacerlo cuando lo tienes dominado, y sabes lo que esta haciendo por debajo... ¿no crees?
¿En qué sueles programar tu? he hecho cosillas en CCS y MikroBasic, pero no se por cual decidirme...
Yo uso Pic Basic Pro, con el Microcode Studio.
Ok, cuando me decida a dar el paso me lo pensaré seriamente...
Mientras tanto...
Alguien puede decirme por qué al mandar datos por rs232 en el micro muchas veces leo datos erroneos? cómo puedo corregir esto? puede ser debido al error que comenté antes?
Hola mif, has de esperar a que se vacien los buffers, si la comunicacion es bidireccional te sugiero que hagas un control de tramado para controlar errores.
Yo empleo actualmente Mikrobasic, sencillo, rapido y... lo mejor...barato!
Saludos