TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: polimetro en 03 de Mayo de 2013, 23:19:57

Título: ¿Como recibir datos por RS232 desde PC a PIC16f818? [getc(); no funciona]
Publicado por: polimetro en 03 de Mayo de 2013, 23:19:57
HOla amigos, tengo un problema



Estoy utilizando un microcontrolador pic16f818 el cual se dedica a tomar muestras analogicas ,
 convertirlas a digitales y enviarlas a un pc mediante un max232

El envio PIC a PC funciona muy bien 

Utilizando este codigo
Código: [Seleccionar]
printf("%ld\r\n", Variable_int16_a_enviar);
ya que un

Código: [Seleccionar]
putc(Variable_int16_a_enviar);
Daba errores,
MIRA AQUI(Eso lo consulte en ESTE HILO del foro) (http://www.todopic.com.ar/foros/index.php?topic=40439.0)

El problema viene cuando quiero que el pic reciba los datos

En primer lugar que las primeras lineas de configuracion de RS232 estan bien
Código: [Seleccionar]
#use rs232(baud=1200, xmit=pin_b6, rcv=pin_b7)
Con el pic16f876 lo hacia mediante la interrupcion RDA


   Por ejemplo:
Código: [Seleccionar]
/******************************************************************************/
/*************  FUNCIÓN INTERRUPCIÓN POR RECEPCIÓN DE DATOS *******************/

#int_RDA                               //Interrupción por recepción de datos

void RDA_isr(){

  valor=getc();                 //En "valor" el dato recibido via RS232
 printf(lcd_putc, "\fRecibido %d ", valor);   //Se muestra en pantalla información recibida
 delay_ms(500);
  }

/******************************************************************************/
Pero debido a caracteristicas del proyecto , tengo que hacerlo con el 16f818 el cual no tiene interrupcion por RDA al
parecer...

Por lo cual trate de hacer que mirase getc(); dentro del while principal ...
resumiendo algo asi





Código: [Seleccionar]
void main () { // algo simple...
   
   while(1){
   
     PORTB=getc();
           
     delay_ms(500);
         
         }
   }

Pero no funciona!

Y resumiendo, puedo enviar datos del Pic A la PC pero   no puedo recibir ni un dato enviado desde el PC hasta el PIC

Podeis ayudarmee???

Muchas gracias
Título: Re: ¿Como recibir datos por RS232 desde PC a PIC16f818? [getc(); no funciona]
Publicado por: rivale en 05 de Mayo de 2013, 14:15:24
No recuerdo si ese micro tiene rs232 por hardware, pero para saber si tienes datos en el buffer usa la función kbhit y si tienes datos entonces usas el getc
Título: Re: ¿Como recibir datos por RS232 desde PC a PIC16f818? [getc(); no funciona]
Publicado por: polimetro en 13 de Mayo de 2013, 13:43:47
Lo siento pero no te he entendido.

Tambien he provado el mismo metodo con el 16f877 y tampoco funciona
Título: Re: ¿Como recibir datos por RS232 desde PC a PIC16f818? [getc(); no funciona]
Publicado por: Chenao en 13 de Mayo de 2013, 14:52:00

Porque no pones toda la función main(), ya que puede ser un problema de configuración de la interrupción o de algún modulo que interfiere en el protocolo rs232.