TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Karlss_Infante en 09 de Febrero de 2006, 14:04:00

Título: Comunicacion serie asincrona
Publicado por: Karlss_Infante en 09 de Febrero de 2006, 14:04:00
Estoy trabajando en un proyecto donde quiero controlar ciertas salidas mediante un 16f876. El control se hará mediante una serie de variables guardadas previamente q mandará desde el PC un programa hecho en Visual Basic a través del puerto serie, con el protocolo RS232c.

El problema es q llevo ya un tiempo buscando y mirando cosas y no consigo hacer nada, necesitaria que me  ayudaran a orientarlo o me dijeran donde puedo encontrar informacion o ejemplos q me pudieran servir de ayuda.

En un principio pense utilizar el Mscomm de Visual basic pero tengo entendido q solamente trabaja con código ASCIL, asi q no se si podre usarlo.

Gracias por la ayuda
Título: RE: Comunicacion serie asincrona
Publicado por: RedPic en 09 de Febrero de 2006, 14:23:00
¿En qué extremo tienes el problema? ¿En el PC o en el PIC?

Título: RE: Comunicacion serie asincrona
Publicado por: maunix en 09 de Febrero de 2006, 15:43:00
Escrito originalmente por Karlss_Infante
Estoy trabajando en un proyecto donde quiero controlar ciertas salidas mediante un 16f876. El control se hará mediante una serie de variables guardadas previamente q mandará desde el PC un programa hecho en Visual Basic a través del puerto serie, con el protocolo RS232c.

El problema es q llevo ya un tiempo buscando y mirando cosas y no consigo hacer nada, necesitaria que me  ayudaran a orientarlo o me dijeran donde puedo encontrar informacion o ejemplos q me pudieran servir de ayuda.

En un principio pense utilizar el Mscomm de Visual basic pero tengo entendido q solamente trabaja con código ASCIL, asi q no se si podre usarlo.

Gracias por la ayuda



1) Arma bien el hardware y verifica varias veces que esté todo bien
2) Si no estas seguro del punto 1, postea el esquemático.
3) Usa el hyperterminal de windows y manda caracteres "A" (char 65 de la tabla ascii) desde el pic hacia la pc.  
4) Si funcionó 3,  puedes hacer al reves enviar del hiperterminal al PIC y cuando el PIC reconoce que es una A, quetitile un led.

5) Has un software que envies algo por el hyperterminal y que el pic responda el mismo dato (eco).

Título: RE: Comunicacion serie asincrona
Publicado por: grouchy en 14 de Febrero de 2006, 01:09:00
Escrito originalmente por Karlss_Infante
Estoy trabajando en un proyecto donde quiero controlar ciertas salidas mediante un 16f876. El control se hará mediante una serie de variables guardadas previamente q mandará desde el PC un programa hecho en Visual Basic a través del puerto serie, con el protocolo RS232c.

El problema es q llevo ya un tiempo buscando y mirando cosas y no consigo hacer nada, necesitaria que me  ayudaran a orientarlo o me dijeran donde puedo encontrar informacion o ejemplos q me pudieran servir de ayuda.

En un principio pense utilizar el Mscomm de Visual basic pero tengo entendido q solamente trabaja con código ASCIL, asi q no se si podre usarlo.

Gracias por la ayuda



Hola, Efectivamente el mscomm es un programa para visual muy sencillo que te recomiendo que utilices si eres principiante en eso de Visual, y no importa que mande código ASCII, con el PIC también puedes realizar las comparaciones, ahora bien te recomiendo que utilices el control de flujo por hardware, porque cuando mandes mas de un caracter desde la PC puede q el PIc tenga errores en la recepcion de datos; aqui te pongo un ejemplo de como puedes comparar caracteres en en el PIC, esta en ensamblador:

COMPARAR_ONLINE
-------------CALL   RECIBIR_DATO_RX
-------------   SUBLW   "O"
-------------   BTFSC   STATUS,Z
-------------   GOTO   POSIBLE_ONLINE
-------------   GOTO   TERMINAR_CADENA
POSIBLE_ONLINE
-------------   CALL   RECIBIR_DATO_RX
-------------   SUBLW   "N"
-------------   BTFSC   STATUS,Z
-------------   GOTO   POSIBLE_ONLINE1
-------------   GOTO   TERMINAR_CADENA
POSIBLE_ONLINE1
-------------   CALL   RECIBIR_DATO_RX
-------------   SUBLW   "L"
-------------   BTFSC   STATUS,Z
-------------   GOTO   POSIBLE_ONLINE2
-------------   GOTO   TERMINAR_CADENA
POSIBLE_ONLINE2
-------------CALL   RECIBIR_DATO_RX
-------------   SUBLW   "I"
-------------   BTFSC   STATUS,Z
-------------   GOTO   POSIBLE_ONLINE3
-------------   GOTO   TERMINAR_CADENA
POSIBLE_ONLINE3
-------------   CALL   RECIBIR_DATO_RX
-------------   SUBLW   "N"
-------------   BTFSC   STATUS,Z
-------------   GOTO   POSIBLE_ONLINE4
-------------   GOTO   TERMINAR_CADENA
POSIBLE_ONLINE4
-------------   CALL   RECIBIR_DATO_RX
-------------   SUBLW   "E"
-------------   BTFSC   STATUS,Z
-------------   CALL   FUE_ONLINE      //  Ejecutar Rutina deseada, Ejem. encender led"s de puerto b, etc
TERMINAR_CADENA
-------------                RETURN

RECIBIR_DATO_RX
;VERIFICACION DE ERRORES EN LA RECEPCION SERIAL
-------------   BTFSC   RCSTA,FERR
-------------   GOTO   SALIR_ERROR
-------------   BTFSC   RCSTA,OERR
-------------   GOTO   SALIR_ERROR
-------------   MOVF   RCREG,W
-------------   RETURN

SALIR_ERROR
-------------   BCF      RCSTA,CREN
-------------   NOP
-------------   NOP
-------------   BSF      RCSTA,CREN
-------------                RETURN

Espero que te sirva de algo...............SALUDOS