TODOPIC

Microcontroladores PIC => Primeros pasos - Iniciación a los microcontroladores => Mensaje iniciado por: holdrisk en 26 de Septiembre de 2009, 18:05:00

Título: Comunicacion RS232 Serout Pic16f84 ISIS Picbasic
Publicado por: holdrisk en 26 de Septiembre de 2009, 18:05:00
Buenas tardes, noches, dias segun corresponda...

Estoy dando mis primeros pasos con los pics, nada serio, solo como divertimento y aunque ya he realizado algunas cosas con exito recien empezé a intentar comunicar un pic16f84 con pc mediante rs232.

Antes de construir / soldar nada me decidi a probar simuladores para ver el funcionamiento del programa, ahora mismo estoy con el Proteus / Isis y aunque no estoy familirializado con la interfaz, poco a poco voy enterandome de algo.

El caso es que estoy intentando simplemente enviar datos por rs232 mediante el comando SEROUT del picbasic y que estos valores sean recogidos por el VIRTUAL TERMINAL y yo pueda ver los datos que envia el pic. Pero por alguna razon no consigo ver lo que yo quiero enviar, nose si es error de configracion del VIRTUAL TERMINAL, error de programacion en picBasic mio, o de configuracion de ambos, por el modo de envio. La verdad es que ando un poco perdido.

He reducido el programa a la minima expresion, un bucle incremental con el envio de datos por rs232 pero nada....

DEFINE OSC 4
INCLUDE "modedefs.bas"
PORTA=0
i var byte
i=0
loop:
        pause 200
        i=i+1
        if i=255 then
                i=0
        endif
serout porta.0,N2400,i

goto loop

la variable i esta entre corchetes, no me ha aparecido en el mensaje

Como veis el programa es de lo mas simple pero el resultado en el VIRTUAL TERMINAL es:

øø€øx€øøøx€ø€xøøøøø€øxxø€øø€ø€x

en lugar del simbolo del euro, puede aparecer otro caracter como º (simbolo del grado) o una cedilla ´
he probado a en lugar de n2400 t2400 pero nada sigue saliendo caracteres de ese tipo...¿?¿?¿

A nivel de configuracion del VIRTUAL TERMIANAL lo tengo en Baud rate:2400 Data bits:8 paridad:NONE stop bits:1 SendXON/XOFF:No RX/TX Polarity Normal.

Y conectado al pic16f84a con una resistencia de 22k.

y un cristal de 4mhz

¿que esta posiblemente fallando? ¿la programacion? ¿ la configuracion ? ¿?¿?¿?¿?

Se que es bascio este tipo de problemas pero no consigo nada mas que estos caracteres que siempre se repiten y estoy confundido porque no se si es que hay que usar un max232, logica invertida o no se que mas....
Título: Re: Comunicacion RS232 Serout Pic16f84 ISIS Picbasic
Publicado por: holdrisk en 27 de Septiembre de 2009, 12:45:03
Me respondo a  mi mismo..... :oops:

Varios errrores de conocimiento del funcionamiento del isis, por un lado aunque le ponga un cristal de 4mhz hay que especificarle al pic16f84 que esta trabajando a 4mhz, por defecto lo pone a 1mhz, claro, esto en la vida real fisica no se tiene porque especificar, es el mismo cristal quien le indica la frecuencia de trabajo.... cosas de desconocimiento de simulacion.

Por otro lado si uso el modo invertido tengo que invertir tambien la polaridad del virtual terminal, y si pongo el modo normal, pues eso, en normal... esto ultimo me di cuenta en cuanto corregi la velocidad de trabajo del pic.....

Ahora si envio por rs232 los datos correctamente a 2400 8N1....

Cosas de novato, primerizo con el isis....

Saludos!! :mrgreen:
Título: Re: Comunicacion RS232 Serout Pic16f84 ISIS Picbasic
Publicado por: holdrisk en 11 de Octubre de 2009, 21:58:34
Bueno, seguimos poco a poco...

Sigo avanzando un poco y bueno la comunicacion rs232 con el pic16f84 con el pbp parece que solo es a nivel de caracter ascii, no me preocupa demasiado pero lo que son los numeros y su valoracion se complica un poco por tener que pasarlo de ascii a numerico y luego volver a pasarlo a caracter... Nada que unas restas no pueda solucionar pero bueno...

Pensando en una aplicacion directa sobre lo que estoy aprendiendo podria ser un display de 7 segmentos con 4 digitos con entrada de datos por rs232.

Empecé solo multiplexando los digitos con el integrado 4511 (con solo 4 lineas puedo mostrar del 0 al 9), y rs232 sin problemas, pero gastar 1 4511 por cada digito no me parecia muy elegante, por lo que plantee la solucion de gastar 7 pines del portb y 4 del porta para hacer la multiplexacion completa con transistor y el pic, con un timout del serin no deberia tener problemas o si..... 20ms de timout...

La cuestion es que sin 4511 gano la posibilidad de mostrar letras (no todas la V o v no se puede :S) pero si las basicas, pero el proteus con tanta velocidad de transicion de pines parece que se le va un poco la CPU de consumo y no muestra en tiempo real... ¿hay alguna posibilidad de hacerlo correr en tiempo real aunque no me muestre todas las transiciones de los pines?

A la velocidad que me procesa el mutliplexado y la adquision de datos por el rs232 no tengo muy claro que pueda o no hacerlo en la vida real...

A ver si hago unas capturas y muestro el circuito que aunque siemple lo mismo estoy cometiendo algun error...

Graacias y saludos!!!