Autor Tema: Como leer una cadena de caracteres usando el #int_rda  (Leído 4990 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Como leer una cadena de caracteres usando el #int_rda
« 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?


Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Como leer una cadena de caracteres usando el #int_rda
« Respuesta #1 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();
El papel lo aguanta todo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Como leer una cadena de caracteres usando el #int_rda
« Respuesta #2 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

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Como leer una cadena de caracteres usando el #int_rda
« Respuesta #3 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

 
Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Como leer una cadena de caracteres usando el #int_rda
« Respuesta #4 en: 15 de Julio de 2009, 18:55:58 »
Bueno Diego, creo entonces que Medusa ya tiene más que leer.  :D

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Como leer una cadena de caracteres usando el #int_rda
« Respuesta #5 en: 16 de Julio de 2009, 18:53:31 »
RedPic esta muy interesante tu trabajo, gracias por compartirlo

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como leer una cadena de caracteres usando el #int_rda
« Respuesta #6 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!
No contesto mensajes privados, las consultas en el foro

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Como leer una cadena de caracteres usando el #int_rda
« Respuesta #7 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



Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como leer una cadena de caracteres usando el #int_rda
« Respuesta #8 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!
No contesto mensajes privados, las consultas en el foro

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Como leer una cadena de caracteres usando el #int_rda
« Respuesta #9 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