Česká verze stránky o biprogu

biprog - (not only) ISP programmer

Content:   Introduction - Features - Hardware - Software - Counter - ToDo - Feedback - Download

View of populated board:
biprog.jpg (39kB)

Solder side view:
biprog-bottom.jpg (33kB)

Biprog in a box:
biprog-closed.jpg (9kB)


There are many website throughout the internet with various constructions of ISP programmers for the AVR
microcontrollers by Atmel. Some of the programmers are based on the AVR910 appnote, and are controlled from
the PC side by AVRprog. Others are controlled by the STK500 plugin of AVR Studio and their firmware is written
based on the AVR068 appnote. Apparently, the hardware in both cases is almost identical. This gave me the idea
to make a new version of the hardware and to write the appropriate software, which would be able to cooperate
with both control programs.
I eventually succeeded and the result is the biprog programmer, presented here.


Automatic mode selection (AVRISP/AVR910) according to the control program
Last used polarity of RESET is stored in EEPROM and is valid after power cycle
Last used SCK frequency is stored in EEPROM and is valid after power cycle
Support of all ISP-able Atmel microcontrollers, including AT89S51/52, AT89S8252 a AT89S2051/4051
Single sided PCB, can be home-made easily
Unused ports of ATmega8 are made available on the connector and can be used in different applications based
on the given hardware.


LED usage:

Socket Board

biprog+s_board.jpg (18kB)

USB modification (HW 2.1)

Using a USB/RS232 "cable"

A complete ready-made USB/RS232 "cable" can be purchased for about $15. I have tried the following one:
PC-USB2RS232.jpg (9kB)
After having installed the driver from the attached CD, a new COM port has appeared in the "Control Panel"
(Windows XP) - Prolific USB-to-Serial Comm Port (COM3). After connecting to biprog and running AVR studio,
biprog started to communicate.
Both AVRprog and STK500 plugin work in exactly the same way than via a real serial port. I haven't tried AVRDUDE,
but I assume it will work too.

Support for AT89LP4052 (HW 3.0)

NEW - HW 4.1 (added 8.9.2008)

The following picture shows the new HW 4.1 designed by Mr. Jan Švíka, featuring integrated RS232 converter
and an extra 6-pin ISP connector:
HW4_1.png (47kB)
Description in pdf by this version's author can be downloaded here - sorry, the text is in Czech only.

Description and design files for all versions of biprog's hardware can be found in the Download section.

Firmware description

All software is written in AVR assembly language.

AVRprog part

AVRprog.gif (12kB)
Part of the firmware cooperating with AVRprog is taken over from Programmer für AVR-Prog und avrdude.
It was modified to accomodate for the differences between AT90S2313 and ATmega8. Modifications have been made
in order to spare some of the registers and the main loop has been rewritten. Here, I got inspired by the program I found
on Ondřej Pužman's pages.
In contrast to the AVRISP part, polarity of RESET signal is not stored into EEPROM here. The program is compatible
also with AVRDUDE (AVR910, AVR911, AVR109, butterfly).
SCK frequency cannot be changed here, the last frequency set using AVRISP is used.


This part is completely original. It has been written based on AVR068 appnote. On the PC side, the STK500 plugin
to AVR Studio, or AVRDUDE (avrispv2, stk500v2) are used as a control program. To upgrade the firmware,
the Upgrade "button" in the Board window can be used. This requires a small modification in the STK500 directory -
rename the original "Upgrade.exe" application to some other name. Then, copy "AVRProg.exe" into this directorey

Setting the ISP frequency

Board.png (15kB)
In the "Board" window, one of the six possible frequencies can be chosen. The listed values represent the real frequencies.
First three of them are implemented using the hardware SPI interface, the rest are implemented in software.
The last option (603 Hz) is apparently nonsense, as the PC-side control program always fails with a timeout. I tried this
speed with original Atmel firmware (not in biprog, of course), and it behaved in the same way. I am considering
to implement a different frequency for this option, for example 1,8432 MHz. The only problem is, that the real frequency
would be different than that in the list. What frequency do you recommend instead of the unusable 603 Hz?

AT89S8252 support

8252-Program.gif (49kB)

Support of AT89S2051/AT89S4051 and AT89LP2052/AT89LP4052

Since version SW 1.2 (SW 1.3) it is possible to use biprog to program these microcontrollers.
I have tried only AT89S2051 and AT89LP4052, but I assume no problems with the others.
It is necessary to copy the appropriate xml files into the "Partdescriptionfiles" directory in the same way as for
These new microcontrollers feature writing/reading of a 32 byte user signature. The STK500 has no suitable function
for such signature, so, bearing in mind that these microcontrollers don't have an EEPROM, reading/writing of user signature
is implemented as EEPROM reading/writing.

NEW (8.9.2008) - support of AT89S8253

Since firmware version 1.5, biprog supports AT89C8253 (replacement of the older AT89C8252). From those supported
by biprog, this is the first microcontroller containing both EEPROM and a user signature. To be able to use both,
two xml definition files had to be created for this microcontroller. Both files can be used to program the FLASH memory;
besides that, AT89S8253_biprog.xml enables to program the EEPROM, and AT89S8253-User row array_biprog.xml
enables to write (or erase) the user signature. To make this work, these files need to be copied into the
"Partdescriptionfiles" directory.

NEW (8.9.2008) - support of AVR studio version 4.14

Since version 4.14 of AVR studio, the STK500 plugin has a new GUI (graphical user interface). As a consequence,
in order the Fuses and LockBits folders work properly, the xml definition files contain a new element "V2". This
element had to be added to all of the older xml files for the AT89Sx051, AT89LPx052 and AT89S8252 (for this one,
the new definition file is AT89S8252_biprog.xml). The newly added definition file for AT89S8253 is of course of this
new, extended form.

Example of an application

CITAC.gif (11kB) As a PC-side control program, CITAC.exe of David Matoušek is used.

What is missing (ToDo)

I intend to make the following modifications:
1) SW - Manual change of SPI frequency using a button
2) SW - Chosen frequency indication on LED
If you have an idea of a modification, or if you want to make a modification yourself, don't hesitate to contact me!


Here I will add webpages, which link to, or mention otherwise, biprog.
Mr. Vladimír Anděl provided a whole pageful of experiences with building biprog. You can find there a nice description
(in Czech) and a PCB pattern suitable for printing on 300 dpi printers.
I found out that biprog is mentioned on several Chinese pages, for example here.
On the robotika.cz pages is among others a nice overview of AVR device programmers.


biprog is "Cardware" for non-commercial use!
If you have found it useful, please send me a traditional postcard with your city/region view. My postal address is:
Lubos Ruckl
TELCOM servis Decin, s. r. o.
Folknarska 21
405 01 Decin 2
Czech republic

To download the files, use the right mouse button and chose "Save target as ...".

Statistics Statistics since 16. 5. 2007
Home page
Sockets and supply board for "ISP" programming
Tiny USB-connected IR Receiver for Remote Control of PC
TSP-IC programmer
Please write your questions and remarks to the following address: lubos.ruckl@quick.cz
Last updated 08. 09. 2008

Translated by wek at efton dot sk