View previous topic :: View next topic |
Author |
Message |
Elie777
Joined: 30 Dec 2010 Posts: 16
|
Converting serial to parallel |
Posted: Tue Jan 04, 2011 3:33 am |
|
|
I am going to use a usb to serial cable. I need my pic 16f84 to give an output of 5 bits which will be the input for an encoder.
Can some help me know what components I need and how to write the code to convert from serial to parallel.
10x for any help. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19520
|
|
Posted: Tue Jan 04, 2011 5:34 am |
|
|
Read the manual on GETC.
If the PIC is to do anything 'more' than just read serial, and output it on a port, you would be much better off with a different chip, with a UART.
Minimum needed:
Reliable 5v supply.
Crystal or ceramic resonator, giving a stable frequency.
Pull up resistor on MCLR.
Resistor and trap diode from the TXD line on the USD module, feeding to a pin on the PIC.
A #use RS232 line, specifying this pin, the baud rate you want to use, and the 'INVERT' option (must be used, unless you add a proper RS232 buffer).
Getc the character, and write the value to a port.
However if the PIC has to do anything 'more' (reply to the PC for example), then you really need to find a PIC with a UART, and add a RS232 level translator (MAX232 for example).
Best Wishes |
|
|
FvM
Joined: 27 Aug 2008 Posts: 2337 Location: Germany
|
|
Posted: Tue Jan 04, 2011 6:27 am |
|
|
I guess, using an USB-to-parallel adapter (FT245 or FT2232) with respective FTDI software driver would be an easier way. Or an USB PIC to interface to USB directly. |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9229 Location: Greensville,Ontario
|
|
Posted: Tue Jan 04, 2011 6:39 am |
|
|
Ttelmah has most of the details for you,though your project description is a bit vague. Will the PIC read the encoder and transmit the data to the PC, or does the PIC get data from the PC and do 'something with it?
I built several serial to parallel 'boxes' using the PIC 16F84 to allow parallel printers to be used on serial ports, since serial ported printers can't be found anymore.
Ttelmah, is right, that if you choose a newer PIC, it'll be easier and nicer! One with a built in clock and UART (16F628,648 ?? I think) works very well and easy on the wallet.
The hardest part will be the USB-Serial 'box', be sure to test it using a loopback connector very well. Some do NOT always work correctly!. |
|
|
Elie777
Joined: 30 Dec 2010 Posts: 16
|
|
Posted: Wed Jan 05, 2011 4:36 am |
|
|
10x for your replies. I just need to take data from the pc and use it.
FvM I searched a lot for a usb to parallel adapter but I couldn't find one. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19520
|
|
Posted: Wed Jan 05, 2011 4:48 am |
|
|
The units FVM mentions, are USB to serial adapters, _with a parallel output option as well_. Designed for 'embedded' applications. Hence will not be found if you search for 'USB to parallel', but sound as if they would do what you want.
Best Wishes |
|
|
Elie777
Joined: 30 Dec 2010 Posts: 16
|
|
Posted: Wed Jan 05, 2011 5:16 am |
|
|
Ttelmah can u help me to write my code because I'm trying to learn programming on my own and I don't have enough time because I have to present the project after 2 days. I'm finding a lot of difficulty writing this code.
10x for any help. |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9229 Location: Greensville,Ontario
|
|
Posted: Wed Jan 05, 2011 7:27 am |
|
|
As a general rule, everyone here will help you IF you show effort in 'cutting your own code' and ask why this or that doesn't work right.
To expect anyone to do your homework is not appropriate. Your 'project' is NOT a 2 day event! First you have to design and develop a PC based solution to talk to the PIC. Depending on the PC platform that could be a simple 'terminal' program, either canned or homemade. Then there's that USB interface. Another HUGE task unless you're lucky to have code that works for your USB device.Wiring to the PIC can be fun...as all USB devices don't work like others..oh yeah don't forget about the RS-232 chips!
The PIC program could be the easiest part of your task. After spending a week or so to get the 'Hello World' working, you can progress to the 'serial to parallel' program. It's quite easy to do ONCE you've read and re-read the CCS C manual a few times and cut maybe 20-30 versions of the program. Be sure to use resistors for the LEDS or you'll burnout the PIC !
You are very fortunate to have tools available that make this homework easy. One is called the Internet, the other Google.There are thousands of examples of your homework already out 'there' so it's really easy to copy someone else's efforts.
None of those 'tools' existed 40 years ago when I taught myself PDP-11 asm, Z-80 asm, BASIC, COBOL, FORTRAN, 68HC11 asm, 1802 asm the list goes on and on. I've spent 10s of thousands of hours soldering, wirewrapping, keying in programs, flowcharting, reading, reading, reading.....
You learn best by doing and that will take TIME but you'll be smarter and enjoy YOUR accomplishments. |
|
|
bkamen
Joined: 07 Jan 2004 Posts: 1615 Location: Central Illinois, USA
|
|
Posted: Wed Jan 05, 2011 11:03 pm |
|
|
Elie777 wrote: | 10x for your replies. I just need to take data from the pc and use it.
FvM I searched a lot for a usb to parallel adapter but I couldn't find one. |
you're joking, right?
I type "usb to parallel" on google and get a zillion results. (Well, more like 2,290,000!! -- but it's close!)
any of those would work just fine and you could DUMP stuff right out LPTx: !!!
how awesome is that? Just latch and go!
You know, they used to make parallel port based mass storage devices/adapters! (ZIP Drives from IOMega)
-Ben _________________ Dazed and confused? I don't think so. Just "plain lost" will do. :D |
|
|
FvM
Joined: 27 Aug 2008 Posts: 2337 Location: Germany
|
|
Posted: Thu Jan 06, 2011 1:58 am |
|
|
Quote: | I searched a lot for a usb to parallel adapter but I couldn't find one |
You may want to try usb-to-parallel FT245 at google.com
I mentioned the chips (FT245 is a dedicated parallel interface and FT2232 a multi-purpose serial and parallel interface), because I've used them for similar applications, and they are actually present in a huge number of products. As already mentioned in my post, FTDI has software drivers, that allow an easy access to individual pins from Windows and Linux OS. You can get ready-to-use modules that expose the pins and an USB connector. |
|
|
Ttelmah
Joined: 11 Mar 2010 Posts: 19520
|
|
Posted: Thu Jan 06, 2011 3:35 am |
|
|
The problem with usb to parallel units in general, is that they emulate a centronics printer port, so many require an 'ack' from the printer (easy to bodge this though....). Also though potentially you could just 'print' a bit pattern to appear on the port, some software won't sent a 'line' till the EOL character is seen. Again easy to avoid provided you sent the data yourself, but a serial-parallel approach, is possibly a fraction 'easier' for the inexperienced. The FT2232, is particularly easy to use, doing exactly what was originally described, allowing you to send a character on the PC, to what it 'sees' as a serial port, and then presenting this data in parallel.
There are so many solutions to this, that it is almost 'infinite'. Could do it in hardware without a processor (shift register on a serial connection), software (18F2550), dedicated chip (FT2232), PGA, etc. etc.. It'd possibly be quite 'fun' to work out how many possible solutions there are. I'd suspect several hundred, all with fundamental differences...
Best Wishes |
|
|
Elie777
Joined: 30 Dec 2010 Posts: 16
|
|
Posted: Thu Jan 06, 2011 7:22 am |
|
|
Can I find in the market a usb to parallel adapter that will be recognized by the pc( lab view) as a parallel port where I can control each pin?
I asked in many computer stores and they told me I can't find usb to parallel. I can only find usb to serial. |
|
|
Wayne_
Joined: 10 Oct 2007 Posts: 681
|
|
Posted: Thu Jan 06, 2011 8:08 am |
|
|
Elie777 wrote: | Can I find in the market a usb to parallel adapter that will be recognized by the pc( lab view) as a parallel port where I can control each pin?
I asked in many computer stores and they told me I can't find usb to parallel. I can only find usb to serial. |
I think your problem is going to be how "lab view" accesses the paralell port. Lab View directly accesses the port via the port addresses for LPT1 (0x3BC to 0x3BF) and IRQ 2. i don't know exactly how it does this but in order to do what you want you will need a virtual driver for the PC which emulates a paralell port at this address and controls the relevant hardware.
We have run in to a similar problem with trying to use a PCIE and PCI paralell port on a PC using Lab View. If you read the Lab View info it specifically says the paralell port has to be at LPT1 addresses.
Unless they have changed Lab View or you can find a virtual driver then this is not normally possible without a built in paralell port or ISA card. And as most PC motherboards appear not to come with paralell ports or ISA slots you have this problem. |
|
|
temtronic
Joined: 01 Jul 2010 Posts: 9229 Location: Greensville,Ontario
|
|
Posted: Thu Jan 06, 2011 8:25 am |
|
|
Accessing the parallel port is dependent on the OS. Any PC using Win98SE or older allows direct(register) access to ports..
XP pro can have direct access if your program gets into Ring0(needed for true realtime stuff)
Don't know about other versions as I only use those two OS.
I'm still unclear as to the OP statement 'I need my pic 16f84 to give an
output of 5 bits which will be the input for an encoder', as no reference to what encoder he's using or what the overall picture is.It's gotten 'muddied' through the replies... |
|
|
Wayne_
Joined: 10 Oct 2007 Posts: 681
|
|
Posted: Thu Jan 06, 2011 8:40 am |
|
|
temtronic wrote: | Accessing the parallel port is dependent on the OS. Any PC using Win98SE or older allows direct(register) access to ports..
|
Only true if you use a driver for the OS you are running. if you access the hardware directly using the hardware addresses then you are bypassing the OS. I believe this is what Lab View does. Considering Lab view was probably around in the days of Dos/Windows 3.1 etc. I expect this method has never changed. |
|
|
|