Richard Le Mesurier wrote: > I am looking for online reference on programming of the 16f84 on a > technical level. > > How are the DATA and CLK lines used during programming? > What info is sent to pic for each byte of the hex84 file? > How do I request the pic to send data back to the PC so I can confirm > programming? > What commands does the pic understand being sent to it? This is all in the "Programming Specification" document. These are separate from the data sheets. Usually one programming spec covers a subfamily of PICs. Go to the web page for the particular part you want to program, then look for "programming specification". If you look around, you will find there are many incompatible programming specs. My ICSP writeup at http://www.embedinc.com/picprg/icsp.htm will give you some idea of the issues of in-circuit programming you have to think about, although this document is written for the target circuit designer. On a separate note, ditch the 16F84. This ancient relic costs more and does less than newer parts like the 16F648A or the 16F88, both of which have the same footprint as the 16F84. > Due to my problems originally with trying to get a hardware programmer > running properly, I have decided that an early project will be some > other form of programmer. You still need some sort of hardware. You can't connect a PIC directly to a PC port and program it. There needs to be something in between, called a PIC programmer. There are two basic catagories of these, those that are just bare interface hardware, and those that have a local controller. The first kind are flaky at best as some things are invariably out of spec. The second kind costs a bit more, but is more robust and usually faster. I make several PIC programmers, all of the second kind. The EasyProg in bare board or kit form may be what you want. Check out http://www.embedinc.com/products. Wouter's Wisp628 is also a nice little programmer from what I hear. > Maybe someone here has written some programmer software, Of course, else there wouldn't be any programmers out there. There is a large variety of flakeware available for various bare interface programmers. This kind of software usually tries to wiggle particular port pins in particular ways, which does work *most* of the time. Intelligent programmers implement a command set and thereby use a PC port in its standard intended way. Each of those has its own software that drives the command set from the host. All my programmers adhere to the same command protocol specification. You can download the protocol spec and the full host software with source code and build scripts from http://www.embedinc.com/picprg/sw.htm. Good PIC programmer design is more envolved than it probably appears at first glance. I've designed three PIC programmers, each one benefitting from experience with the previous ones, and I had a lot of general PIC experience before designing the first one. To do things right, you really need variable Vdd, variable Vpp, and a bunch of other features. There are no longer single Vdd and Vpp voltages that work for all PICs. Get a programmer where someone who already has lots of experience with this stuff has done the work so that you can get on with your projects. Eventually you will gain enough experience yourself so that you can design your own programmer if you really want to, but a decent PIC programmer is not a newbie project. If you are really really intent on creating your own programmer, consider having it implement my programmer command protocol. That way you don't have to create any host software yourself, and you've got known working tools to help debug the programmer. ****************************************************************** Embed Inc, Littleton Massachusetts, (978) 742-9014. #1 PIC consultant in 2004 program year. http://www.embedinc.com/products -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist