> > It sounds like what you're proposing is the hardware equivalent of an open- > source software project. I've been thinking that the time is right for this kind > of thing. A device programmer seems very appropriate, since it is > something that is of use to people who are capable of contributing to the > project. Perhaps the software and hardware designs can both be distributed > under the GPL, or something like it. That way it is open to both commercial > and non-commercial use with the provisions that enhancements be > contributed back to the project and that it remain open. That sounds like an excellent idea. A while ago I posted some ideas for a modular programming design. I still think they are applicable. Here are the basic elements: 1) Uses a programmed uC so that precise timing is easily handled. The uC is programmed to: a) accept and interpret a tokenized mini bytecode that can manipulate I/O, handle intervals, has rudimentary variables and arithmetic, can handle a serial interface, and a variable voltage IF b) reads instructions from a serial EEPROM c) is programmed internally with the base midrange PIC serial programming algorithm. 2) Connects to a development machine via a serial interface 3) Has an expansion slot where extension modules can be added. Now the interesting idea here is that the extension modules come with their own programming code tokenized on a serial EEPROM on the card, much like the hardware modules that can be added to the HandSpring Visor series of PDA's. Then changing the programmer is as simple as sliding in a new card. It's clear to me that the uC in question should be one of the 16F87X series chips. They can be programmed without high voltage, has the memory, speed, timers, and serial interface to handle the job and are inexpesive enough (like pioneer carries the 16F877 for about $8) that it won't scare folks away. So let's envision the process of someone starting from absolute scratch. 1) Obtain the programmer PCB, a blank 16F87X, a 15V+ DC power source (which could be as simple as 2 9V batteries), voltage regulators, and sockets (both the chip sockets and the expansion socket). Get the software package. 2) Now populate the PCB with the regulators, sockets, and power jack. In order to get started there's a bootstrap mode where the original chip is programmed via the parallel port. It's also possible to do this with a 100 percent serial interface by adding a MAX232 and caps, and wiring one of the output control signals (like DTR) to the second MAX interface. In either case a small jumper header isolates the bootstrap signals from the regular operation. 3) Put the 16F87X in the target socket, plug the bootstrap cable into the parallel or serial port, apply power, fire up the bootstrap loader. 4) The bootstrap loader will program the 16F87X with the interpreter. This is done only once. Once finished remove the bootstrap cable and jumpers and move the programmer 16F87X to the programmer socket from where it'll never move again. Forgive me for doing this on the fly but I just had another thought which is the bootstrap interface could go directly to the programmer socket instead of the target meaning that the 16F87X once populated would not even have to be moved. 5) Now you're in business. At this point it should be possible to program any serial midrange PIC using the downloaded interpreter, the target socket(s), and the required programming interface software on the PC. The expansion slot it interesting. Say you wanted to program a GAL device. An expansion module would contain all of the circuitry necessary to program the part, the socket for the part, and a serial EEPROM with the code necessary to tell the 16F87X how the part is programmed. So a user would build the card and download the tokenized EEPROM code and the development programming software. The very first time the card is in place, the EEPROM is placed and the 16F87X dumps the tokenized EEPROM code into the EEPROM. After that it's just a matter of slotting the card, socketing the part, and running the software. So modules would consist of the card schematic, the serial EEPROM code, and the development software. These packages could be distributed separate from the base programmer. Like all the interesting ideas I have, I just don't have time to work on such a beast, even though I honestly think it wouldn't be that difficult to pull off. Put comments here on the list, I'd really be interested in hearing how folks feel about this... BAJ