TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Medusa en 15 de Julio de 2009, 14:51:26

Título: Como leer una cadena de caracteres usando el #int_rda
Publicado por: Medusa en 15 de Julio de 2009, 14:51:26
Hola a todos, quisiera que alguien me pueda ayudar con este problema:

Tengo una aplicacion con el puerto UART del pic en donde envio comandos a una aplicacion en PC, cuando envio un caracter de comando a la aplicacion de la PC , este me responde primero enviandome los comando \r\n (Retorno de carro y cambio de linea)  y despues recien me envia el codigo correspondiente, como puedo capturar este codigo usando la interrupcion #int_rda?

Título: Re: Como leer una cadena de caracteres usando el #int_rda
Publicado por: MLO__ en 15 de Julio de 2009, 15:04:30
Hola.

Puedes definir un bufer de recepcion y un contador, el cual se iria incrementando a medida que van llegando nuevos caracteres:

Código: [Seleccionar]
bufer[++count] = getc();
Título: Re: Como leer una cadena de caracteres usando el #int_rda
Publicado por: migsantiago en 15 de Julio de 2009, 15:25:56
Usando el buscador:

Ejemplito 16F876A: Recibiendo del RS232 sobre un Buffer y procesandolo posteriormente.
http://www.todopic.com.ar/foros/index.php?topic=4573.0
Título: Re: Como leer una cadena de caracteres usando el #int_rda
Publicado por: RedPic en 15 de Julio de 2009, 18:06:10
Santiago, ese es el mas antiguo de mis trabajos "bufferiles" ...

El mas moderno (y completo pero menos conocido y/o visitado) es Teoría y praxis de las comunicaciones serie TTL con los PIC's 16F/18F en CCS C (http://www.todopic.com.ar/foros/index.php?topic=23222.0)

 
Título: Re: Como leer una cadena de caracteres usando el #int_rda
Publicado por: migsantiago en 15 de Julio de 2009, 18:55:58
Bueno Diego, creo entonces que Medusa ya tiene más que leer.  :D
Título: Re: Como leer una cadena de caracteres usando el #int_rda
Publicado por: Medusa en 16 de Julio de 2009, 18:53:31
RedPic esta muy interesante tu trabajo, gracias por compartirlo
Título: Re: Como leer una cadena de caracteres usando el #int_rda
Publicado por: Suky en 16 de Julio de 2009, 20:05:34
Me parece que es más fácil preguntar antes de buscar! De este tema como se ve, hay mucha info en el foro, solo hay que buscar :wink:

Saludos!
Título: Re: Como leer una cadena de caracteres usando el #int_rda
Publicado por: Medusa en 16 de Julio de 2009, 21:09:16
Hola Suky,  :mrgreen: talves tu me puedas decir como soluciono este problema ya que lo sabes todo:

Tengo una cadena de caracteres que debo de recibir por el UART del Pic, esta cadena tiene la siguiente forma:

\r\nDATA1\r\n\r\nDATA2\r\n, los cuales son enviados en tiempos variables, al inicio el dato es recbido correctamente por el pic, pero despues de varios lecturas por alguna razon el PIC queda congelado en el proceso de captura de la cadena y no hay manera de que salga de ese estado solo resetendolo.
tambien he intentado usar la interrupcion #int_rda pero igual que pic queda colgado despues de varias lecturas


Título: Re: Como leer una cadena de caracteres usando el #int_rda
Publicado por: Suky en 16 de Julio de 2009, 21:21:19
Hola Suky,  :mrgreen: talves tu me puedas decir como soluciono este problema ya que lo sabes todo:

 :D Ojalas lo supiera todo!

\r\nDATA1\r\n\r\nDATA2\r\n

Realmente es así? o así: DATA1\r\nDATA2\r\n

Prueba de esta manera:

Código: C
  1. #int_RDA
  2. RDA_isr(){
  3.     gets(string);
  4.     kbhit_data=1; // Para indicar al programa principal que ha llegado string
  5. }

Saludos!
Título: Re: Como leer una cadena de caracteres usando el #int_rda
Publicado por: Medusa en 16 de Julio de 2009, 21:31:30
Citar
Realmente es así? o así: DATA1\r\nDATA2\r\n

Si asi es la data