Autor Tema: Comunicacion serie asincrona  (Leído 1562 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Karlss_Infante

  • PIC10
  • *
  • Mensajes: 8
Comunicacion serie asincrona
« 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

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
RE: Comunicacion serie asincrona
« Respuesta #1 en: 09 de Febrero de 2006, 14:23:00 »
¿En qué extremo tienes el problema? ¿En el PC o en el PIC?

Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Comunicacion serie asincrona
« Respuesta #2 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).

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado grouchy

  • PIC10
  • *
  • Mensajes: 39
RE: Comunicacion serie asincrona
« Respuesta #3 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