23.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.
23.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.
The debugWIRE system accurately emulates all I/O functions when running at full speed, i.e., when the program in the CPU
is running. When the CPU is stopped, care must be taken while accessing some of the I/O registers via the debugger (AVR
Studio).
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.
23.6 debugWIRE Related Register in I/O Memory
The following section describes the registers used with the debugWire.
23.6.1 debugWire Data Register – DWDR
Bit
7
6
5
4
3
2
1
0
DWDR[7:0]
R/W R/W
DWDR
Read/Write
Initial Value
R/W
0
R/W
0
R/W
0
R/W
0
R/W
0
R/W
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.
240
ATmega16/32/64/M1/C1 [DATASHEET]
7647O–AVR–01/15