![usb spi programmer jtag xbox usb spi programmer jtag xbox](https://www.tiaowiki.com/wiki/images/a/a3/UJTAG2-3d.jpg)
Here is Dean Camera's tutorial on AVRFreaks, AVR Programming Methods: While I would love to dive into the various programming methods available, someone else already has. The downside is that the bootloader takes up some memory space and this method does not allow you to see the state of the chip while it's running. Once loaded with the bootloader, the system will be programmable from any PC using a USB-Serial converter. To program a chip using USB, you'll have to program it first with a "bootloader" using SPI or JTAG. To do this you'll need a special programmer. The JTAG protocol can be used for cool things like "in circuit emulation" and debugging which means that it enables you to see the state of the program in your microcontroller while it's actually running. Not all Atmel micro's support JTAG but the ones that are used in the Arduino do.
#USB SPI PROGRAMMER JTAG XBOX SERIAL#
Where SPI is "just another" serial protocol, JTAG is a protocol which is especially designed to program and debug microcontrollers.
![usb spi programmer jtag xbox usb spi programmer jtag xbox](https://res.cloudinary.com/webstore/image/fetch/w_450,c_limit,c_fit,f_auto,e_trim/http%3A%2F%2Fluckyretail.com%2FUploadfile%2F201911231%2F324530%2F324530-1.jpg)
The advantage of SPI programming is that you can program any Atmel chip straight from the factory so you wouldn't always need an Arduino in your projects.
![usb spi programmer jtag xbox usb spi programmer jtag xbox](https://res.cloudinary.com/webstore/image/fetch/w_450,c_limit,c_fit,f_auto,e_trim/http%3A%2F%2Fluckyretail.com%2FUploadfile%2F201911231%2F324530%2F324530-5.jpg)
The most popular applications for programming Atmel AVR chips are avrdude (cmd line), ponyprog (doesn't work with newer programmers) and in some cases AVR Studio (if your programmer supports it). A very good introduction into SPI programming is at SparkFun. A popular one seems to be the USBTiny ISP from Adafruit. To program a chip, you will need a special programmer which reads commands from USB to drive the SPI lines to program the chip. It's also called 3-wire sometimes because it uses three wires to communicate. SPI stands for Serial Peripheral Interface and is a way for microcontrollers to communicate with each other or with the outside world. ATMEGA microcontrollers like the one in the arduino that are coming straight from the factory can only be programmed using the SPI or JTAG interface.