Autor Tema: RS232 - Comunicación serial (SOLUCIONADO) Arrrrr Fiiiinnnn! ;)  (Leído 12827 veces)

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

Desconectado gu1llermo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 217
Re: RS232 - Comunicación serial
« Respuesta #30 en: 27 de Febrero de 2008, 12:25:45 »
Hola, yo también estoy dando mis primeros pasos en la comunicación rs232 bajo C e hice una pequeña modificación al programa de huichoman y guiándome un poco con el trabajo de Nocturno

1ero: Cambié el pulsador del proteus y le coloqué un switch

2do: El programa quedó así:

#include <18f4550.h>
#fuses NOWDT,NOPROTECT,NOCPD,NOLVP,INTRC_IO,NOMCLR,CCP2C1,NOPBADEN
#use delay(clock=4000000)
#USE RS232 (baud=9600,bits=8,parity=N,xmit=PIN_C6,rcv=PIN_C7)

#byte RCREG=             0xFAE       // Aquí se recibe el dato de la usart

char dato_e='H',dato_r;

void main(void)
{
   int8 aux; /* Lo uso para descargar el buffer de recepción y así evitar el error de overrun
y que se cuelgue el pic*/


            while(true)
            {

                output_low(PIN_D1);
               if(input(PIN_D0)==0)
                  {
           
                     dato_r=getc();
                     printf("dato_e :%c  dato_r : %c  ",dato_e,dato_r);        //mensaje por v.terminal
                  }
               else
               {
                     output_high(PIN_D1);
                     aux=RCREG;
               }

            }
}
///////////////////////////////

En negrita e resaltado los cambios, esto lo hice porque el pic se me quedaba colgado si recibía más de 2 datos sin haberlos procesado previamente, y esto ocurría justo cuando se le enviaban datos teniendo el pulsador o switch abierto, claro también pude trabajar con CREN y detectar el overrun, pero para éste caso en particular lo más sencillo que ví fué esto.

Lo quise compartir porque para mí es muy útil y quizás a otra persona que se esté iniciando también les sea de utilidad.

PD1: Todo esto es posible gracias a las contribuciones de todos nosotros

PD2: Me gusta mucho el foro  :mrgreen: , la gente comparte sus conocimientos de una manera excepcional y todos estamos dispuestos a ayudar al prójimo que en verdad quiera aprender y ser ayudado claro!  :wink:

Saludos.

Desconectado gu1llermo

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 217
Re: RS232 - Comunicación serial (SOLUCIONADO) Arrrrr Fiiiinnnn! ;)
« Respuesta #31 en: 27 de Febrero de 2008, 12:36:36 »
papinolmedo verifica la conexión del MAX232 fíjate que todas las señales esté correctamente conectadas, porque puede ser que se te haya pasado una conexión y no te hayas dado cuenta, a mí me a pasado y casi e podido jurar que todo estaba bien conectado  :D  :z) bueno así aprendemos.

PD: Yo también creo que puede ser un problema de Hardware.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: RS232 - Comunicación serial (SOLUCIONADO) Arrrrr Fiiiinnnn! ;)
« Respuesta #32 en: 27 de Febrero de 2008, 14:43:48 »
El programa con el simulador va bien.

Desconectado papinolmedo

  • PIC10
  • *
  • Mensajes: 11
Re: RS232 - Comunicación serial (SOLUCIONADO) Arrrrr Fiiiinnnn! ;)
« Respuesta #33 en: 27 de Febrero de 2008, 19:57:16 »
Estimados, he probado las sugerencias que me han dado.

Mira lo que yo hice aun esta de simulador, como sabes entre simulador y circuito real hay diferencia, sin embargo proba de habilitar las pullup del puerto b , tambien proba de cambiar el clock(si estas en simulacion ) 4mhz y y el respectivo fuse a xt, tambien podes probar de meter  el codigo en la  interrupcion en rs232,  veo que tenes pocos fuses proba de usar el pic wizar y agrgar algunos mas , tambien puede ser eso.

Amigo quirogaareal, no estoy simulando, estoy trabajando directamente con el pic, pero cuento con los materiales para cambiar el Xtal, lo he hecho y he probado con distintas velocidades de transmisión y en todas tengo el mismo problema. El problema no esta en el puerto B, de hecho cuando intento capturar el caracter y hacer eco de lo que recibo, no se obtiene nada. Gracias por tus sugerencias.


papinolmedo verifica la conexión del MAX232 fíjate que todas las señales esté correctamente conectadas, porque puede ser que se te haya pasado una conexión y no te hayas dado cuenta, a mí me a pasado y casi e podido jurar que todo estaba bien conectado  :D  :z) bueno así aprendemos.

PD: Yo también creo que puede ser un problema de Hardware.

Amigo gu1llermo, he probado el circuito de la max con un pic 16f877, trabaja sin ningún problemas, no es problema de la max. Gracias por tu sugerencia.


El programa con el simulador va bien.

Amigo pocher, el programa funciona bien, lo sé porque lo utilizado en un pic16f877 (haciendo los cambios necesarios, obviamente)



Muchas gracias por sus respuestas.

Saludos cordiales.



"Seamos realistas y hagamos lo imposible."
Ernesto Guevara de la Serna.

Desconectado papinolmedo

  • PIC10
  • *
  • Mensajes: 11
Re: RS232 - Comunicación serial (SOLUCIONADO) Arrrrr Fiiiinnnn! ;)
« Respuesta #34 en: 27 de Febrero de 2008, 20:02:02 »
Estimados:

El código que he insertado algunos post mas arriba detalla que utilizo el pic18f258, en realidad utilizo el pic18lf258, pero el grabador que utilizo (GTP USB Lite) lo reconoce como 18f258. Tal vez alguien haya trabajado con el pic18lf258 y pueda comentarme si ha tenido problemas con la recepción de datos seriales con él. Como ya dije, he probado el mismo código con dos pic18lf258 y en los dos ocurre lo mismo, esto me indica que el problema puede deberse más bien a errores de HW que de SW.

Por ahora voy a probar la recepción de datos seriales con un pic18f2580 y les cuento como me va.

Saludos cordiales.
"Seamos realistas y hagamos lo imposible."
Ernesto Guevara de la Serna.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: RS232 - Comunicación serial (SOLUCIONADO) Arrrrr Fiiiinnnn! ;)
« Respuesta #35 en: 27 de Febrero de 2008, 20:28:27 »
Hiciste lo que te sugeri en el foro CAN??
Ponerle la directiva ERRORS a la declaracion del port serial, no sea que desde la PC envies en realidad dos caracteres y no uno, y el segundo ande boyando...
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.

Desconectado quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: RS232 - Comunicación serial (SOLUCIONADO) Arrrrr Fiiiinnnn! ;)
« Respuesta #36 en: 27 de Febrero de 2008, 22:36:45 »
Hola :
Mira yo con otro amigo estamos trabajando en un conductimetro , y necesitabamos hacer un oscilador con pwm de ciclo fijo a 4 kHz (nosotros veniamos programando la linea 16f 876) pasamos del programa del 16f876 solo cambiando algunos fuses y el nombre a la linea 18f252, el oscilador no anduvo y despues leyendo el manual cs nos dimos cuenta de que una instruccion que habiamos usado para el 16f no era igual a la  que debiamos usar en la linea 18f , por ende la cambiamos y el oscilador anduvo, a que viene toda esta aburrida explicacion a que revises las instrucciones para ver si alguna no es compatible con la linea 18 ...quizas la sugerencia del amigo MGLSOFT te sea util ...solo es cuestion de probar . espero que esta sugerencia te ayude .


Saludos desde Cordoba

Pedro
Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado papinolmedo

  • PIC10
  • *
  • Mensajes: 11
Re: RS232 - Comunicación serial (SOLUCIONADO) Arrrrr Fiiiinnnn! ;)
« Respuesta #37 en: 27 de Febrero de 2008, 23:59:58 »
Estimados:

He solucionado el problema!!!. Típico error de capa 8!!!

El código que he posteado más arriba esta operativo y funciona a la perfección. Lo que pasa es que cuando uno duerme poco y trabaja mucho no puede ver con claridad los detalles importantes.

Les cuento cual era el error. El código posteado más arriba no era precisamente el que estaba utilizando en el pic, en el que de verdad ocupaba habían dos lineas extras, con las cuales utilizaba el puerto C, esta eran: #use fast_io(C) y set_tris_c(0x0f). Luego de aplicar la técnica RTFM, logre dar con la solución: "The SPEN (RCSTA register) and the TRISC<7> bits have to be set and the TRISC<6> bit must be cleared, in order to configure pins RC6/TX/CK and RC7/RX/DT as the Universal Synchronous Asynchronous Receiver Transmitter."

De este modo al cambiar a  set_tris_c(0b10000000) el pic recibía datos seriales y, tal como dijo el maestro RedPic, "el PIC y mi PC ahora hablan hasta por los codos"

Muchas gracias a todos quienes me dieron una mano con sus sugerencias.


Saludos cordiales.
"Seamos realistas y hagamos lo imposible."
Ernesto Guevara de la Serna.

Desconectado quirogaareal

  • PIC16
  • ***
  • Mensajes: 180
Re: RS232 - Comunicación serial (SOLUCIONADO) Arrrrr Fiiiinnnn! ;)
« Respuesta #38 en: 28 de Febrero de 2008, 07:10:07 »
Hola:
Bueno papinolmedo me alegro que lo hayas solucionado ya es un dolor de cabeza menos en que pensar.

Saludos desde Cordoba

Pedro
Recuerda : Si una mujer te ama de verdad no te pedira ni Matrimonio, Ni concubinato , Ni hijos, No te mentira , ni buscara que cambies de opinion con respecto a las tres primeras opciones.

Saludos

desde Cordoba Argentina

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2568
Re: RS232 - Comunicación serial (SOLUCIONADO) Arrrrr Fiiiinnnn! ;)
« Respuesta #39 en: 29 de Febrero de 2008, 14:21:40 »
Ah, tenías los dos pines como salida.

Si le quieres quitar el set_tris_c creo que funciona igual.

Un saludo

Desconectado papinolmedo

  • PIC10
  • *
  • Mensajes: 11
Re: RS232 - Comunicación serial (SOLUCIONADO) Arrrrr Fiiiinnnn! ;)
« Respuesta #40 en: 29 de Febrero de 2008, 22:33:51 »
Ah, tenías los dos pines como salida.

Si le quieres quitar el set_tris_c creo que funciona igual.



Exactamente pocher, sin el set_tris_c funciona igual, pero lo inserté porque ocupo el puerto C para generar una salida. El código posteado es en realidad una parte del código total, lo hice solo como primera prueba para testear la comunicación serial. El programa a avanzando más, le he añadido más cosas como el uso de los timers.

Saludos cordiales.

"Seamos realistas y hagamos lo imposible."
Ernesto Guevara de la Serna.

Desconectado MGLSOFT

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 7912
Re: RS232 - Comunicación serial (SOLUCIONADO) Arrrrr Fiiiinnnn! ;)
« Respuesta #41 en: 01 de Marzo de 2008, 08:05:19 »
Tambien te va a funcionar quitando todos los #use_fast_io() y todos los set_tris_x().... :mrgreen: :mrgreen:
Todos los dias aprendo algo nuevo, el ultimo día de mi vida aprenderé a morir....
Mi Abuelo.


 

anything