AVR
®
ATICE30 User Guide 6-1
Section 6
Emulator Limitations
6.1 Enhanced AVR
Architecture
ATmega163/83, ATmega161 and ATmega32 use an enhanced AVR architecture sup-
porting new features and instructions. The following features have been added in the
new architecture.
■ A powerful 2-cycle hardware multiplier supporting both signed/unsigned multiplication
and fractional format.
■ The XRAM interface has been given a longer hold time, thereby meeting the timing
requirements of earlier unsupported external memory devices.
■ Extended LPM/ELPM instructions that now support both post-increment and the
possibility to select destination register.
■ Self-programming capabilities. The program memory can be reprogrammed by the
MCU itself.
■ Move Word (MOVW) instruction enabling one-cycle 16-bits register copy.
The only device supporting the new XRAM interface is ATmega161. The XRAM access
will internally take one clock cycle longer in the emulator compared to the actual device.
For the accessed XRAM, the timing will be identical to that of an actual ATmega161
device.
The AVR ICE30 is built around the standard AVR core. Therefore, it does not directly
support the Enhanced Instruction Set of the AVR enhanced architecture. As a
workaround, these instructions are implemented in software in the emulator
microcontroller.
To enable the Enhanced Instruction Set emulation, select the option Enable Enhanced
Instruction Set in the Options > Emulator Options dialog in AVR Studio.
If enabled, the emulator will stop when reaching an Enhanced Instruction Set instruc-
tion, and the emulator MCU will perform the actions needed to emulate the instruction.
This will typically be calculations and writing to the involved registers. This will take sub-
stantially longer time compared to the time used by the instruction in an actual AVR
device. Table 6-1 shows how long the emulation will be stopped when emulating the dif-
ferent instructions. These emulation times will be independent of the target frequency.
If the BOOTRST fuse is programmed (0), there will also be an emulation break when the
emulator reaches address 0x0000. This will happen both after a reset, after a jump to
address 0x0000 and after a wraparound from the last instruction in the program
memory.