|
|
View previous topic :: View next topic |
Author |
Message |
joven
Joined: 30 Jan 2007 Posts: 56 Location: Viana do Castelo - Portugal
|
USB to USART |
Posted: Tue Nov 13, 2007 5:05 pm |
|
|
Hi
I'm trying use the ex_usb_serial.c but isn't working.
someone have successfully put working?
in my program i'm using the usb bootloader to try more fast the changes.
Code: |
#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN,WRTB,MCLR,NOCPD,NOWRTC
#use delay(clock=48000000)
// START OF bootloader definition
#define LOADER_END 0x7FF
#define LOADER_SIZE 0x6FF
#build(reset=LOADER_END+1, interrupt=LOADER_END+9)
#org 0, LOADER_END {} // nothing will replace the bootloader memory space
// END OF bootloader definition
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8)
#include <usb_cdc.h>
// Configure the demonstration I/O
#DEFINE LED1 PIN_B7
#define LED2 PIN_B6
#define LED3 PIN_B5
#DEFINE BUTTON PIN_B4
#define LED_ON output_low
#define LED_OFF output_high
/////////////////////////////////////////////////////////////////////////////
//
// usb_debug_task()
//
// When called periodically, displays debugging information over serial
// to display enumeration and connection states. Also lights LED1 based upon
// enumeration and status.
//
/////////////////////////////////////////////////////////////////////////////
void usb_debug_task(void) {
static int8 last_connected;
static int8 last_enumerated;
int8 new_connected;
int8 new_enumerated;
static int8 last_cdc;
int8 new_cdc;
new_connected=usb_attached();
new_enumerated=usb_enumerated();
new_cdc=usb_cdc_connected();
if (new_enumerated)
LED_ON(LED1);
else
LED_OFF(LED1);
if (new_cdc)
LED_ON(LED2);
else
LED_OFF(LED2);
if (usb_cdc_carrier.dte_present)
LED_ON(LED3);
else
LED_OFF(LED3);
if (new_connected && !last_connected)
printf("USB connected, waiting for enumaration...\r\n\n");
if (!new_connected && last_connected)
printf("USB disconnected, waiting for connection...\r\n\n");
if (new_enumerated && !last_enumerated)
printf("USB enumerated by PC/HOST\r\n\n");
if (!new_enumerated && last_enumerated)
printf("USB unenumerated by PC/HOST, waiting for enumeration...\r\n\n");
if (new_cdc && !last_cdc) {
printf("Serial program initiated on USB<->UART COM Port\r\n\n");
printf(usb_cdc_putc, "\r\n\nCCS CDC (Virtual RS232) Example\r\n\n");
}
last_connected=new_connected;
last_enumerated=new_enumerated;
last_cdc=new_cdc;
}
void main(void) {
char c;
LED_OFF(LED1);
LED_OFF(LED2);
LED_OFF(LED3);
printf("\r\n\nCCS CDC (Virtual RS232) Example\r\n");
#ifdef __PCH__
printf("PCH: v");
printf(__PCH__);
#endif
printf("\r\n");
usb_init_cs();
while (TRUE)
{
usb_task();
usb_debug_task();
if (kbhit())
{
c=getc();
if (c=='\n') {usb_cdc_putc('\r'); usb_cdc_putc('\n');}
if (c=='\r') {usb_cdc_putc('\r'); usb_cdc_putc('\n');}
else {usb_cdc_putc(c);}
}
if (usb_cdc_kbhit())
{
c=usb_cdc_getc();
if (c=='\n') {putc('\r'); putc('\n');}
if (c=='\r') {putc('\r'); putc('\n');}
else {putc(c);}
}
}
}
|
Someone can give-me a tip for put working?
thanks |
|
|
meereck
Joined: 09 Nov 2006 Posts: 173
|
|
Posted: Wed Nov 14, 2007 7:24 am |
|
|
As I can see, you use the USB bootloader.
What is the crystal you have on your board? It looks like 20Mhz.
Is the device enumerated? |
|
|
joven
Joined: 30 Jan 2007 Posts: 56 Location: Viana do Castelo - Portugal
|
|
Posted: Wed Nov 14, 2007 2:45 pm |
|
|
hi
what you mean device enumerated?
i think include the "#define __USB_PIC_PERIF__ 1" |
|
|
meereck
Joined: 09 Nov 2006 Posts: 173
|
|
Posted: Wed Nov 14, 2007 3:43 pm |
|
|
I mean what happens when the PIC gets connected to a PC? Any message from the PC?
"
//set to 1 to use a PIC's internal USB Peripheral
//set to 0 to use a National USBN960x peripheral
#define __USB_PIC_PERIF__ 1
"
In the case you use a PIC with USB controller integrated, set it to 1.
Do you have a cap about 470nF on Vusb pin of the PIC? |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|