|
|
View previous topic :: View next topic |
Author |
Message |
madtoilet
Joined: 02 Apr 2008 Posts: 36
|
setting up the pic 18f4550 for usb |
Posted: Tue Apr 22, 2008 1:54 pm |
|
|
Hi,
i'm back. I am now trying to configure my USB pic to transmit a string of data from the pic to the PC.
I am only familiar with using the
#use rs232 code
how do i configure it to use the USB ports properly? |
|
|
meereck
Joined: 09 Nov 2006 Posts: 173
|
|
Posted: Tue Apr 22, 2008 2:27 pm |
|
|
hi, you can use virtual serial port - CDC, which is the simplest way. It behaves like a common RS-232 serial line
check ex_usb_serial.c out |
|
|
madtoilet
Joined: 02 Apr 2008 Posts: 36
|
|
Posted: Wed Apr 23, 2008 1:28 pm |
|
|
hey, thanks for the feedback.
the code used in the example is
Code: |
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7) |
i was wondering whether the baudrate matters. I'm unfamiliar with alot of USB stuff. Is there a particular baudrate the pc uses for the USB? |
|
|
pattousai
Joined: 23 Aug 2006 Posts: 37
|
|
Posted: Wed Apr 23, 2008 2:13 pm |
|
|
well, i'm not the best guy to say anything, but the usb is a totally different protocol... you do not use the
Code: |
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
|
unfortunately, that's all i can say to you :/
by the way,
meereck, you said that
Quote: |
you can use virtual serial port - CDC, which is the simplest way. It behaves like a common RS-232 serial line
check ex_usb_serial.c out
|
how this work's out? it transforms from usb to rs232?
if i have any device (a cellphone, for example) that only communicate by the usb, i can use this CDC approach?
thanks very much |
|
|
meereck
Joined: 09 Nov 2006 Posts: 173
|
|
Posted: Wed Apr 23, 2008 4:09 pm |
|
|
CDC emulates a serial line over the USB. At the PIC side, you use function like usb_cdc_putc and usb_cdc_kbhit() for sending data to a PC.
At the PC, the CDC device is installed as a virtual serial port. That is, within your PC application, you just select the proper COM port, and receive and transmit data like over a common serial port. |
|
|
madtoilet
Joined: 02 Apr 2008 Posts: 36
|
|
Posted: Wed Apr 23, 2008 4:37 pm |
|
|
I'm quite confused.
so it emulates the serial line, so i don't have to be concerned for the baud rate? |
|
|
kamputty Guest
|
|
Posted: Wed Apr 23, 2008 4:59 pm |
|
|
madtoilet wrote: | I'm quite confused.
so it emulates the serial line, so i don't have to be concerned for the baud rate? |
You do have to be concerned about the speed. Even though the usb emulated the serial, you still need to specify the settings to it can communicate to the "other" side of the serial cable! |
|
|
Ttelmah Guest
|
|
Posted: Thu Apr 24, 2008 2:42 am |
|
|
This actually gets quite complex!.
At the PC 'end', you see a com port. This has all the normal options for setting baud rates etc.. However these don't change anything physical about how the interface is handled. Instead if you set (say) the baud to 19200bps, a _message_ is sent across the USB interface to the device, saying effectively 'baud has been set to 19200'. The device at the other end can then decide what to do with this. So if you setup a PIC this way, and wanted to data to actually 'come out' of the chip as if this was a 'real' com port, then you would change the baud rate of this external interface, to match the requested speed. This is what happens on the little USB-RS232 adapter cable assemblies. However you don't have to actually do anything. The comms to/from the computer, are being handled as USB 'packets', sent normally at 12Mbps. So if the PIC is just using the data internally, it doesn't have to do anything at all about the speed (or parity etc.) requests. It can just accept that the data will arrive at whatever speed the PC sends them, and handle them as fast as it can, or send data back as fast as it wants. The actual speed available, is limited to about 1Mbps for such devices (basically, the Windows driver, tries to ensure that if there are multiple such devices on the bus, all 'get a chance', and with the maximum time 'slot' allowed for this interface by the Windows driver, and given the packet sizes, overhead etc., this is about the best possible.
So, the data transfer will take place faster than any normal RS232 link, and with the speed remaining constant, whatever the baud rate is set to.
_If_ you need to talk to an external device, then the PIC code will have to handle the packet telling it what speed to use, and change it's settings to talk to this device. However for applications which don't have an external connection like this, you can forget about baud rates.
Best Wishes |
|
|
yanthi Guest
|
ex_usb_serial.c |
Posted: Tue May 27, 2008 6:04 pm |
|
|
After i load the program ex_usb_serial.c in pic 18F4550, my pc can't detect the usb at all. Any solutions....probably with the coding....
thanks |
|
|
sella Guest
|
ccs coding for usb |
Posted: Tue May 27, 2008 6:20 pm |
|
|
when i tried to open hyper terminal after loading the ex_usb_serial2.c,it says "unable to open comx, please check your port settings".What should i do? Please help me.....
thanks |
|
|
peuchele Guest
|
unable to open com |
Posted: Thu Jul 03, 2008 3:55 pm |
|
|
Hi, I had the same problem "unable to open com..." and I fixed it by setting the proper bit settings before programming the PIC, for example disable the WDT (for the CDC example), setting the correct clock speed, etc.
I know that maybe it is too late to post the response, but it may help someone else in the future...
Fernando |
|
|
|
|
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
|