TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: vet2 en 15 de Agosto de 2007, 18:09:52

Título: Problemas con UARTRS232
Publicado por: vet2 en 15 de Agosto de 2007, 18:09:52
Hola a todos, estoy teniendo muchos problemas con las comunicaciones RS232 entre PIC-PC.
No hace nada, ni escribe ni recibe y no se donde puede estar el fallo, he cambiado el PIC y el MAX y sigue sin hacer nada y no se ya por donde seguir.
Os dejo las conexiones que he echo y el codigo por si me sobra o me falta algo.
Al lado de las patillas del MAX indico la tensión que he medido con el polimetro por si os orienta un poco más.
Las conexiones que he echo son:

   PC              MAX232         
    2    ---->      14(-10.5V)             
    3    ---->      13(0V)
    5    ---->      15

  MAX232                    PIC
   11(5.13v)    ---->      17(C6)             
   12(5.13V)    ---->      18(C7)

Aunque algunas veces la tensión en las patillas 11 y 12 del MAX tienen 0.37 V

El codigo es el siguiente:


#include <16F876.h>

#fuses HS,NOPROTECT,NOPUT,NOWDT,NOBROWNOUT,NOLVP,NOCPD  //configuramos el pic
#use delay (clock=8000000)  //configuramos el reloj
#USE RS232(BAUD=9600,BITS=8,PARITY=N,XMIT=PIN_C6,RCV=PIN_C7,STREAM=COM_A)


//Rutina de atencion de interrupcion para el puerto serie Com_A
#INT_RDA
RDA_isr(){
   char rxa;

  disable_interrupts(INT_RDA); //deshabilidatos la interrupcion 
   if(kbhit(COM_A)){   
      rxa=getc(COM_A);
      fprintf(COM_A,"Dato en A recibido %c.",rxa);
   }
  enable_interrupts(INT_RDA); //habilidatos la interrupcion
}

// Programa Principal
void main(void){
   set_tris_a(0x00); //Configuramos el puerto A como salidas digitales
   set_tris_b(0x00); //Configuramos el puerto B como salidas digitales
   set_tris_c(0x00); //Configuramos el puerto C como salidas digitales
   enable_interrupts(INT_RDA); //int puerto serie*/
   enable_interrupts(GLOBAL);  //todas int

   while(TRUE){   // bucle infinito de la aplicación
      output_high(PIN_B7); //Encender
      delay_ms(500);
      output_low(PIN_B7); //Apagar
      delay_ms(500);
   }
}

Muchas gracias.
Título: Re: Problemas con UARTRS232
Publicado por: maunix en 16 de Agosto de 2007, 11:12:02
El trisc<6:7> deben estar en 1 para configurarse como pines de usart.

Título: Re: Problemas con UARTRS232
Publicado por: MGLSOFT en 16 de Agosto de 2007, 17:33:00
Elimina o comenta las tres lineas de configuracion de puertos.

Código: C
  1. // set_tris_a(0x00); //Configuramos el puerto A como salidas digitales
  2.    // set_tris_b(0x00); //Configuramos el puerto B como salidas digitales
  3.    // set_tris_c(0x00); //Configuramos el puerto C como salidas digitales

CCS no necesita que los configures, el lo hace solo.

Como dice Maunix, seguramente alli esta el error... :mrgreen:
Título: Re: Problemas con UARTRS232
Publicado por: vszener en 19 de Agosto de 2007, 15:26:35
Ojo que cuando se usa la sentencia fast_io, el CCS no configura automáticamente los pines.


Suerte!!! ;)
Título: Re: Problemas con UARTRS232
Publicado por: MGLSOFT en 19 de Agosto de 2007, 16:28:05
Totalmente cierto, pero segun el codigo del amigo Vet2 no usa Fast_IO, entonces por defecto usa Standard_IO que si los configura... :mrgreen: :mrgreen:
Título: Re: Problemas con UARTRS232
Publicado por: vszener en 20 de Agosto de 2007, 06:05:01
Totalmente de acuerdo, solo lo puse como nota indicatoria, en el caso que use el fast_io, que después vienen los problemas por dicha sentencia.


Suerte!!! ;)
Título: Re: Problemas con UARTRS232
Publicado por: vet2 en 07 de Septiembre de 2007, 23:36:41
Perdón por no haber respondido antes pero llevo un tiempo sin poder acceder al foro, el firefox me da un error, 502 Bad Gateway y no puedo ver nada.

Gracias a todos por responder, he echo lo que comentabais de cambiar la configuración de los puertos, e incluso comentar las lineas para que las configure el CCS solo, pero nada.

Sigue sin hacer nada, bueno para ser exactos hace un poco, cuando alimento el pic, si me envía datos, pero sólo una vez y justo cuando lo alimento.

No se, creo que será el pic que esta cascao. De nuevo gracias por vuestras respuestas.
Título: Re: Problemas con UARTRS232
Publicado por: LABmouse en 08 de Septiembre de 2007, 09:20:26
Cuanto voltaje tienes en el pin MCLR??
Título: Re: Problemas con UARTRS232
Publicado por: RedPic en 08 de Septiembre de 2007, 09:30:48
vet2:

Compila y prueba esto:

Código: C
  1. /************************************************************
  2.  Propósito:  Testea la UART a 9600 baudios
  3.  Procesador: PIC16F876A con un crital de 8 MHz
  4.  Hardware:   MAX232
  5.  Software:  CCS PCM
  6. ************************************************************/
  7. #include <16F876a.h>
  8. #fuses HS,NOWDT,NOPROTECT,NOLVP,PUT,BROWNOUT
  9. #use delay(clock=8000000)
  10. #use rs232(baud=9600, xmit=pin_C6, rcv=pin_C7)
  11.  
  12. main() {
  13.    printf("PIC16F876A a la espera" );  // Envío mensaje de "estoy vivo"
  14.    while(true) {
  15.       putc(getc());                          // eco de lo que recibo
  16.    }
  17. }

Sólo devuelve el eco de lo que le envíes. Si no funciona es un problema de hardware.

Otros códigos:

Lo mínimo para comunicarnos vía RS232 Hardware y Software (http://www.todopic.com.ar/foros/index.php?topic=4620.0)
Recibiendo del RS232 sobre un Buffer y procesandolo posteriormente. (http://www.todopic.com.ar/foros/index.php?topic=4573.0)
Traductor RS232 a Morse (Sonoro y visual) (http://www.todopic.com.ar/foros/index.php?topic=12717.0)
Título: Re: Problemas con UARTRS232
Publicado por: vet2 en 08 de Septiembre de 2007, 13:46:15
 :-/Ya funciona :-/

Despues de probar el el programa que ha dejado RedPic (muchas gracias, por cierto), y comprobar que no :shock: fucionaba ya no sabia si cortarme las venas o dejarmelas largas.

He revisado el cableado de nuevo y todo estaba correcto, el problema era de software. Más concretamente del ¡¡¡¡¡HYPERTERMINAL!!!!! Desesperado por no saber que hacer cambie el puerto del pc y abri el Hiperterminal para el Com1 (yo lo tenia realizando las pruebas en en Com3), doy alimentacion al PIC y comienza a funcionar!!! (con el soft de RedPic). Creia que teneia el puerto roto pero no es asi, me he dado cuenta de un detalle y es el Com1 estaba configurado el Hiperterminal de la siguiente forma:
             Emulación:ANSIW
             Id del terminal Telnet:VT100

He cambiado esa configuración al Com3, que yo lo tenia en Autodetectar y ya me ha funcionado, he probado el programa que puse al principio y tambien funciona :mrgreen:.

Para ser novato en esto de los pic creo que la novatada la he pagado bien  :).
No seais muy duros conmigo, y muchas gracias a todos por vuestras respuestas.

Saludos
Título: Re: Problemas con UARTRS232
Publicado por: RedPic en 08 de Septiembre de 2007, 16:30:28
Ja, ja, ja  :D :D :D

Aquí (http://www.todopic.com.ar/foros/index.php?topic=3700.msg29854#msg29854) tienes mi primer post en este magnifico, insuperable, enorme, maravilloso e increible foro. Es del 16 de noviembre de 2005.

¿A que no sabes de que trataba? Imagínatelo y acertarás.  :mrgreen: