Está en la página 1de 10

Comunicacin - Prueba de conexin serie entre un PIC y una PC - Robots Argentina Pgina 1 de 10

pasin por la robtica en A


[PRINCIPAL] [NOSOTROS] [ACTIVIDAD] [NOTICIAS] [ARTICULOS] [GALERIA] [ENLACES]

Desarrolladores de Robots: Un grupo donde podemos conversar de los temas que nos interesan

Ingresa tu direccin de correo electrnico y pulsa enter


Desarrolladores de Robots funciona en Grupos Yahoo!

ar.groups.yahoo.com

Comunicacin RS232
Prueba de conexin serie entre un PIC y un Circuito convertidor serie-paralelo para el port se por Eduardo J. Carletti
Presento aqu la prueba de laboratorio de un circuito realizado especficamente para exp comunicacin entre un microcontrolador PIC 16F628A y el puerto serie de una PC (estndar microcontrolador, un integrado convertidor de niveles RS232 a TTL que es reemplazo del conoc en el mercado argentino. Se trata del HIN232CP de Intersil, que en Buenos Aires se puede com 10,5% de IVA.

Integrado HIN232CP: Los circuitos con letra T son "Transmitters", que trasladan en su entrada a nivel RS232 en su salida. Los circuitos con letra R son "Receive seales RS232 en su entrada (que pueden ser de hasta +30/-30 V) a nivel TTL/CM

http://robots-argentina.com.ar/Prueba_PIC628-RS232.htm

17/03/2009

Comunicacin - Prueba de conexin serie entre un PIC y una PC - Robots Argentina Pgina 2 de 10

Aqu voy a hacer una pequea disgresin sobre por qu utilizo el PIC 16F628A en esta ocasi encaro y encarar, excepto cuando las prestaciones de este microcontrolador no sean suficient principal es que es pata a pata compatible con el ms antiguo pero ya clsico PIC 16F84A. Y e nica salvedad de que la memoria RAM se encuenta en otra direccin. Transformar un progr utilizarlo en este microcontrolador es una cosa de segundos. Y hay miles de ejemplos en I 16F84A, porque hace aos que se disea sobre l, como procesador bsico.

Distribucin de patas (con sus funciones) del PIC 16F628A. El PIC 16F84A puede estar muy bien como eleccin para comenzar, pero la nica razn que mayora de los ejemplos de programa y de circuito que se encuentran por all estn realizad prrafo anterior, entonces el PIC 16F628A es igual de elegible, ya que es un reemplazo pr microcontrolador "de batalla". Pero por qu cambiar, si ambos estn disponibles en el mercad 16F628A tiene ms memoria de programa (el doble), ms RAM, ms EEPROM, ms modos de incluyendo la que aprovechamos en este diseo, el puerto serie implementado por hardware.. Argentina, cuesta menos... Por qu no cambiar, entonces? COMPARACIN 16F84A Memoria programa Memoria datos EEPROM Timers PWM Reg. comparacin/captura Comparadores Referencias de voltaje Oscilador interno reloj 1K 68 bytes 64 bytes 1 16F628A 2K 224 byte 128 byte 3 1 s 2 1 37 KHz /

http://robots-argentina.com.ar/Prueba_PIC628-RS232.htm

17/03/2009

Comunicacin - Prueba de conexin serie entre un PIC y una PC - Robots Argentina Pgina 3 de 10

Patas usables E/S Programacin a bajo voltaje Precio en Buenos Aires (Cika)

13 us$ 3,51 (4 MHz) us$ 7,02 (20 MHz)

16 s
u$s 3 (20 M

Ahora volvamos al circuito de esta prueba El microcontrolador se comunica utilizando su puerto serie. He programado este puerto a una v de dato de 8 bits, sin paridad, un bit de parada, y sin ningn control de flujo. El programa en el mensaje a la PC que dice Hola amigo. Luego la rutina principal de este pequeo programa es como eco hacia la PC, y luego lo exhibe a travs de sus puertos, donde tenemos conectado comprobar la recepcin de los caracteres ASCII desde la PC, cuyo cdigo veremos sobre los LE cumpla la funcin de transformar la salida serie de la PC en una salida de 8 bits en paralelo. A continuacin se puede observar el circuito que he utilizado: Circuito del interfaz de comunicacin RS232 entre un PIC y

Algn lector observador habr notado que no se utiliza el Puerto A completo (1 byte) para ma

http://robots-argentina.com.ar/Prueba_PIC628-RS232.htm

17/03/2009

Comunicacin - Prueba de conexin serie entre un PIC y una PC - Robots Argentina Pgina 4 de 10

que se ha recibido desde la PC. Los bits 4 y 5 del Puerto A no se utilizan, y a cambio los L conectan al Puerto B. Por qu complicarse as? No es mejor escribir un byte completo en un por separado en otro puerto, que para peor tiene dos bits afectados a la comunicacin serie? Paciencia, todo tiene su explicacin: Tal como se ha configurado el microcontrolador, el Puert ancho, pero por caractersticas de circuito no se pueden utilizar los ocho como salida. El bi entrada, y el bit 4 tiene un circuito de salida de drenaje abierto, es decir, cuando est en alto n encendera el LED con el circuito que estamos utilizando. Antes que ponerme a hacer alguno solucionar esto por programa y "sacar" los dos bits faltantes a travs del Puerto B, bits 4 y 5. cuatro lneas de programa, nada ms. Montaje del circuito de conexin serie entre un PIC 16F628A

Detalle de montaje del circuito de conexin serie

http://robots-argentina.com.ar/Prueba_PIC628-RS232.htm

17/03/2009

Comunicacin - Prueba de conexin serie entre un PIC y una PC - Robots Argentina Pgina 5 de 10

Programa

;****************************************************************** ; INTERFAZ SERIE RS232 - ECO Y DISPLAY EN LEDS ; CONVERTIDOR SERIE RS232 - PARALELO 8 BITS ;****************************************************************** LIST P=16F628, R=DEC #include "P16F628A.INC" CONFIG ; Usar el PIC16F628 y sistema decim ; Incluye datos de PIC16F628A

_CP_OFF & _WDT_OFF & _LVP_OFF & _PWRTE_ON & _INTRC

;****************************************************************** ; CONFIGURACION ;****************************************************************** ; ; ; ; ; El PIC es configurado para usar todas las entradas y salidas posibles = 16. Por eso no se usa el oscilador con cristal externo lo que deja libres las patas 15 y 16 para usar como bits de puert Se define el clock interno a 4 MHz. No se usa el master reset (pata 4), que queda convertida en el Puerto A, bit 5 (entrada).

;****************************************************************** ; VARIABLES ;******************************************************************

http://robots-argentina.com.ar/Prueba_PIC628-RS232.htm

17/03/2009

Comunicacin - Prueba de conexin serie entre un PIC y una PC - Robots Argentina Pgina 6 de 10

contador dato_serie

EQU EQU

0x28 0x29

; variable ; dato serie desde la PC

;****************************************************************** ORG 0x000 ; El programa empieza en 0x000

;****************************************************************** ; Inhibe comparadores ;****************************************************************** movlw 7 movwf CMCON

; CMCON=7 inhibir los comparadores

;****************************************************************** ; Inicializar Puertos ;****************************************************************** movlw b'00000000' movwf PORTA movlw b'00000000' movwf PORTB bsf STATUS,RP0 movlw b'00000000' movwf TRISA ; valor inicial portA ; valor inicial portB

; Pg 1 RAM

; ; ; ;

salidas (para mostrar el dato en LEDS) de estas salidas, no usaremos PORTA 4, que tiene salida open drain, PORTA 5, que slo puede ser entrada RB0 RB1 RB2 RB3 RB2 RB5 RB6 entrada (RX) = entrada (TX) = salida = entrada = salida del bit 4 del dato a LEDS = salida del bit 5 del dato a LEDS y RB7 = entradas

movlw b'11001011' ; ; ; ; ; ; ; movwf TRISB

;****************************************************************** ; BAUD RATE para la comunicacin RS232 ; y otras definiciones para USART ;****************************************************************** ; Baud Rate = 9600, Sin Paridad, 1 Bit parada ; movlw 0x19 ; 0x19=9600 bps (0x0C=19200 bps) movwf SPBRG movlw b'00100100' ; movwf TXSTA ; habilita la transmisin Async

http://robots-argentina.com.ar/Prueba_PIC628-RS232.htm

17/03/2009

Comunicacin - Prueba de conexin serie entre un PIC y una PC - Robots Argentina Pgina 7 de 10

bcf STATUS,RP0 movlw b'10010000' movwf RCSTA

; RAM PAGE 0 ; habilita de recepcin Async

;****************************************************************** ; TIEMPO DE ESTABILIZACION ;****************************************************************** clrf contador estab decfsz contador,F goto estab movf RCREG,W movf RCREG,W movf RCREG,W call Bienvenida

; vaca el buffer de recepcin ; enva mensaje de bienvenida

;****************************************************************** ; LAZO PRINCIPAL ;****************************************************************** loop clrw btfss PIR1,RCIF goto loop call recibeRS232 movwf dato_serie call enviaRS232 call muestra goto loop ; (5) se fija si hay dato RS232 ; no, no lleg ; s, hay ; guarda dato (para uso de cualquier rut ; enva el eco a la PC ; muestra el caracter recibido en LEDS

;****************************************************************** ; RECIBE CARACTER SERIE - RS232 - DESDE LA PC ;****************************************************************** recibeRS232 movf RCREG,W return

; guarda dato recibido en acumulado

;****************************************************************** ; ENVIA CARACTER SERIE - RS232 - A LA PC Y ESPERA A QUE HAYA SALIDO ;****************************************************************** enviaRS232 movwf TXREG ; envo el dato en acunulador w bsf STATUS,RP0 ; Pg 1 RAM Espere btfss TXSTA,TRMT ; transmision completa si es goto Espere bcf STATUS,RP0 ; Pg 0 RAM return

http://robots-argentina.com.ar/Prueba_PIC628-RS232.htm

17/03/2009

Comunicacin - Prueba de conexin serie entre un PIC y una PC - Robots Argentina Pgina 8 de 10

;****************************************************************** ; MUESTRA DATO ;****************************************************************** muestra movf dato_serie,w movwf PORTA btfss dato_serie,4 bcf PORTB,4 btfsc dato_serie,4 bsf PORTB,4 btfss dato_serie,5 bcf PORTB,5 btfsc dato_serie,5 bsf PORTB,5 return

; ; ; ; ; ; ; ; ; ;

recupera el dato guardado exhibe el dato en LEDS en PORTA pero, como el PORTA tiene el bit 4 que open drain, nos conviene poner el bit 4 del dato en otra salida; lo hacemos en el bit 4 del PORTB. y , como el PORTA tiene el bit 5 que e slo usable como entrada, tenemos que el bit 5 del dato en alguna salida; lo hacemos en el bit 5 del PORTB.

;****************************************************************** ; MENSAJES ;****************************************************************** Bienvenida ; los primeros caracteres 0x00 son ; para estabilizacin del circuito movlw 0x00 call enviaRS232 movlw 0x00 call enviaRS232 movlw 0x00 call enviaRS232 movlw 0x00 call enviaRS232 movlw 0x00 call enviaRS232 call msgCR movlw 'H' call enviaRS232 movlw 'o' call enviaRS232 movlw 'l' call enviaRS232 movlw 'a' call enviaRS232 movlw ' ' call enviaRS232 movlw 'a' call enviaRS232 movlw 'm' call enviaRS232 movlw 'i' call enviaRS232

http://robots-argentina.com.ar/Prueba_PIC628-RS232.htm

17/03/2009

Comunicacin - Prueba de conexin serie entre un PIC y una PC - Robots Argentina Pgina 9 de 10

movlw call movlw call msgCR movlw call movlw goto END

'g' enviaRS232 'o' enviaRS232 0x0D enviaRS232 0x0A enviaRS232

Bajar el programa en formato ASM (puede usar el botn derecho de su mouse) Bajar el programa en formato HEX (puede usar el botn derecho de su mouse) Por las dudas, el archivo incluido P16f628a.inc (puede usar el botn derecho de su mouse)

Uso del programa "HyperTerminal" para la comunicacin desde la PC Para establecer la comunicacin serie desde la PC, se debe utilizar el programa HyperTermin Windows, o cualquier otra aplicacin de terminal bsica que usted desee. Aqu se puede ver una explicacin de Microsoft sobre cmo utilizar el programa HyperTerminal. En la configuracin de la conexin, usted debe indicar que se va a conectar "Directo a COM", ind que va a utilizar en esta comunicacin (generalmente es el COM1... pero cada PC es un mundo a Esto se define en la seccin "Configurar".
z z z z z

Bits por segundo = 9600 Bits de datos = 8 Paridad = Ninguna Bits de parada = 1 Control de flujo = Ninguno

Ver las imgenes. (A la izquierda, las propiedades de la conexin nombrada por m como "Configurar" del puerto elegido en esta conexin, el COM1).

http://robots-argentina.com.ar/Prueba_PIC628-RS232.htm

17/03/2009

Comunicacin - Prueba de conexin serie entre un PIC y una PC - Robots Argent... Pgina 10 de 10

Algunas cosas que observ


z

El uso de los bits de puerto adicionales del PIC 16F628A luego de convertir por con oscilador de reloj y la de Master Clear en bits del Puerto A me caus, al principio, algu bits 4 y 5 del Puerto A, tema ya explicado arriba. Esto demuestra que se debe leer bien sobreentendido. La conclusin es que si se utiliza el puerto serie interno del PIC 16F628 no hay disponible, lamentablemente, un puerto completo para manejar un byte entero d pero en la programacin se hace un poco ms engorroso "sacar" un byte entero. Por lo dicho en el punto anterior, si se desea utilizar de algn modo un byte de salida en LEDs, se debe implementar un pulso de aviso (strobe) que anuncie que el dato es vlido, por partes. El programa es bsico y no tiene ninguna comprobacin de confirmaciones en el protocolo datos a mucha velocidad desde la PC se pueden perder datos e incluso puede quedar "co me ha presentado... pero puede pasar. Segn todas las teoras, usando esta configuracin en la que se genera internamente u podra haber algn problema de corrimiento de la frecuencia del reloj y, por ende, de la serie del PIC (baudios). Sin embargo, no he notado dificultades de comunicacin. No es difcil implementar esta comunicacin por interrupcin, tarea que encarar en una para no complicar un ejemplo que, a mi entender, debe ser bsico.

Datos adicionales: PIC 16F628A El microcontrolador PIC 16F828A lo compr en Cika, donde cuesta us$ 3 ms 10,5% de IV HIN232CP El integrado HIN232CP lo compr en Cika, donde cuesta us$ 1,1 ms 10,5% de IVA.
2007, 2008 Robots Argentina Actualizado el 16 de diciembre de 2008

http://robots-argentina.com.ar/Prueba_PIC628-RS232.htm

17/03/2009

También podría gustarte