Autor Tema: RS232 la gran conquista del novato  (Leído 2612 veces)

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

Desconectado moneli

  • PIC10
  • *
  • Mensajes: 3
RS232 la gran conquista del novato
« en: 22 de Abril de 2008, 09:16:46 »
hola a todos, soy nuevo en el foro y necesito aclarar algunas dudas en cuanto a la comunicacion RS232.... de antemano los doy las gracias y los felicito por este foro que esta genial... y bueno a lo que iba... a modo de ubicacion estoy usando el PIC16F73, trabajo en C con el CCS
la idea es recibir una cadena de caracteres por puerto serie y mostrarla en un LCD, ahora bien ya logre enviar un caracter desde la PC con un programa hecho por mi, y lo muestro en el LCD del cacharo, pero cuando envio una cadena de caracteres me muestra cosas raras en el LCD
ahora bien pregunto
1ro- Como se puede recivir una cadena de caracteres, existe alguna funcion aparte de getc(), que lo haga, he probado hacer un buffer y guardar los caracteres uno a uno pero nada.
si me pudieran orientar como hacerlo o por lo menos donde puedo encontrar informacion sobre el tema se lo agradeceria mucho, saludos y gracias por su tiempo

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: RS232 la gran conquista del novato
« Respuesta #1 en: 22 de Abril de 2008, 09:35:44 »
1ro- Como se puede recivir una cadena de caracteres, existe alguna funcion aparte de getc(), que lo haga, he probado hacer un buffer y guardar los caracteres uno a uno pero nada.
si me pudieran orientar como hacerlo o por lo menos donde puedo encontrar informacion sobre el tema se lo agradeceria mucho, saludos y gracias por su tiempo

Puedes hacer precisamente eso, una función que lea un caracter por caracter y lo guarde en el buffer.  De todas formas deberás indicarle a esa función qué la hace terminar, es decir si va guardando en el buffer hasta que llegue un #0 o si lo hace hasta que llegue un #13 , etc.

Y si quieres, puedes pegar el código de la función que dices que no anda.  Saludos
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: RS232 la gran conquista del novato
« Respuesta #2 en: 22 de Abril de 2008, 19:57:01 »
Hola.

La mejor manera de trabajar con el RS232 es con interrupciones. Ve a la pagina del GRAN RedRaven, yo aprendi de ahi casi toooodo lo del CCS y va de lujo hasta ahora (Las otras partes de mi aprendizaje se las debo a J1M, Nocturno ... y demas!!!  GRACIAS:mrgreen:).

Hay una seccion en la cual esta descrito el manejo del serial con interrupciones de una manera muuuuuy detallada :-), te aseguro que lo entenderas!!!!! :P

Un saludo
El papel lo aguanta todo

Desconectado J.C

  • PIC10
  • *
  • Mensajes: 23
Re: RS232 la gran conquista del novato
« Respuesta #3 en: 24 de Abril de 2008, 08:47:05 »
Saludos gente pregunto...
todos los pic traen prefijados el pin de Tx y Rx, pero segun he visto por software se pueden usar otros, ahora la duda mia es la siguiente cuando uso las interrupciones de Tx y Rx estas salen a buscar los pines prefijados o usan los que configuro por sotfware... como puede saber eso y como se pueden cambiar... saludos y suerte J.C
Todo esta ahi... no hay mas que mirar.

Desconectado gera

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2188
Re: RS232 la gran conquista del novato
« Respuesta #4 en: 24 de Abril de 2008, 22:08:52 »
mira, justamente hace poco termine de hacer un ejemplo con lo q pedis... te lo paso
(ojo con las conexiones)

Código: [Seleccionar]
#include <16F84A.h>
#fuses XT, NOWDT, NOPROTECT
#use delay(clock=4000000)

#define Tx PIN_A1 // PIN de Transmisión
#define Rx PIN_A0 // PIN de Recepción
#use rs232(baud=9600,parity=N,xmit=Tx,rcv=Rx,bits=8)
#use fast_io (a)
#use fast_io (b)

#define use_portb_lcd TRUE
#include "lcd.c"

void main()
{
   char a[16];
   lcd_init();
   printf("pic a la espera\n");
   printf(lcd_putc,"\fpic listo");
   while(true)
   {
      gets(a);
      printf("recibido: %s\n",a);
      printf(lcd_putc,"\frecibido:\n%s",a);
   }
}

"conozco dos cosas infinitas: el universo y la estupidez humana. Y no estoy muy seguro del primero." A.Einstein

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: RS232 la gran conquista del novato
« Respuesta #5 en: 29 de Abril de 2008, 16:58:42 »
Cuando se usa el #use rs232 ..... y se usan los pines asignados en HW si se puede utilizar las interrupciones, si se usan los otros pines no. De hecho, en el ejemplo EX-ENCRY usan dos modulos de serial y en uno de ellos se atiende la interrupcion por el RB0.

Creo que la interrupcion del serial es cuando se llena el registro RCREG, en el datasheet esta conectado el diagrama de transmision al pin RX/DT.... asi que por eso mi conclusion.... pero la verdad verdad .... no he probado con otros pines
El papel lo aguanta todo

Desconectado J.C

  • PIC10
  • *
  • Mensajes: 23
Re: RS232 la gran conquista del novato
« Respuesta #6 en: 30 de Abril de 2008, 08:49:53 »
gracias a todos por su ayuda con este tema de la rs232, la verdad me hubiera sido imposible lograr comunicarme... felizmente y gracias a ustedes ya puedo conectar un tareco a la PC  :-/ :-/ :-/... cuenten con mi ayuda para lo que sea... pronto publicare el codigo completo de mi proyecto para los que deseen hacer una cerradura optica... gracias de nuevo saludos y suerte J.C
Todo esta ahi... no hay mas que mirar.


 

anything