The Y2K problem highlighted something that many of us weren’t
previously fully aware of – just how many pieces of equipment contain embedded
computer chips.
With so much equipment now relying on computer control, if
you’re involved in electronics then you will almost certainly be involved with
embedded systems in some way.
Most embedded designs are based on microcontrollers (MCUs).
These devices integrate a microprocessor core with memory and input/output (I/O)
ports, as well as a variety of other commonly used functions. Effectively, this
means that what once would have occupied an entire PC board now fits in a single
chip, consumes a fraction of the power and runs perhaps 10-100 times faster!
Due to their ever-increasing memory size and speed,
microcontrollers can now be programmed effectively using high-level languages
such as C and BASIC. Of course, serious design calls for serious debugging tools
and in this review we look at the ICE 200. This is an "entry-level" in-circuit
emulator (ICE) for Atmel’s range of popular AVR Enhanced RISC microcontrollers
and should also appeal to novices.
Atmel AVR microcontrollers
In my opinion, Atmel has a real winner with their AVR series of
microcontrollers. Using a modified RISC (Reduced Instruction Set) architecture,
the AVR series is specifically optimised for running complied C code. Other key
features such as in-circuit programmable flash memory (up to 128KB), EEPROM data
memory, high throughput (all instructions are single-cycle) and low power
consumption make this series hard to beat.
As is common with all microcontrollers today, it includes
functions like A-D converters, serial ports (UARTs), real time clocks (RTCs),
pulse width modulation (PWM) outputs, 16-bit timers and brown-out
detectors.
Do I need an ICE
When a microcontroller program doesn’t work as expected, how do
you find out why? One way is to debug the program with a software simulator.
Simulators do just that – they simulate the operation of a
microcontroller in PC-based software. Your compiled program runs just as it
would on a real microcontroller, the advantage being that you have control over
the execution of each line of code. Instructions can be executed line-by-line
(called single stepping), or "breakpoints" can be inserted at desired points to
halt a running program. In addition, resources such as registers, memory and I/O
ports can be examined and modified at will.