# AVR ISP Protocol

The AVR ISP protocol is based upon the communication protocol used by all AVR tools as far back as the STK®500. It is used for programming tinyAVR and megaAVR devices using the SPI interface

Timing parameter values are extracted from XML files and included in the protocol command function calls.

Note: This protocol is also described in the application note AVR069: AVRISP mkII Communication Protocol, although not all commands are supported. The SPI_MULTI command is not supported by this implementation.

The protocol commands are put in the payload of EDBG commands with the handler set to SPI. The responses are also sent as the payload of EDBG commands.

Note: The SPI protocol has no CMD_ACTIVATE_PHYSICAL. The ENTER_PROGMODE command will enable the physical and LEAVE_PROGMODE will deactivate it.

In addition to the SPI commands the general CMD_LOAD_ADDRESS from the STK500 communication protocol is supported. This command is used to set the start address for the following write or read command. This command is described below.

Unless otherwise stated, all multi-byte fields in this protocol are transmitted least significant byte first.