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.
Hola Mif todavia no estoy muy puesto en el tema pero e encontrado esto tal vez te sirva para establecer la comunicación o tal vez para guiarte
http://www.electronic-engineering.ch/mi ... jects.html
http://www.electronic-engineering.ch/mi ... _test.html
Salu2
EDITO:
Convertidores rs232 USB
http://www.areasx.com/index.php?D=1&id=9
http://pinouts.ru/data/usb_serial_adapter_pinout.shtml
Hola Mif
Supongo que deseas aprovechar la USART que lleva implementada el PIC... en ese caso:
1º) Debes configurar la patilla RC6 como salida y la RC7 como entrada, pues son las que tiene asignadas en el PIC que dices.
2º) Luego tendrás que poner el bit SYNC a cero (del registro TXSTA) y el bit SPEN a uno (del registro RCSTA). Con esto ya está preparado el PIC para la comunicación asíncrona.
3º) Si los datos son de 9 bits en lugar de ser de 8, pon el bit TX9 = 1 (en el registro TXSTA). Este bit se suele usar en algunas transmisiones generalmente para transportar la información de paridad... aunque le puedes dar el uso que quieras siempre y cuando PC y PIC se pongan de acuerdo en su finalidad. Este noveno bit está accesible en el registro TXSTA bajo el nombre de TX9D.
4º) Cargando el generador de Baudios:... El protocolo RS-232C admite diversas velocidades de transmisión normalizadas en baudios (bits por segundo), como por ejemplo: 600, 1200, 2400, 4800, 9600, 19200, etc... Debes indicar la velocidad a usar (y lo mismo deberás hacer en el otro extremo; el de PC...). Para ello, el PIC dispone de un registro en el que se ha de introducir un número cuyo valor determina la velocidad de las comunicaciones. Este registro es el SPBRG. Además de este registro, la velocidad de transmisión depende de otros dos factores, que son: la frecuencia del cristal que uses en el PIC, y el valor del bit BRGH en el registro TXSTA. Si llamamos "X" al valor que cargas en el registro SPBRG, la velocidad en baudios viene dada por la fórmula:
Velocidad Baudios = (Fosc)/(K*(X+1))
Siendo K:
64 cuando el bit BRGH = 0
16 cuando el bit BRGH = 1
Por ejemplo: Si queremos una velocidad de 9600 baudios y tenemos un cristal de 10 Mhz, si ponemos (por poner algo) que BRGH = 0... tenemos:
9600 = (10*10^6)/(64*(x+1)) -> 64*(x+1) = (10*10^6)/9600 ->
x+1 = (10*10^6)/(9600 * 64) -> x = [(10*10^6)/(9600 * 64)] - 1
x= 15.276041
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...
5º) Activa el bit TXEN, del registro TXSTA, para permitir las transmisiones.
6º) Coloca cuando quieras el byte a transferir en el registro TXREG, y listo... En el momento que se vacíe el registro, el bit TXIF del registro PIR1 se colocará a 1, indicando que el byte fue transferido. (puedes activar la interrupción (TXIE = 1) para que te avise, en lugar de estar mirando este banderín constantemente) (ah, si lo haces que no se te olvide activar también el permiso global).
*-*-*-*-*-*-
Además, para permitir la recepción... debes colocar:
RX9 = 1 (registro RCSTA) para recibir 9 bits.
ADDEN=1 (RCSTA) si quieres que se detecten direcciones (éste es otro uso del 9º bit... cuando está activado ADDEN y el noveno bit vale 1, se entiende que los 8 bits restantes forman una dirección)
CREN = 1 (RCSTA) para permitir la recepción.
RCIF = 1 implica que se ha recibido un dato (hace las veces de TXIF pero en las recepciones).
El dato se recibe en RCREG...
*-*-*-*-*
Espero que te sirva... SALUDOS
Maaaaaaaaadre mia, que de cosas hay que hacer, no? y yo que pense que era... "tu... ch ch pic, ale, Ejcucha al PC que te quiere comentar algo" bueno, muchííísimas gracias por vuestra ayuda, os lo habeis currado un monton, asi si que se curra bien;) seguro que con esto consigo que haga algo.
Me pondre con ello esta misma noche.
Mosvack, ya tengo algo rulando, pero da problemas, porque al enviar caracteres por el HyperTerminal, leo en el ordenador caracteres extraños, es decir, si mando un 1 recibo algo asi:
~»¿ÿÿïóüøbã¸ÿ¿¾»÷îó¾ÿÿ¾¼ÿ¾ÿæ÷»¿ÿü¿¿¼1þ¿¾2þ¾2÷¿Î6ÿ»31»1÷æ84
ÿÿÿÿïµ5ÿÿÿÿÿþÿþÿ¿µ5ÿÿÿ
Como ves hay de todo menos unos casi... y evidentemente, al reportar esto por el puerto B, me salen tb cosas extrañas... qué crees que puede ser?
En cualquier caso es muy emocionante ver que responde cuando pulsas alguna tecla... queeeeeeeeeeeeee guapo!
Muchas gracias a los dos, Apoka y Mosvack