25. debugWIRE On-chip Debug System
25.1 Features
- Complete Program Flow Control
- Emulates All On-chip Functions, Both Digital and Analog, except RESET Pin
- Real-time Operation
- Symbolic Debugging Support (Both at C and Assembler Source Level, or for Other HLLs)
- Unlimited Number of Program Break Points (Using Software Break Points)
- Non-intrusive Operation
- Electrical Characteristics Identical to Real Device
- Automatic Configuration System
- High-Speed Operation
- Programming of Non-volatile Memories
25.2 Overview
The debugWIRE On-chip debug system uses a One-wire, bi-directional interface to control the program flow,
execute AVR instructions in the CPU and to program the different non-volatile memories.
25.3 Physical Interface
When the debugWIRE Enable (DWEN) Fuse is programmed and Lock bits are unprogrammed, the debugWIRE
system within the target device is activated. The RESET port pin is configured as a wire-AND (open-drain) bi-
directional I/O pin with pull-up enabled and becomes the communication gateway between target and emulator.
Bild 25-1: The debugWIRE Setup
Bild 25-1 shows the schematic of a target MCU, with debugWIRE enabled, and the emulator connector.
The system clock is not affected by debugWIRE and will always be the clock source selected by the CKSEL Fuses.
When designing a system where debugWIRE will be used, the following observations must be made for correct
operation:
- Pull-up resistors on the dW/(RESET) line must not be smaller than 10kΩ.
The pull-up resistor is not required for debugWIRE functionality.
- Connecting the RESET pin directly to VCC will not work.
- Capacitors connected to the RESET pin must be disconnected when using debugWire.
- All external reset sources must be disconnected.
25.4. Software Break Points
debugWIRE supports Program memory Break Points by the AVR Break instruction.
Setting a Break Point in AVR Studio® will insert a BREAK instruction in the Program memory.
The instruction replaced by the BREAK instruction will be stored.
When program execution is continued, the stored instruction will be executed before
continuing from the Program memory.
A break can be inserted manually by putting the BREAK instruction in the program.
The Flash must be re-programmed each time a Break Point is changed.
This is automatically handled by AVR Studio through the debugWIRE interface.
The use of Break Points will therefore reduce the Flash Data retention.
Devices used for debugging purposes should not be shipped to end customers.
25.5 Limitations of debugWIRE
The debugWIRE communication pin (dW) is physically located on the same pin as External Reset (RESET).
An External Reset source is therefore not supported when the debugWIRE is enabled.
A programmed DWEN Fuse enables some parts of the clock system to be running in all sleep modes.
This will increase the power consumption while in sleep.
Thus, the DWEN Fuse should be disabled when debugWire is not used.
25.6 Registerbeschreibung
The following section describes the registers used with the debugWire.
25.6.1 DWDR – debugWire Data Register
Bit | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
|
(0x31) | DWDR[7:0] | DWDR
|
---|
Zugriff | R/W | R/W | R/W | R/W | R/W | R/W | R/W | R/W
|
Startwert | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0
|
The DWDR Register provides a communication channel from the running program in the MCU to the debugger.
This register is only accessible by the debugWIRE
and can therefore not be used as a general purpose register in the normal operations.