This is picprg2.3c This project is an update of picprg 2.2 by Brian C. Lane. If you have questions or comments about the updates, direct them to me at byron@cc.gatech.edu This file is a running CHANGE LOG of changes... ----------------------------------------------------------------------------- picprg2.3c: May 18, 2002 This is a major update that addresses issues of the 16F628, In Circuit Serial Programming (ICSP), and simplifying/cleaning the configuration interface a bit. The 2.3b version had quite a few loose ends that have gone unfixed due to the work that Carlos Nieves Ónega has done on the software. His version can be found here: http://picprg.sourceforge.net It had cleaned up most of the outstanding user interface issues and added modular config files so that new chips could be quickly added. It also had a working data EEPROM programming algorithm, which this version does not. So I downloaded it to test. It configured, compiled, and installed OK. I then noticed that it didn't have a 16F628 config file. Since the 16F628 should work with the same programming algorithm as the 16F876 (which did have a config file) I figured that I simply needed to copy it and change the max memory addresses... But it didn't work. Just to verify I didn't do anything too far off base I decided to test my Trivial LVP programmer with my current version of picprg2.3b listed on the TLVP page (http://www.finitesite.com/d3jsys)... It worked. Hmmmm. That breathed new life into my version. However there were several issues that needed to be addressed: 1) Parallel port selection. Brian's original code was for the Linux 2.0 kernel which had a fixed parallel port number/address mapping. The Linux 2.2 and 2.4 kernels with parport support have a dynamic mapping where a single parallel port will be lp0 no matter the address of the port. My student, Aisha, who did the original 2.0 to 2.2 port, changed from the port number to the port address in the 2.3a version. I updated the Config page interface in 2.3b so that the correct port address could be entered. But it's cumbersome. So the current interface is now has reverted back to the original: A) The Config page now reverts back to the original parallel port number selection. However now instead of the original static mapping that Brian perform, the current 2.3c code will get the current port address mapped to the port number from the /proc/parport//hardware file. Also /dev/lp checking has been reenabled. My plan is to add a hidden option to specify the port address so that the port address stays fixed even if other parallel ports are added/removed. But that feature isn't implemented in this 2.3c version. 2) 16F628 support. There are a couple issues: A) Memory addresses/programming algorithm. Carlos has the right idea of having configuration files on a per processor basis. However in trying to specify everything, he has added a lot of complexity. So I've added a simple interface with only three types of options: memory address sizes, program algorithm, and config fuse mappings. B) The 16F628's internal oscillator almost demands ICSP. But to do so the PGM pin and Vdd pin controls needed to be separated, so that the target could run normally even while the programmer is still connected. So I added a PGM pin to the programmer that follows Vdd for the most part. However since it's a separate pin, the target can be run in circuit while still connected to the programmer. ----------------------------------------------------------------------------- picprg2.3b: August 23, 2001 updates: - Works with Linux 2.2 and 2.4 parport printing system - Programs 16F87X parts when used with the '-a' option. - Allows for the setting of the parallel port address instead of the port number. - Other minor stuff too minor to mention ;-) A few code updates to simplify getting started: - The config page and .picprgrc file properly display, save and update the port address. - A programming type entry (same as -a option and alt flag) has been added to the config page and .picprgrc file. 0 is the original 16F84 type, 0x10 is the updated 16F87X/16F62X programming type. With these updates it should now be possible to permanently configure both the port address and the programming type on the config page, save them to the .picprgrc and never have to specify either a '-a' or '-p' option on the command line thereafter. The next updates that are needed is making the max programming address programmable and correctly writing data EEPROM memory. Also we probably need a blinkly LED test program that is tested to work with all parts. That would probably be port B0. BAJ