USB JTAG ICE for Atmel AVR microcontrollers


Looking for a JTAG to program & debug Atmel microcontrollers? Here below a complete project including schematic, pcb, firmware and build details.

It is good to know that I had a JTAG on RS232 and what I’ve done in fact was to change the interface to USB using FTDI chip: FT232BM. Didn’t try yet to adapt it to the FT232RL version but I have no reason to believe it will not work. The JTAG schematic is freeware so you are allowed to use/share as you wish. The PC will require a typical driver for USB-RS232 converter, but this one can be automatically installed by Windows / download it from FTDI website or even more simple, directly from the bottom of this page.

The circuit below contains 2 parts, the USB interface based on FTDI chip and one Atmega16 running the firmware. There are only 2 data lines between the interface and the JTAG chip, UART RX & UART TX. One LED is present to indicate the JTAG activity and 2 other LEDs to signal RX/TX transfers (optional). The JTAG connection is based on a 2×5 pin header. The same connector is used to program the JTAG chip with the necessary firmware using an AVR ISP programmer (the connection is not pin-to-pin so you need some adapter to do this – presented later in this article).



USB JTAG ICE schematic for AVR Atmel


The PCB is designed to be double layer but the bottom one is not mandatory. However, the PCB used needs to have 2 layers so that the bottom one can be used as ground plane. Tracks supposed to be on this layer can be replaced with simple wires as there are only few.

Here below the PCB top and bottom layers screen shots:


USB JTAG PCB top layer

USB JTAG PCB top layer

USB JTAG PCB bottom layer









 One thing to mention is that this schematic doesn’t use the target power supply as it’s directly powered by USB port. The flashing of  JTAG firmware onto the microcontroller has to be done using an external ISP programmer. What you have to know is the connection between the ISP used and our JTAG board for firmware update. This will be done using some of the pins available on the JTAG JP3 connector. The correct link is seen in the below diagram.




Connection AVR-ISP to JTAG for firmware update



Procedure to update the JTAG with the necessary firmware: there are 2 options to do that:



  • Connect the JP1 and plug-in the USB cable to PC so that the JTAG has the 5V supply. Of course Windows will prompt you to install the driver: do it and go to next step.
  • Connect the AVR ISP to main jtag connector (JP3).
  • Flash the bootloader (evertool.hex) and set the following fuse bits: external crystal – high frequency, boot-reset, boot-size 1024 words; If you are using AVRdude for programming you can write directly the following fuse values: 0×18 and 0xFF.
  • Next step is to update the JTAG with the proper firmware. To do that remove JP1, connect JP2 and open AVR studio (if you don’t have it, install it), make sure you have the JTAG connected to PC, select the right com port then go to “Tools=>AVR prog”. There you can update your JTAG with “upgrade.ebn” binary located in the AVR studio installation folder: AVR Tools/JTAGICE
  • Remove the JP2 and enjoy your JTAG.


Option 2.

  • Step1: same as for Option1.
  • Step2: same as for Option1.
  • Step3: Flash directly the binary “jtag_flash”. It can be downloaded from the bottom of this page. Set the same fuse bits as for the Option1.
  • Step4: remove the JP1 and enjoy your JTAG.


Last part, some pictures with the JTAG already assembled.



USB AVR JTAG assembled


USB AVR JTAG board assembled x 2











Here you can download all the files related to this project:


If you have any questions, issues, please use “Contact” form.