Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

We can use the control signals from a serial port similarly (reset=rts sck=dtr mosi=txd miso=cts). The serial port outputs +-12V, so we need a few zener diodes to transform this to 0V/5V[1]:

Schematic:

My version:
(bigger images attached)

...

It is possible to use dasa with a USB-to-serial converter, but the performance is very slow[12]. It is possible to use dapa with a USB-to-parallel converter, but the performance will be equally slow. In addition, I've heard the claim that some USB-to-parallel converters are meant solely to drive printers, and do not implement full parallel port functionality, and so would not work.

...

  • The simplest one consists of an ATTiny2313 chip and a few passives. Very nice design. I have not used this.
  • A more complex one uses a USB-to-serial converter chip. I have not used this one either. This one has two advantages over the simple one above (which probably do not make up for the added complexity):
    • The hardware design is similar to the Mini, so with this guy's firmware, it may be possible to use one Mini board to program another
    • It implements the full STK500 spec, so it is possible to do things like timer calibations
  • In addition, Atmel makes the AVRATAVRIPSMKII programming cable, available from Digikey. It's fairly inexpensive (~$30), and works well. It uses a 6-pin header (Atmel's standard) instead of the 5 pin header we use (standard on hobbyist boards)[23]. The 6th pin takes VCC, which we need to run from the main header. I've used this to program the Mini. I just ran 5 hookup wires from the plug on the MKII to the header on the Mini, and so that I wouldn't forget the configuration, I put hot glue around the wires. The sixth wire goes to the VCC pin on the Mini:

Footnotes

1.

Anchor
zener
zener
We actually only need the zener diode clipping circuit on the output pins of the serial port. I usually place them on all the pins so that I can't accidentally damage something in the case of a wiring error. One could do this with the ground connection as well.

2.

Anchor
usbspeed
usbspeed
USB is moderately high latency (the numbers I've seen for low latency USB devices are order of magnitude is 1-30 ms, depending on device). Assuming AVRDude waits for each operation to finish before the next one, sending one bit requires 3 bit flips (3-90 ms). Sending one byte requires 24 bit flips (24-720ms). This gives ballpark of 1-42 bytes/second. What I saw when using a dasa cable with a USB-to-serial converter (5 bytes/second) was close to the middle of that, so I believe that was my problem. The adapter uses an FTDI USB-to-serial chip, most of which are designed to also be able to bit bang with the RS232 control pins, so I doubt choice of dasa lines was the problem - it ought to be able to flip all of them comparably quickly. The same dasa adapter worked at normal speed when it used an actual motherboard with a serial port.

23.

Anchor
headers
headers
There are 3 standard programming headers. Most hobbyist projects use a 5-pin, 1 row header like the one that we use. 1 row is convenient, since it also fits in protoboards, and in addition, the pins are in the same order as on the microcontroller, so it is easy to wire. This has 4 programming pins and ground. Atmel has an official header that has 6 pins in 2 rows: the four programming pins, power and ground. 2 row connectors do not interface nicely into protoboards. Atmel also has a 10 pin header, that adds more grounds, and an unconnected wire. I don't know if the additional grounds have any purpose – they provide better shielding, but I given the low speeds, I'd be surprised if that was an issue.