CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

Does Anybody try EX_USB_SERIAL ?
Goto page 1, 2  Next
 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
Fabri



Joined: 22 Aug 2005
Posts: 275

View user's profile Send private message

Does Anybody try EX_USB_SERIAL ?
PostPosted: Wed Sep 07, 2005 2:11 am     Reply with quote

Hi,

As last posted I need information about ex_usb_serial because the PIC receve from USB but don't send back an answer.

Somebody help me on to find a problem?

Thanks,
Guest








PostPosted: Thu Sep 08, 2005 2:47 pm     Reply with quote

i used the example and built a usb to 485 converter the programming only took 1/2 hour. if you look througth the files everything is there
Guest








PostPosted: Fri Sep 09, 2005 12:02 am     Reply with quote

Hi,

I dont find any USB to 485 converter example in my ccs examples file.

Would you like to confirm me the name of file ?

Thanks,
newguy



Joined: 24 Jun 2004
Posts: 1908

View user's profile Send private message

PostPosted: Fri Sep 09, 2005 7:39 am     Reply with quote

You don't understand. That person said that they wrote their own USB - RS485 converter based on the examples that CCS provides.
Fabri



Joined: 22 Aug 2005
Posts: 275

View user's profile Send private message

PostPosted: Fri Sep 09, 2005 10:56 am     Reply with quote

When PIC receve one byte from RS232 save it on buffer and start to send data on USB.
In the follow part of routine the return in my application is "FALSE".
Quote:

/************************************************************
/* usb_tbe(endpoint)
/*
/* Input: endpoint - endpoint to check
/* ptr - where to save data to local PIC RAM
/* max - max amount of data to receive from buffer
/*
/* Output: returns TRUE if this endpoint's IN buffer (PIC-PC) is empty and ready
/* returns FALSE if this endpoint's IN buffer is still processing the last
/* transmit or if this endpoint is invalid.
/*
/************************************************************
int8 usb_tbe(int8 endpoint) {
int8 st;
st=EP_BDxST_I(endpoint);
if (!bit_test(st,7))
return(TRUE);
return(FALSE);
}


endpoint=0x02
st=0x88

What are you think about?
drolleman
Guest







PostPosted: Sat Sep 10, 2005 10:46 pm     Reply with quote

the usb - 485 converter was built on the serial2 example with only 10 lines of extra code. when the usb sends a char then it puts on the uart to trasmit. and when the uart interups with a char it puts it on the usb.
Fabri



Joined: 22 Aug 2005
Posts: 275

View user's profile Send private message

PostPosted: Sun Sep 11, 2005 12:57 am     Reply with quote

Hi,

I tryed example2 but the problem is the same. Pic fill the buffer but don't send it on USB. Serial2 use the same routine of Serial so I think it isn't a problem of routines but the configuration of them.

I need to solve a problem in a short time, so do you want help me ?

1) Do you change any data in usb_desc_cdc.h or other routine ?
2) Where I can get inf file to configure virtual com on PC ? Actualy I'm using a file gave me by forum user but he doesn't support me about.

CCS said:
Quote:

....The USB CDC API that CCS provides will create a virtual UART port....


Thanks...
drolleman
Guest







PostPosted: Sun Sep 11, 2005 11:27 am     Reply with quote

the inf file you can get from microchip's serial example . i modified it for my use the pid/vid were chaned from their example. this will create the "virtual serial port".
Fabri



Joined: 22 Aug 2005
Posts: 275

View user's profile Send private message

PostPosted: Sun Sep 11, 2005 12:54 pm     Reply with quote

Hi,
I understand you got it somewere, this isn't a help for me.

I searched it on line, I found a copy but I don't understand if the problem is in it. So I need to try an tested version now to understand if the problem is in inf file or not.

1) Would you show me the link were is it and the way to modify it?

As I posted:
Quote:

/************************************************************
/* usb_tbe(endpoint)
/*
/* Input: endpoint - endpoint to check
/* ptr - where to save data to local PIC RAM
/* max - max amount of data to receive from buffer
/*
/* Output: returns TRUE if this endpoint's IN buffer (PIC-PC) is empty and ready
/* returns FALSE if this endpoint's IN buffer is still processing the last
/* transmit or if this endpoint is invalid.
/*
/************************************************************
int8 usb_tbe(int8 endpoint) {
int8 st;
st=EP_BDxST_I(endpoint);
if (!bit_test(st,7))
return(TRUE);
return(FALSE);
}


2) Does an return "FALSE" indicate an error in definition of endpoint ?

As I told you the PIC receve on USB but don't send out the buffer filled?


Thanks,
drolleman
Guest







PostPosted: Sun Sep 11, 2005 1:16 pm     Reply with quote

usb_cdc_putc(getc()); puts char on the usb up to terminial

usb_cdc_kbhit() tests for is char in recieve buffer?

value = usb_cdc_getc(); gets the charater from the usb

usbview.exe from microsoft shows connected usb devices

download the usb to serial example from microchip
the inf file needs to be changed to your settings vid/pid

the vid and the pid you will get from usbview

here is what i use

[Version]
Signature="$Windows NT$"
Class=Ports
ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
Provider=%MCHP%
LayoutFile=layout.inf
DriverVer=08/17/2001,5.1.2600.0

[Manufacturer]
%MFGNAME%=DeviceList

[DestinationDirs]
DefaultDestDir=12

[SourceDisksFiles]

[SourceDisksNames]

[DeviceList]
%DESCRIPTION%=DriverInstall, USB\VID_0461&PID_0033

;------------------------------------------------------------------------------
; Windows 2000/XP Sections
;------------------------------------------------------------------------------

[DriverInstall.nt]
CopyFiles=DriverCopyFiles
AddReg=DriverInstall.nt.AddReg

[DriverCopyFiles]
usbser.sys,,,0x20

[DriverInstall.nt.AddReg]
HKR,,DevLoader,,*ntkern
HKR,,NTMPDriver,,usbser.sys
HKR,,EnumPropPages32,,"MsPorts.dll,SerialPortPropPageProvider"

[DriverInstall.nt.Services]
AddService=usbser, 0x00000002, DriverService

[DriverService]
DisplayName=%SERVICE%
ServiceType=1
StartType=3
ErrorControl=1
ServiceBinary=%12%\usbser.sys

;------------------------------------------------------------------------------
; String Definitions
;------------------------------------------------------------------------------

[Strings]
MCHP="Microchip Technology Inc."
MFGNAME="Microchip Technology Inc."
DESCRIPTION="Communications Port"
SERVICE="USB RS-232 Emulation Driver"
Guest








PostPosted: Mon Sep 12, 2005 1:25 am     Reply with quote

The inf file is the same I used.

I changed PC, from notebook to desktop, and the example start to work.
On my notebook doesn't work. It's really strange.

In my example PIC send back what it receved on USB.

Anyway after a few transmission the system stop to work also with desktop. The buffer is full of characters. The routine where it stop is the same I posted "int8 usb_tbe(int8 endpoint)()".


When work st=0x40 and endpoint=0x02
When stop to work st=0xc8 and endpoint=0x02

Shall the problem is hardware ?
I'm using PIC18F2455, crystall 16 Mhz with PLL4,CPUDIV1 fuses set.
I don't use any pull-up on USB and no more components at this time.
The CCS compiler is the latest version
Windows version is W2K.

Thank for help.
Guest








PostPosted: Mon Sep 12, 2005 5:26 pm     Reply with quote

doesn't sound like the hardware you have to empty the buffer before it overloads.
rwyoung



Joined: 12 Nov 2003
Posts: 563
Location: Lawrence, KS USA

View user's profile Send private message Send e-mail

PostPosted: Mon Sep 12, 2005 5:38 pm     Reply with quote

Anonymous wrote:
The inf file is the same I used.

I changed PC, from notebook to desktop, and the example start to work.
On my notebook doesn't work. It's really strange.


Use "usbview.exe" to verify that the device is completing its enumeration. Some notebooks can't supply enough power through their usb ports to even run at the 100mA limit. If this is the case, use a powered HUB between your notebook and your prototype.
_________________
Rob Young
The Screw-Up Fairy may just visit you but he has crashed on my couch for the last month!
Guest








PostPosted: Tue Sep 13, 2005 12:44 am     Reply with quote

As I can see "USBVIEW" confirm the complete enumeration:
Quote:

Device Descriptor:
bcdUSB: 0x0200
bDeviceClass: 0x02
bDeviceSubClass: 0x00
bDeviceProtocol: 0x00
bMaxPacketSize0: 0x40 (64)
idVendor: 0x0461 (Primax Electronics)
idProduct: 0x0033
bcdDevice: 0x0100
iManufacturer: 0x01
iProduct: 0x02
iSerialNumber: 0x00
bNumConfigurations: 0x01

ConnectionStatus: DeviceConnected
Current Config Value: 0x01
Device Bus Speed: Full
Device Address: 0x02
Open Pipes: 3

Endpoint Descriptor:
bEndpointAddress: 0x81
Transfer Type: Interrupt
wMaxPacketSize: 0x0008 (8)
bInterval: 0xFA

Endpoint Descriptor:
bEndpointAddress: 0x00
Transfer Type: Control
wMaxPacketSize: 0x0507 (1287)
wInterval: 0x0202
bSyncAddress: 0x40

Endpoint Descriptor:
bEndpointAddress: 0x00
Transfer Type: Bulk
wMaxPacketSize: 0x0000 (0)
wInterval: 0x0000
bSyncAddress: 0x07


The PIC18F2455 receve on USB from notebook. I tryed with powered USB hub, the same of Desktop, but doesn't see the new connection and give me an error of connection on all of 4 ports. Anyway notebook see direct the new connection as see above.

Does the problem is on hardware?

I'm using PIC18F2455, crystall 16 Mhz with PLL4,CPUDIV1 fuses set.
I don't use any pull-up on USB and no more components at this time.

What is the meaning of "int8 usb_tbe(int8 endpoint)()" that doesn't permit the send out of tx buffer ?

Thanks
drolleman
Guest







PostPosted: Tue Sep 13, 2005 3:37 pm     Reply with quote

ost your code the unit is working. there is no need for pullup resistors. the only thing it must be in the code.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
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