Debugging with debugWIRE for AVR® MCUs

Last modified by Microchip on 2024/06/24 06:30


debugWIRE provides a single-pin (RESET pin) debugging solution for small pin count AVR® MCUs (e.g., the ATmega48/88/168/328) (PB) family. Many of these devices are used on the popular Arduino development boards.

The ATmega328PB Xplained Mini is used to demonstrate the debugWIRE interface. The interface (ISP or debugWIRE) is set in the Project Properties dialog. MPLAB® X Integrated Development Environment (IDE) sets/clears relevant configuration bits for you.

Software and Hardware Used in This Example

For the best experience, install in the order below:

  1. ATmega328PB Xplained Mini
  2. MPLAB XC8 C Compiler v2.05 or higher
  3. MPLAB X IDE v5.15 or higher

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:

Choose Project: Select Microchip Embedded, and then select Standalone Project.

Select Device: Select the ATmega328PB device.

Select Header: None.

Select Tool: Select the ATmega328PB Xplained Mini. Under Microchip Kits > ATmega328PB Xplained Mini (EDBG) find mEDBG and select "SN: ATML…".

Select Plugin Board: None.

Select Compiler: Select XC8 (v2.05) [bin location].

Select Project Name and Folder: Name the project, such as 328PB_Debugging.

Click Finish when done.

Adding a File to the Project

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

Right-click on Source Files and select New > Other. Then choose Microchip Embedded > XC8 Compiler>avr-main.c.

Change the default name to from to main.c.

Click Finish when done.
For this example, no additional code needs to be added to main.c.

Debugging the Project

To set the interface to debugWIRE, open the Project Properties dialog. Under the mEDBG category, Communication options category, select Interface as debugWIRE. Click OK.

set the interface to debugWIRE

Click Debug Main Project Debug Project 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 pause.png to halt execution temporarily or Finish Debugger Session finish-debugger-session.png to end the debug session.

Programming the Device

When you are done with debugging your code, you can program the target device.

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

To set the interface to programming, open the Project Properties dialog. Under the mEDBG category, Communication options category, select Interface as ISP. Click OK.

set the interface to programming

Click Make and Program Device program-target-project.png.

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.

pop-up message states that you must read the configuration bits

Click Read Configuration Bits read-target-project.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 program-target-project.png.

DO NOT edit the value of the SPIEN bit or DWEN bit. MPLAB X IDE will handle interface changes for you (i.e., programming interface to debug interface and vice versa).

If the SPIEN bit is cleared and the DWEN bit is set, you will be able to use debugWIRE but to switch back to SPI you will need to use High Voltage Programming (HVSP/HVPP). No current Microchip tool supports this type of High Voltage Programming.

Learn More