Has same purpose like serial port programmer. You have to use it to get PIC bootloader before you use USB HID programmer or you may use it to put any other FW into your PIC. Programmer uses In-Circuit Serial Programming (ICSP) interface described in PIC18F2455 / 2550 / 4455 / 4550 Data sheet.
Here are briefly summarized positives and negatives of Simple (trivial) parallel port programmer:
|+||free||HW & bootloader & programming SW are available for free|
|+||easy||1) plug to LPT port
2) power on
3) run FW update from PC
|+||cheap||just few components needed|
|uses standard Windows parallel port driver or drivers shipped with PC / NB chipset|
|parallel port programmer needs external power supply +5V to operate|
|-||slow||slower than USB programmer, but faster than COM port programmer|
|-||no COM ports
on new PCs
|actual PCs and NBs does not have LPT ports, due to technology obsolescence;
but you may try to use for your new PC/NB without LPT port:
- for PCs: (serial and) parallel port PCI or PCI express cards
- for NBs: PCMCIA card or ExpressCard to parallel port
I don’t know if USB to LPT converter will work.
I was inspired by FD-ART2003 parallel port programmer. But it does not worked, after few measurements I found out, that LPT bidirectional pins 17:SEL IN\ and 14:AUTOFD\ did not work as outputs. Changes in BIOS between SPP / EPP / ECP modes do not helped. So I have used data pins instead:
Figure 1: PIC18F2550 parallel port programmer scheme
Scheme contains just 1 resistor. This parallel port programmer needs external power +5V.
But it is easy to overcome this problem by getting needed power from USB port (as shown on bottom right corner of scheme}. See USB pinout on USB programmer web page. There are few additional components used (two capacitors C1 and C2), but nothing critical will happen if you omit them both.
If there is not +5V source from USB available, you can use DC power adapters. Typical adjustable DC adapter nor have +5V output, nor has stabilized output. That means you should use some more components to get stabilized DC +5V from power adapter:
Figure 2: DC power stabilizer +5V
To simplify scheme you can omit R1 and LED1 which role is to signalize that +5V is available on output. C3 is not critical, too. But I do not recommend removing of capacitors C1 and C2.
And this is how it looks on my experiment solderless breadboard:
I have used LPT cable 25 pin D sub to 36 pin centronics connector. I have decided to not to cut centronics connector from cable, because this is my only cable of this type (and today it does not make sense to buy next one). But I have soldered wires on all signals of centronics conector, so the cable can be still used. Every wire has its own signal name label for fast & easy use.
Here is LPT cable pin out you may find useful:
Figure 4: LPT port (parallel port) pinout
I have decided again for PICpgm.
It is really mature and universal programming SW (I have also used in parallel PIC programmer).
And it is for free, too.
No additional drivers are needed to run programming SW.
All needed you could find packed in 1 archive at the bottom of this article.
Let’s look how to use it:
Figure 5: PICpgm - Hardware - Hardware Selection/Configuration
Figure 6: PICpgm - Programmer Selection/Configuration
The only difference should be in Port configuration - mine parallel port is named LPT1. Here chose parallel port name your parallel port has. You are limited to choose LPT1 to LPT4. If your parallel port number has higher number you have to change it in your windows device manager in your parallel port device driver.
Figure 7: PICpgm - PIC detected
Be patient, it takes some time till PicPgm reads information after you click OK in previous step.
Figure 8: PICpgm - Program PIC
Now rest of the work does PICpgm automatically.
Figure 9: PICpgm - PIC erasing start
Figure 10: PICpgm - PIC erasing finished
Figure 11: PICpgm - PIC FLASH programming progress
Figure 12: PICpgm - PIC FLASH content verifying progress
Figure 13: PICpgm - PIC EEPROM data memory programming progress
Figure 14: PICpgm - PIC EEPROM data memory verifying progress
Figure 15: PICpgm - PIC configuration memory verifying progress
That is just few bytes to program, so this step goes fast.
Figure 16: PICpgm - PIC verification errors
Even verification fails, programming was successful, as is also written on PICpgm web pages: If you do not need RB5 as I/O pin and RB5 is held on GND level you can ignore this verify error. It will not cause any problems.
Figure 17: PICpgm - Verify Error: Cfg Mem 0x000006: PIC=0x0085 Buf=0x0081
If you see there more errors like this,
Figure 18: PICpgm - more Verify Errors
there is still chance to success. You have to try to find optimal delay value in configuration dialog:
Figure 19: PICpgm - my configuration leading to more Verification Errors
In my case there was problem with Normal Delay factor and Slow Delay factor, but I found optimal value in the middle of range.
Figure 20: PICpgm - PIC LVP change to Enabled
You have to go to Config Bits tab of PICpgm and change the configuration of LVP bit manually from Disabled to Enabled,
when there is Disabled value.
You have to do this every time you load HEX file into PICpgm.
After this change you will see this "Success dialog" except that one on Figure 16:
Figure 21: PICpgm - PIC programming finished successfully
This "Success dialog" will automatically disappear after few seconds.
Just for comparison with Log containing errors on Figure 17 here is Log without any error:
Figure 22: PICpgm - Log without error
Do not forget that changing LVP to Enabled will block RB5/VPP pin of PIC18F2550 as clearly described on PICpgm pages:
The bit for which the verification fails here is the "LVP" configuration bit:
LVP: Low-Voltage Programming Enable bit:
1 = Low-Voltage Programming enabled, RB5 is the PGM pin
0 = Low-Voltage Programming disabled, RB5 is an I/O pin
Archive LPT programmer package.zip contains:
You can start with programming USB HID bootloader into PIC - see section USB bootloader.
This will allow me to bring more information and projects for you.
© 2013, Radoslav Kastiel