Atmel AVR
|
The Atmel AVR is a family of RISC microcontrollers from Atmel. The AVR architecture was conceived by two students at the Norwegian Institute of Technology (NTH) and further refined and developed at Atmel Norway, the Atmel daughter company founded by the two chip architects.
The AVR is a Harvard architecture CPU. It has 32 8-bit registers. Some instructions only operate on a subset of these registers. The concatenated register file, input/output file and data memory make up a unified address space accessed through load/store operations. Unlike the PIC, the stack is located in this unified memory space and isn't strictly limited to a fixed size.
The AVR was designed at the outset for efficient execution of compiled C code. Thus some instructions, such as 'add immediate
', are strangely missing (you have to 'subtract immediate
' the complement instead), while others, such as 'compare with carry
', are included.
The AVR instruction set is physically implemented and sold on the market as a number of different controllers, sharing the same AVR core but differing on peripheral / RAM / ROM capabilities: from the Tiny AVR controllers with 1KB flash ROM, no RAM, and 8 pins, up to Mega AVR controllers with 128KB flash ROM, 4KB RAM, 4KB EEPROM, 10 bit ADC with 8 channels, timers, comparators, JTAG, etc. Compatibility across models is preserved to a reasonable degree.
Atmel's AVR controllers have a pipeline with 2 stages (fetch and execute) that allows them to execute most instructions in 1 clock, which makes them relatively fast among the 8-bit controllers on the market.
The AVR instruction set is more regular than that of many other 8-bit microcontrollers (PIC for example). However, it is not orthogonal:
- Pointer registers X, Y, and Z have addressing capabilities that are different from each other.
- Register file locations 0...15 have different addressing capabilities than register file locations 16...31.
- IO locations 0 to 31 have different addressing capabilities than IO locations 32 to 63.
- CLR affects flags, while SER does not, even though they seem to be complementary intructions (set all bits to 0 and respectively to 1).
- opcodes 0x95C8 and 0x9004 do exactly the same thing (LPM).
Like the PIC, it has a dedicated hobbyist following (exemplified by the AVRFreaks Internet forum), largely due to the existence of inexpensive/free development tools, for instance a port of the GNU GCC tools.
The acronym AVR has been reported/rumoured to stand for Advanced Virtual RISC and/or the initials of the two company founders—Alf Egil Bogen and Vegard Wollan—who for their part have chosen to let the matter rest unresolved, giving mostly shadowy answers when asked directly.
Setup Tools For Development
- Setup tools in Linux Debian box
- login to root user
- using apt-get command to install them, typing by "apt-get install binutils-avr gcc-avr avr-libc uisp"
- prepare a simple avr serial programmer (http://www.linuxfocus.org/English/November2004/article352.shtml#352lfindex8)
- examples to use the above programmer with uisp
uisp -dprog=dapa --rd_fuses -dpart=ATmega8535 uisp -dlpt=/dev/parport0 --erase -dprog=dapa -dpart=ATmega8535 uisp -dlpt=/dev/parport0 --upload if=avrm8ledtest.hex -dprog=dapa -v=3 --hash=32 -dpart=ATmega8535
- if you buy a new chip, you cannot program this chip by the above serial programmer. You must have a avr parallel programmer to set the Fuse High Byte - SPIEN bit to logic LOW. Please take a look of page 236 of atmel datasheet 8535 as example (http://www.atmel.com/dyn/resources/prod_documents/doc2502.pdf). Then
- References
- tell you how to start (http://www.linuxfocus.org/English/November2004/article352.shtml)
- References manual in between development (http://users.rcn.com/rneswold/avr/)
- resources
- Chungyan5 12:13, 21 Jun 2005 (UTC)
External links
- Atmel's AVR product page (http://www.atmel.com/products/avr/)
- Atmel Norway (http://www.atmel.no)
- AVRFreaks (http://www.avrfreaks.net)
- AVR Electron Psychogenic Newbie Resource (http://electrons.psychogenic.com/avr/)
- WinAVR development tools (http://winavr.sourceforge.net/) at Sourceforge – open source tool suite hosted on Microsoft Windows, and including GCC
- avrmon-stk200 (http://www.pvv.org/~torhr/avrmon-stk200/) – avr-gdb compatible GNU/Linux-based debug monitor system for connecting to Atmel's "STK200 Starter Kit"
- AVR Discussion Group (http://www.embeddedrelated.com/groups/avrclub/1.php)da:Atmel AVR