TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: _CMaGNo_ 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
#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 ...
#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 ...
}
-
Amigo _CMaGNo_
Dale un vistazo a Lo mínimo para comunicarnos vía RS232 Hardware y Software (http://www.todopic.com.ar/foros/index.php?topic=4620.0) para comparar lo que has realizado con lo que hice yo mismo para ver si encuentras donde puede estar el error.
Un saludo.
-
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.
-
Ok RedPic muchas gracias lo voy a revisar y te cuento.
-
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
-
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