The first project is the SANOS ALL-PURPOSE PROGRAMMER. The aim is to use this software to program everything (microcontrollers, memories (Flash, EEPROM) etc) using the parallel port and a hardware interface. All you will have to do will be to write DLLs according to a specific standard and the programmer interface will do the rest.
I have rewritten my 3 Atmel programmers (Low-Voltage serial, Hi-Voltage serial and Parallel) according to these specs.
I hope you will find the project interesting enough to use it in order to program all the devices existing today.
I am reminding to all interested people that this project is built, maintained and updated BEFORE or AFTER work hours. This is why the delays are sometimes bigger than I would. However I do my best to keep updates at reasonable intervals.
The programmer interface is 100% done (until new features will require its change). It works as an executable (multi-language) making standardized calls to the selected plugin, who calls a DLL implementing basic functions (timers, plug-in recognition, etc) and also calls a parallel port access service (NT/2000) or Virtual Device Driver (Win95/98/Me) written by Alexander Waltzman.
The interface works with plug-ins, thus making the interface completely independent of the hardware implementation. A complete description of how the plugins should be written is available in the documentation.
Three plugins were written this far, implementing programming for:
- Atmel AVRs (Low-voltage serial programming);
- Atmel AVRs (Hi-Voltage Serial programming - this one was a bitch);
- Atmel AVRs (Hi-Voltage parallel programming);
The first wish is to change the interface completely, in order to make the access to the hardware integrated into the Windows environment, like the software that comes with the card (Smartmedia, etc) readers:
Insert the programming interface and a special service will make available one, two or several drives with direct R/W access to the device (memory, MCU, etc). The device is identified with an unique code, and all plugins will have to have a supplementary function which will show which plugin works with which interface. The service will scan all plugins to see if it finds one that works with the programming interface inserted into the parallel port, and if it finds one, it will ask that particular plugin how many drives it should create and also their dimensions, based on the device inserted into the programming interface.
I thought to create a limited number of drives, e.g. for an AVR three would be required:
- one for the Flash area;
- one for the EEprom area (if the AVR has an EEprom area);
- one for the lock and fuse bits;
I also think an important change to plugins call should be made in order to eliminate string variables and to use instead PChar variables, thus C developers will be able to write plugins in C that will work with the programming interface and they will not be required to use only Delphi.
In order to implement this interesting features, I still need information about how to write the following (in Delphi):
- services (I have basic info on this);
- how to create and destroy drives using Windows API;
Should you have this info and/or links to pertaining materials, feel free to write me.
Anyway I will keep available the two versions, the one with an executable and the one with services, thus making everyone happy.
If you are a new surfer and wish to download this software, please click here
to send me an email so I can email you back about the latest updates. Thanks.
Here you can find schematics and board of a hardware parallel port analyser, very useful for building your
programmer, testing and debugging it.
LPT hardware monitor schematics and board
Due to frequent changes in this software under development, I'll add also the version numbers. Check frequently this page as newer versions might have less bugs and more improvements over the previous versions.
Don't hesitate to write me at email@example.com if you encounter difficulties in realizing the hardware projects.
- The programmer is now multi-language! The original version is in English.
I need kind hearts to translate the following strings (Word .doc or .rtf; or Excel format) in other languages - your own!
I also need kind hearts to send me parts supporting JTAG programming. This will be my next plugin and I can't find parts anywhere!
- Schematics and boards in Eagle 4.03 format are also available for download
(see http://www.cadsoft.de for a free personal license)
Strings to translate into your own language - upload the file and send me the translation for implementation
Implemented languages (put all modules in the same directory as the application):
- French (Programmer interface and plugins) updated Feb 9th 2002
- Romanian (Programmer Interface and Plugins) updated Feb 9th 2002
Programmer Interface (Version 18.104.22.168) updated Feb 9th 2002
Programmer Interface documentation and development info (Delphi) - Revision 17 updated Feb 9th 2002
The low-voltage serial and the parallel plug-ins were modified on Feb9th to support the latest ATmega8,16,64,128 and 323.
Atmel AVR Low-Voltage Serial Programming plug-in, including fully functional Delphi sources (Version 22.214.171.124) updated Feb 9th 2002.
Supports the following AVRs:
Atmel AVR Parallel Programming plug-in (version 126.96.36.199) updated Feb 9th 2002
Supports the following AVRs:
Atmel AVR Hi-Voltage Serial Programming plug-in (Version 188.8.131.52) updated Feb 9th 2002
Supports the following AVRs:
Schematics and Printed Circuit Boards in Eagle 4.03 (see http://www.cadsoft.de for a free personal license) format are here:
Low Voltage Serial Schematics and Boards
The following high-voltage schematics and board
can also be used with the high-voltage serial
plugin (for ATtinys and AT90S2323/2343), but
the specialized high-voltage serial schematics
are a lot easier to design and realize than this one,
whose main purpose is parallel programming.
High Voltage Parallel Schematics and Boards
High Voltage Serial Schematics and Boards