The AVR is a modified Harvard architecture 8-bit RISC single-chip microcontroller, which was developed by Atmel in 1996. The AVR was one of the first microcontroller families to use on-chip flash memory for program storage, as opposed to one-time programmable ROM, EPROM, or EEPROM used by other microcontrollers at the time.
An AVR microcontroller is a type of device manufactured by Atmel,
which has particular benefits over other common chips, but first what is
a microcontroller?
The easiest way of thinking about it is to compare a microcontroller
with your PC, which has a motherboard in it. On that motherboard is a
microprocessor (Intel, AMD chips) that provides the intelligence, RAM
and EEPROM memories and interfaces to rest of system, like serial ports
(mostly USB ports now), disk drives and display interfaces. A
microcontroller has all or most of these features built-in to a single
chip, so it doesn’t need a motherboard and many components, LEDs for
example, can be connected directly to the AVR. If you tried this with a
microprocessor, bang!
PC microprocessors are always at least 32-bit and commonly now
64-bit. This means that they can process data in 32-bit or 64-bit chunks
as they are connected to data buses this wide. The AVR is much simpler
and deals with data in 8-bit chunks as its data bus is 8-bit wide,
although there is now an AVR32 with 32-bit bus.
A PC has an operating system (Windows or Linux) and this runs
programs, such as Word or Internet Explorer or Chrome that do specific
things. An 8-bit microcontroller like the AVR doesn’t usually have an
operating system, although it could run a simple one if required, and
instead it just runs a single program.
Just as your PC would be useless if you didn’t install any programs,
an AVR must have a program installed to be any use. This program is
stored in memory built-in to the AVR, not on an external disk drive like
a PC. Loading this program into the AVR is done with an AVR
programmer, usually when the AVR is in a circuit or system, hence AVR
ISP or AVR In System Programmer. So what is a program?
A program is a series of instructions, each very simple, that fetch
and manipulate data. In most applications where you would use an AVR,
such as a washing machine controller for example, this means reading
inputs, checking their state and switching on outputs accordingly.
Sometimes you may need to modify or manipulate the data, or transmit it
to another device, such as an LCD or serial port. A series of simple
binary instructions are used to do these basic tasks and each one has an
equivalent assembly language instruction that humans can understand.
The most basic way of writing a program for an AVR is to use assembly
language (although you could write binary numbers if you want to be
pedantic).
Using assembly language allows you to understand far more about the
operation of the AVR and how it is put together. It is also produces
very small and fast code. The disadvantage is that you as the programmer
have to do everything, including memory management and program
structure, which can get very tedious.
To avoid this, high level languages are increasingly being used to
write programs for the AVR, C in particular but also Basic and Java
derivatives. High level means that each line of C (or Basic or Java)
code can translate into many lines of assembly language. The compiler
also deals with the program structure and memory management so it is
much easier. Commonly used routines, such as delays or maths, can also
be stored in libraries and reused very easily.
Comments
Post a Comment