Serial (ISP) programmer for Atmel AVR MCU line


This programmer is compatible with the 'dongle' shipped with STK200 and STK300 starter kits.
This is not really a programmer. It is a dumb amplifier connected via a parallel IEEE-1284 port.
Centronics and the IBM implementation of a complement port are a subset of IEEE-1284.

This programmer is electrically IEEE-1284 compatible but do NOT support any of the specified protocols. Therefore it cannot share the bus with other IEEE-1284 devices (daisy chain configuration)!

Because in worst case the driver for this programmer must access the IEEE-1284 port two times for every bit(!), the system load generated by the driver is very high.
The complete ISP protocol must be handled by the driver. Therefore the device support depends only on the driver version.


We do not own a STKxxx starter kit, so we build a clone to write and test the corresponding backend driver.
Get schematic from download page.

IEEE-1284 and STK200/300 pin usage:

| IEEE-1284 Pins  |  STK200/300 Pins                                                        |
| Number    Name  |  Number    Name       Usage                                             |
| -         -     |  2         VCC        Supply for programmer (provided by STK200/300)    |
| 18-25     GND   |  4,6,8,10  GND        Common ground                                     |
|                 |                                                                         |
| 4         D2    |  -         -          Enable amplifiers for /RESET and PDI(MISO)        |
| 5         D3    |  -         -          Enable amplifiers for SCK, PDO(MOSI) and /EN_PROG |
|                 |                                                                         |
| 8         D6    |  3         /EN_PROG   Multiplexer control (Switch AVR on ISP connector) |
|                 |                                                                         |
| 9         D7    |  5         /RESET     Reset to AVR                                      |
| 6         D4    |  7         SCK        Clock signal to AVR                               |
| 7         D5    |  1         PDO(MOSI)  Data to AVR                                       |
| 10        /ACK  |  9         PDI(MISO)  Data from AVR                                     |

Because this programmer is only an amplifier, it should be possible to replace it with a piece of cable.
Remember that your IEEE-1284 port could be damaged easily. Use the circuit from the above schematic.

The driver controls the programmer like this:

  1. The programmer needs power supply from the target board (the STK200/300 in this case). The target system VCC must be in the range 3V - 5V because the programmer have to create valid TTL signals for the IEEE-1284 port.
  2. When the programming software enables the programmer, the driver enables the amplifiers inside the programmer by deasserting (drive low) the IEEE-1284 signals D2 & D3.
  3. When the programming software enables programming mode, the driver switches the ISP pins from the STK200/300 circuit to the ISP connector (indicated by a LED) by deasserting the IEEE-1284 signal D6. This asserts /EN_PROG on the ISP connector.
  4. Now the driver can access the AVR via ISP protocol as described in the datasheets. It can control /RESET, SCK and PDO(MOSI) via IEEE-1284 signals D7, D4 and D5. The driver receives data from the AVRs PDI(MISO) Pin on the IEEE-1284 signal /ACK.
  5. When the programming software disables programming mode, the driver deasserts /EN_PROG by asserting (drive high) the IEEE-1284 signal D6.
  6. When the programming software disables the programmer, the driver asserts (drive high) the IEEE-1284 signals D2 & D3 to disable the programmers amplifiers.

Browser        IDFC        Last update: 2004-11-21        Home        Contact