Autor Tema: Comunicacion Serial PIC16F877A  (Leído 9936 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado _CMaGNo_

  • PIC10
  • *
  • Mensajes: 27
Comunicacion Serial PIC16F877A
« en: 11 de Junio de 2006, 14:14:46 »
Saludos!.

No si si este sea el lugar indiicado para publicar mi inquietud, si no lo es, disculpas de antemano. Mi problema es el siguiente:

Estoy tratando de establecer una comunicación serial entre el PIC y el PC pero aun no lo consigo. Estoy usando un PIC16F877A y un MAX232. El esquema de conexion que uso es el que se muestra en la figura http://www.iearobotics.com/proyectos/cuadernos/ct1/images/max232-conex.jpg

El micro lo he programado en CCS C. La configuracion para la comunicacion RS232 es la siguiente

Código: [Seleccionar]
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
Mi PC tiene un conector DB15 asi que uso un cable conversor DB15 a DB9 para realizar la conexion con el PIC segun lo indicado en la figura que les indique anteriormente. Cuando configuro el hyperterminal lo hago con COM1 a 9600 bps, 8 bits de datos, sin paridad, 1 bit de parada y control de flujo ninguno (tambien he intentado con control de flujo por hardware y tampoco funciona). Finalmente establezco la comunicacion.

En alguna parte de mi programa hago algo como puts("prueba") o printf("prueba") y se supone que en la ventana del hyperterminal deberia aparecer estas cadenas, pero no pasa nada .... Alguien puede decirme que estoy haciendo mal o que me falta?

Gracias de antemano!.

PD: El codigo de mi programa es algo como ...

Código: [Seleccionar]
#include <16F877A.h>
#device adc=8
#use delay(clock=4000000)
#fuses NOWDT, XT, NOPUT, NOPROTECT, NODEBUG, NOBROWNOUT, NOLVP, NOCPD, NOWRT
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)

void main()
{
   puts("prueba);

  // Aqui va el resto del codigo del programa ...
}

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Comunicacion Serial PIC16F877A
« Respuesta #1 en: 11 de Junio de 2006, 14:21:58 »
Amigo _CMaGNo_

Dale un vistazo a Lo mínimo para comunicarnos vía RS232 Hardware y Software para comparar lo que has realizado con lo que hice yo mismo para ver si encuentras donde puede estar el error.

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

Desconectado _CMaGNo_

  • PIC10
  • *
  • Mensajes: 27
Re: Comunicacion Serial PIC16F877A
« Respuesta #2 en: 11 de Junio de 2006, 14:24:07 »
Se me olvidaba decir que hice una simulacion en el Proteus y en la Virtual Terminal aparecen las cadenas que envio. Asi que supongo que el problema no es de programacion del micro.

PD: En la simulacion no uso el MAX232, simplemente conecto los pines del micro RC6/TX y RC7/RX a RXD y TXD de la virtual terminal respectivamente.

Desconectado _CMaGNo_

  • PIC10
  • *
  • Mensajes: 27
Re: Comunicacion Serial PIC16F877A
« Respuesta #3 en: 11 de Junio de 2006, 14:27:48 »
Ok RedPic muchas gracias lo voy a revisar y te cuento.

Desconectado _CMaGNo_

  • PIC10
  • *
  • Mensajes: 27
Re: Comunicacion Serial PIC16F877A
« Respuesta #4 en: 11 de Junio de 2006, 18:42:54 »
Pues ya verifique mi circuito y todo esta segun lo explicas en el post que me pasaste redpic ... resultado ... no funciona. No se si sea un problema con mi puerto o quiza sea el hecho que mi puerto es DB15 y estoy usando un cable DB15 a DB9 ...  :(

Una cosa mas ... uso Win XP SP2 y como he leido que el XP bloquea puertos a ciertas aplicaciones, estoy usando el PortTalk para darle acceso al Hyperterminal a todos los puertos de mi PC y ... tampoco funciana  :(


Alguna sugerencia?

Gracias

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Comunicacion Serial PIC16F877A
« Respuesta #5 en: 12 de Junio de 2006, 00:06:35 »
Pues ya verifique mi circuito y todo esta segun lo explicas en el post que me pasaste redpic ... resultado ... no funciona. No se si sea un problema con mi puerto o quiza sea el hecho que mi puerto es DB15 y estoy usando un cable DB15 a DB9 ...  :(

Yo revisaría no haber puesto algún capacitor al revés (error muy común por cierto) en el MAX232.

Puedes probar tu hardware,  poniendo
1) una tensión de 0V en el extremo TTL y esperando obtener +12V en el extremo RS232. 
2) una tensión de 5V en el extremo TTL y esperando obtener -12V en el extremo del RS232

Esto no falla.

Podrías incluso hacer lo mismo con el extremo RS232.  Obviamente las señales varían rápido cuando transmites por TX y RX, pero podrías ingeniartelas haciendo un cable diferente y que ponga el RTS o DTR de la PC en donde iría ubicado el TX.  Esta señal la puedes variar a gusto con casi cualquier soft que maneje el puerto serie.


Una cosa mas ... uso Win XP SP2 y como he leido que el XP bloquea puertos a ciertas aplicaciones, estoy usando el PortTalk para darle acceso al Hyperterminal a todos los puertos de mi PC y ... tampoco funciana  :(

Es así (lo mismo con NT3.5, NT4.0, Windows 2000, Linux y los unix en gral) pero esto es para accesos directos al hardware. 

Si tu software accede al puerto serie no debieras tener problemas, estos traen algún controlador o driver que se comunica directamente el API de windows para acceder al puerto serie.

Saludos
- 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)


 

anything