Warning: This project is deprecated and JTAG support was never tested. Please invest in a USB isolator instead!
I own an AVR Dragon, which is a really cheap programmer and debugger for almost all of of Atmel’s AVR microcontrollers. But to make this device cheap, the level converter / voltage buffer lacks any protection against overcurrent, reverse voltage or static discharge. Finally, connecting the target’s ground to your computer’s ground should be optional, not mandatory.
So I decided to combine multiple designs into one circuit that provides galvanic isolation for the Dragon with ISP, JTAG and debugWire protocols. Isolating PDI requires more effort, as it uses the data lines bidirectionally. This is done for debugWire, which is much slower than PDI and only works with open collector logic. So, isolated PDI is not implemented. And unfortunately, debugWire doesn’t work reliably. I still don’t know why. But ISP does work.
Ironically, using JTAG with the AVR Xplain’s ATxmega128a1 only works with the Dragon Isolator, but not directly without it.
The PCB above to the left shows the first version where the optocouplers are scattered over the board. The current layout uses a more straight alignment.
The five suppressor diodes (top right, below the connector) have a capacance that is too large to let ISP/dW/JTAG work. They should only be populated with low-capacitance diodes (300V variant perhaps?). Instead, only the much smaller double-schottky diodes on the backside are used. They also limit overvoltage, but can only absorb little amounts of energy.
The Dragon circuit is connected via plug connectors to the case. On the top resides a ZIF socket and the other replicated pin headers.
- Parts of the optocoupler section was inspired by MadWizards’ AVR JTAG Adaptor
- The impedance matching was done in KKP’s Dragonhide.
- The debugWire bidirectional circuit is described in Atmel’s application note AVR077: Opto-isolated emulation for the DebugWIRE.
Many thanks to the authors of those schematics!