Hola a todos, soy nuevo pero tengo años leyendo el foro y me ha servido de mucha ayuda.... pero justo ahora tengo un gran problema! Estoy con mi tesis de grado, y tengo un problema con la comunicacion rs232, les explico mas o menos.
Tengo un pic 18f2550 conectado a la pc por usb y por medio de visual basic 2010 hice la interfaz, funciona todo bien, recibo y envio sin problemas! Tambien le tengo conectado un LCD 16x2 y funciona bien con usb, recibo de la pc y muestra en la lcd sin problemas.
Ese pic tiene conectado unos modulos RF LAIPAC en los pines RX y TX del rs232 y se comunica con otro pic 16f873 con modulos RF LAIPAC sin problemas, yo probe su funcionamiento aparte (sin usb) y funciono sin problema alguno.
El detalle esta es cuando tengo conectado el 18f2550 con los 2 a la vez, es decir el usb y el rs232.. el usb me funciona sin problemas, pero al recibir un comando del usb y tratar de enviar el comando por rs232 no funciona :S.
Le conecte a los pines de RX y TX el pickit2 en el modo UART TOOL para ver si envia algo, y pues resulta que no envia nada! probe de todo, cambiando los baudios del rs232, el cristal, los comando que si printf o putc y nada :S no envia y tampoco recibe por rs232 mientra esta conectado al usb! he llegado a pensar que no se pueden trabajar los 2 juntos!
Si alguien sabe mas o menos como arreglar el problema o como ayudarme les agradeceria un mundo, ya que tengo como 2 semanas arrancandome los cabellos por no dar con el problema.
Ojo no puedo agregar otros modulos o integrados, como requisito me pidieron eso asi!
muchas gracias de antemano!
Les anexo partes del codigo del PIC 18f2550 para entiendan un poco mejor
Tengo un pic 18f2550 conectado a la pc por usb y por medio de visual basic 2010 hice la interfaz, funciona todo bien, recibo y envio sin problemas! Tambien le tengo conectado un LCD 16x2 y funciona bien con usb, recibo de la pc y muestra en la lcd sin problemas.
Ese pic tiene conectado unos modulos RF LAIPAC en los pines RX y TX del rs232 y se comunica con otro pic 16f873 con modulos RF LAIPAC sin problemas, yo probe su funcionamiento aparte (sin usb) y funciono sin problema alguno.
El detalle esta es cuando tengo conectado el 18f2550 con los 2 a la vez, es decir el usb y el rs232.. el usb me funciona sin problemas, pero al recibir un comando del usb y tratar de enviar el comando por rs232 no funciona :S.
Le conecte a los pines de RX y TX el pickit2 en el modo UART TOOL para ver si envia algo, y pues resulta que no envia nada! probe de todo, cambiando los baudios del rs232, el cristal, los comando que si printf o putc y nada :S no envia y tampoco recibe por rs232 mientra esta conectado al usb! he llegado a pensar que no se pueden trabajar los 2 juntos!
Si alguien sabe mas o menos como arreglar el problema o como ayudarme les agradeceria un mundo, ya que tengo como 2 semanas arrancandome los cabellos por no dar con el problema.
Ojo no puedo agregar otros modulos o integrados, como requisito me pidieron eso asi!
muchas gracias de antemano!
Les anexo partes del codigo del PIC 18f2550 para entiendan un poco mejor
Código:
#include <18F2550.h>
#fuses HSPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=20000000)
#use rs232(baud=1200, xmit=PIN_C6, rcv=PIN_C7, ERRORS)
#include <stdlib.h>
#include "usb_cdc.h"
#define LCD_RS_PIN PIN_B0
#define LCD_RW_PIN PIN_B1
#define LCD_ENABLE_PIN PIN_B2
#define LCD_DATA4 PIN_B3
#define LCD_DATA5 PIN_B4
#define LCD_DATA6 PIN_B5
#define LCD_DATA7 PIN_B6
#include <lcd.c>
#use standard_io(a)
void main()
{
SETUP_ADC(ADC_OFF);
SETUP_ADC_PORTS(NO_ANALOGS);
lcd_init();
delay_ms(5);
lcd_gotoxy(3,1);
printf(lcd_putc,"INICIANDO...");
delay_ms(2000);
printf(lcd_putc,"\f");
char rx_usb,rx_rs232;
usb_cdc_init();
usb_init();
while(!usb_cdc_connected()) {}
do
{
usb_task();
if (usb_enumerated())
{
if(usb_cdc_kbhit())
{
rx_usb=usb_cdc_getc();
}
if(rx_usb=='r')
{
putc('m'); //AQUI RECIBO DEL USB Y TRATO DE ENVIAR POR RS232 PERO NO ENVIA
}
.
.
.
.
if(rx_usb=='a') //AQUI RECIBO DEL USB Y MUESTRO EN LA LCD Y FUNCIONA PERFECTO
{
printf(lcd_putc,"\f");
lcd_gotoxy(4,1);
printf(lcd_putc,"Respuesta:");
lcd_gotoxy(5,2);
printf(lcd_putc,"OPCION A");
}
.
.
.
.
if(kbhit()) //AQUI TRATO DE RECIBIR DEL RS232 PERO NO RECIBE NADA
{
rx_rs232=getc();
if(rx_rs232=='a')
{
printf(usb_cdc_putc,"a");
}
.
.
.
.
if(!input(pin_a1)) //AQUI ENVIO POR USB SI SE PULSA Y SI LO ENVIA PERFECTO
{
while(!input(pin_a1)){}
printf(usb_cdc_putc,"1");
}
.
.
.
.
}