Autor Tema: Recepcion de puerto serie  (Leído 4147 veces)

0 Usuarios y 5 Visitantes están viendo este tema.

Desconectado mrgse

  • PIC10
  • *
  • Mensajes: 42
Recepcion de puerto serie
« en: 27 de Mayo de 2009, 07:31:55 »
Wenas, soy novato en esto y me gustaria saber si alguien puede pasarme un programa muy sencillo en Visual Basic que envie un caracter cualquiera por rs232, y otro programa en C para el pic que cuando reciba se active la interrupcion int_rda i muestre en pantalla: RECIBIDO

A partir de ahi ya ire desarrollando lo que quiero hacer realmente, pero eso que es lo basico no me funciona. Muchas gracias!

Desconectado mrgse

  • PIC10
  • *
  • Mensajes: 42
Re: Recepcion de puerto serie
« Respuesta #1 en: 27 de Mayo de 2009, 07:34:00 »
Uso un pic 16F877, con el dispositivo ST485 i un conversor RS485-RS232
Las configuraciones d epines i clock etc ya las pondre yo. Muchas gracias otra vez

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Recepcion de puerto serie
« Respuesta #2 en: 27 de Mayo de 2009, 09:19:27 »
En este ejemplo se esperan 2 datos por el puerto serial, y su llegada se controla mediante una bandera (kbhit_rs232):
Código: C
  1. #include <16F877A.h>
  2. #device *=16
  3. #device adc=8
  4.  
  5. #FUSES NOWDT                    //No Watch Dog Timer
  6. #FUSES HS                       //High speed Osc (> 4mhz)
  7. #FUSES PUT                      //Power Up Timer
  8. #FUSES NOPROTECT                //Code not protected from reading
  9. #FUSES NODEBUG                  //No Debug mode for ICD
  10. #FUSES NOBROWNOUT               //No brownout reset
  11. #FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
  12. #FUSES NOCPD                    //No EE protection
  13. #FUSES NOWRT                    //Program memory not write protected
  14.  
  15. #use delay(clock=20000000)
  16. #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
  17.  
  18.  
  19. int   DATA0;
  20. int   DATA1;
  21. int1  kbhit_rs232=0;
  22.  
  23.  
  24. #int_RDA
  25. RDA_isr()
  26. {
  27.    DATA0=0x00;
  28.    DATA1=0x00;
  29.    DATA0=getc();
  30.    while(kbhit()==0){} //Espero segundo dato
  31.    DATA1=getc();
  32.    kbhit_rs232=1;
  33. }
  34.  
  35.  
  36.  
  37. void main()
  38. {
  39.    set_tris_c(0xF8);
  40.    enable_interrupts(INT_RDA);
  41.    enable_interrupts(GLOBAL);
  42.    
  43.    do{
  44.       while(kbhit_rs232==0){}
  45.          kbhit_rs232=0;
  46.          // Se recibio Dato
  47.    }while(TRUE);
  48. }
No contesto mensajes privados, las consultas en el foro

Desconectado mrgse

  • PIC10
  • *
  • Mensajes: 42
Re: Recepcion de puerto serie
« Respuesta #3 en: 02 de Junio de 2009, 05:54:39 »
Hola de nuevo. Muchas gracias por el codigo, pero no acabo de entenderlo. Yo simplemente quiero que por ejemplo cuando reciba el caracter 'H', una variable se ponga a true. Nada mas.  Muchas gracias por el interes!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Recepcion de puerto serie
« Respuesta #4 en: 02 de Junio de 2009, 11:11:54 »
Código: C
  1. #int_RDA
  2. RDA_isr()
  3. {
  4.   DATA=getc(); // Lee puerto serie
  5.   if(DATA=='H'){ // Así debería funcionar, sino prueba reemplazarlo por el valor en ascII.
  6.      kbhit_rs232=1;
  7.   }
  8. }
No contesto mensajes privados, las consultas en el foro

Desconectado alexysar

  • PIC16
  • ***
  • Mensajes: 206
    • e-Kit
Re: Recepcion de puerto serie
« Respuesta #5 en: 02 de Junio de 2009, 17:46:23 »
si alguien puede pasarme un programa muy sencillo en Visual Basic que envie un caracter cualquiera por rs232

No es en visual Basic, pero lo más simple para enviar datos por el puerto serie hacie el pic es usar el hiperterminal de windows

Inicio -> Accesorios -> comunicaciones -> hiperterminal

Lo configuras en com1
Bits / segundo = 9600
Bit de datos =8
Paridad = Ninguno
Bit de parada = 1
Control de flujo = Ninguno

y despues escribis en el hiperterminal lo que queres enviar, por ejemplo H

Desconectado mrgse

  • PIC10
  • *
  • Mensajes: 42
Re: Recepcion de puerto serie
« Respuesta #6 en: 02 de Junio de 2009, 18:14:11 »
Muchas gracias a ambos. Mañana por la mañana lo probaré y os digo que tal. Os informo que soy capaz de enviar datos del PIC al PC, pero al reves se me resiste. Espero que con vuestra ayuda lo consiga!!GRACIAS!!

Desconectado mrgse

  • PIC10
  • *
  • Mensajes: 42
Re: Recepcion de puerto serie
« Respuesta #7 en: 03 de Junio de 2009, 03:08:05 »
Esta interrupcion se activa al recibir cualquier dato en el puerto serie??

Desconectado mrgse

  • PIC10
  • *
  • Mensajes: 42
Re: Recepcion de puerto serie
« Respuesta #8 en: 03 de Junio de 2009, 04:05:45 »
si alguien puede pasarme un programa muy sencillo en Visual Basic que envie un caracter cualquiera por rs232

No es en visual Basic, pero lo más simple para enviar datos por el puerto serie hacie el pic es usar el hiperterminal de windows

Inicio -> Accesorios -> comunicaciones -> hiperterminal

Lo configuras en com1
Bits / segundo = 9600
Bit de datos =8
Paridad = Ninguno
Bit de parada = 1
Control de flujo = Ninguno

y despues escribis en el hiperterminal lo que queres enviar, por ejemplo H


No me deja escribir en el cuadro de texto del hyperterminal!

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Recepcion de puerto serie
« Respuesta #9 en: 03 de Junio de 2009, 10:04:15 »
Esta interrupcion se activa al recibir cualquier dato en el puerto serie??

Exactamente.

si alguien puede pasarme un programa muy sencillo en Visual Basic que envie un caracter cualquiera por rs232
No es en visual Basic, pero lo más simple para enviar datos por el puerto serie hacie el pic es usar el hiperterminal de windows

Inicio -> Accesorios -> comunicaciones -> hiperterminal

Lo configuras en com1
Bits / segundo = 9600
Bit de datos =8
Paridad = Ninguno
Bit de parada = 1
Control de flujo = Ninguno

y despues escribis en el hiperterminal lo que queres enviar, por ejemplo H


No me deja escribir en el cuadro de texto del hyperterminal!

Yo nunca use el hiperterminal, uso el siguiente Siow. Exactamente igual que en hiperterminal, seleccionas el puerto y la velocidad. Creo que la diferencia a el hiperterminal que recibes en pantalla los caracteres ascii y hexadecimal.
No contesto mensajes privados, las consultas en el foro

Desconectado alexysar

  • PIC16
  • ***
  • Mensajes: 206
    • e-Kit
Re: Recepcion de puerto serie
« Respuesta #10 en: 03 de Junio de 2009, 11:12:12 »
Citar
No me deja escribir en el cuadro de texto del hyperterminal!

Vos cuando escribís en la ventana del hyperteminal están mandando los datos por el puerto serie, pero no los ves en pantalla. Los caracteres se ven en pantalla si se reciben por el puerto serie no si  se envían.
Si te queres asegurar que el sistema funcione podes hacer lo siguiente: conectas un cable serie a la pc y puenteas los pines 2 y 3 en el extremo que iría al pic. De esta forma, vas a ver los caracteres, porque vos los mandas por la línea de tx cuando lo escribis en el hyperterminal, y los caracteres vuelven por Rx porque hiciste un puente, entonces se ven en la ventana del hyperterminal. Esto se llama loopback.

En resumen si vos escribis en el cuador de textos del hyperterminal no vas a ver los caracteres, pero de todas formas se estan enviando por el puerto serie.
« Última modificación: 03 de Junio de 2009, 11:15:52 por alexysar »

Desconectado mrgse

  • PIC10
  • *
  • Mensajes: 42
Re: Recepcion de puerto serie
« Respuesta #11 en: 03 de Junio de 2009, 17:39:43 »
Muchas gracias!!Mañana lo pruebo!!

Desconectado mrgse

  • PIC10
  • *
  • Mensajes: 42
Re: Recepcion de puerto serie
« Respuesta #12 en: 05 de Junio de 2009, 04:20:48 »
Sigue sin funcionarme. Puede que sea problema del conversor rs232-485. He puenteado como me dijisteis i si envio la el caracter H. Me gustaria saber como analizar el RS485 que tiene los pines D+, D- i GND, para saber si esa H traspassa o no.

Muchas gracias!

Desconectado alexysar

  • PIC16
  • ***
  • Mensajes: 206
    • e-Kit
Re: Recepcion de puerto serie
« Respuesta #13 en: 05 de Junio de 2009, 21:16:13 »
No me queda claro que es lo que estas haciendo. Podrias explicarte mejor en lo que respecta al hardware que estas empleando?
« Última modificación: 05 de Junio de 2009, 21:19:59 por alexysar »


 

anything