MPLAB® X IDE - Debugging with Unified Program and Debug Interface (UPDI) for AVR® MCUs


The Unified Program and Debug Interface Physical Interface (UPDI PHY) provides programming and debugging through a 1-wire UART-based half-duplex interface using a single pin (either RESET or dedicated) for data reception and transmission.

In this example, an AVR® MCU supporting UPDI is used, i.e., ATtiny817. For more details about this device and its UPDI interface, see the ATtiny417 / ATtiny814 / ATtiny816 / ATtiny817 Datasheet.

The ATtiny817 Xplained Mini is used to demonstrate the UPDI interface. MPLAB® X IDE enables/disables this interface for you.

Software and Hardware Used in this Example

For the best experience, install in the order below:

Creating a Project in the IDE

From the IDE, launch the New Project Wizard (File>New Project).

Follow the screens to create a new project:

  1. Choose Project: Select Microchip Embedded, and then select Standalone Project.
  2. Select Device: Select the ATtiny817 device.
  3. Select Header: None.
  4. Select Tool: Select the ATtiny817 Xplained mini. Under Microchip Kits>ATtiny817 Xplained Mini (EDBG), find 'mEDBG' and select 'SN: ATML…'.
  5. Select Plugin Board: None.
  6. Select Compiler: Select XC8 (v2.00) [bin location].
  7. Select Project Name and Folder: Name the project, such as ATtiny817_UPDI.
  8. Click Finish when done.

Adding a File to the Project

Once a project is created, the Projects window will open.

  1. Right-click on 'Source Files' and select New>Other. Then choose Microchip Embedded>XC8 Compiler>avr-main.c.
  2. Change the default name to from to main.c.
  3. Click Finish when done.

For this example, no additional code needs to be added to main.c.

Debugging the Project


Click Debug Main Project DebugProjectIcon.png to start debug.

During device programming, you may see this warning message:

Configuration memory will not be programmed because no configuration bits settings have been defined in your code. To program configuration memory, either define the settings in your code or use the Program Configuration Bits button on the configuration memory window.

For this example, no configuration bits settings were added to the code and no device configuration bits values were changed. For more on configuration bits, see the "Reading the Configuration Bits" section.

Programming proceeds and once complete, debug mode begins.


You are now in debug mode.

Click Pause PauseIcon.png to halt execution temporarily or Finish Debugger Session FinishDebuggerSessionIcon.png to end the debug session.

Programming the Device

When you are done with debugging your code, you can program the target device by clicking Make and Program Device MakeAndProgramDeviceIcon.png.

PIC® MCU Developers: A debug executive is not necessary for debugging with AVR MCUs. Therefore, programming for debug does not require different code.

Reading the Configuration Bits

To set or clear device configuration bits (fuses), use the Configuration Bits window (Window>Target Memory Views>Configuration Bits).


When this window is first opened, all text is red and a pop-up message states that you must read the configuration bits from the device before you can edit.



Click Read Configuration Bits ConfigBitsReadIcon.png on the window. The read should be successful and show this message in the mEDBF window:

Read complete

Data in the Configuration Bits window will be black and reflect the settings read from the device.


For this example, you have not changed any configuration bits. However, if you did want to change any bit values, you can write the new values to the device by clicking on Program Configuration Bits ProgramConfigBitsIcon.png.

See Also

For more information on UPDI, see:

© 2024 Microchip Technology, Inc.
Notice: ARM and Cortex are the registered trademarks of ARM Limited in the EU and other countries.
Information contained on this site regarding device applications and the like is provided only for your convenience and may be superseded by updates. It is your responsibility to ensure that your application meets with your specifications. MICROCHIP MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND WHETHER EXPRESS OR IMPLIED, WRITTEN OR ORAL, STATUTORY OR OTHERWISE, RELATED TO THE INFORMATION, INCLUDING BUT NOT LIMITED TO ITS CONDITION, QUALITY, PERFORMANCE, MERCHANTABILITY OR FITNESS FOR PURPOSE. Microchip disclaims all liability arising from this information and its use. Use of Microchip devices in life support and/or safety applications is entirely at the buyer's risk, and the buyer agrees to defend, indemnify and hold harmless Microchip from any and all damages, claims, suits, or expenses resulting from such use. No licenses are conveyed, implicitly or otherwise, under any Microchip intellectual property rights.