TODOPIC

FORO TÉCNICO => Foro Técnico => Mensaje iniciado por: PALMARETRO en 12 de Enero de 2011, 16:45:12

Título: Problema con 18F2550 y conversion USB-Serial
Publicado por: PALMARETRO en 12 de Enero de 2011, 16:45:12
Hola, recurro a ustedes por la siguiente duda.

Estoy haciendo un conversor USB<->Serial con un PIC 18F2550, y me pasa lo siguiente:
La transmisión serial a USB funciona bien y los datos que envió por el uart del PIC aparecen bien en el COM virtual.
El problema es que cuando transmito del USB al serial siempre me llega un caracter raro, no se que pueda ser lo que sucede.

Este es el programa con el que estoy trabajando:
Código: [Seleccionar]
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#use rs232(baud=9600, xmit=pin_c6, rcv=pin_c7, parity=n, bits=8, stop=1)

#include ".\include\usb_cdc.h"

#byte PORTA = 0xF80
#byte PORTB = 0xF81
#byte PORTC = 0xF82
#byte PORTE = 0xF84

char car;

void Configurar_Puertos(void);

void main()
{
   delay_ms(100);
   Configurar_Puertos();
   usb_init();   
   while(!usb_cdc_connected()){}
   do{
      usb_task();
      if (usb_enumerated())
      {
         if (kbhit())
         {
            car=getc();
            usb_cdc_putc(car);
         }
         if (usb_cdc_kbhit())
         {
            car=usb_cdc_getc();
            putc(car);
         }
      }     
   }while(true);
}

void Configurar_Puertos(void)
{
   set_tris_a (0b00000000);
   set_tris_b (0b00000000);
   set_tris_c (0b11000000);
   set_tris_e (0b00000000);
}

Quiza el problema sea algo en la instrucción

if (usb_cdc_kbhit())
{
     car=usb_cdc_getc();
     putc(car);
}

Igual espero que me puedan ayudar, gracias