The serial programming algorithm outlined in the Atmega 328 data sheet has been implemented in C using WinAVR.
The resulting code enables hex files to be programmed to a target device using a terminal program such as Br@y++ or Tera Term.
A version of this code has been successfully used in the development of PCB111000 a WinAVR taster pcb, details of which were posted
here by osbornema on Nov, 29 2018. In this pcb a slimmed down version of the code was loaded into the boot partition of an Atmega 328.
The code can be further developed or modified so that:
Other similar devices can also be programmed.
Several devices can be programmed in circuit using a single programming IC.
Two versions of this code have been developed:
Version 1: (this version) This programs the configuration bits and flash
Version 2: (to follow) This will also program the EEPROM with strings and numbers
Version 1 runs on an Atmega 168
Version 2 will probably require an Atmega 328.
User instructions plus circuit details are attached.