Atmel AVR
Encyclopedia : A : AT : ATM : Atmel AVR
The AVRs are a family of RISC microcontrollers from Atmel. Their internal architecture was conceived by two students: Alf-Egil Bogen and Vegard Wollan, at the Norwegian Institute of Technology (NTH)Since 1996, NTH is a part of the Norwegian University of Science and Technology (NTNU) and further developed at Atmel Norway, a subsidiary founded by the two architects.
The AVR is a Harvard architecture machine with programs and data stored separately. Program instructions are stored in semi-permanent Flash memory which loads and manipulates data in the volatile SRAM. The AVRs have thirty-two single-byte registers.
The registers input/output ports and static RAM make up the data address space. The working registers are mapped in as the first thirty-two memory spaces followed by the I/O ports. The actual usable RAM starts at memory location 100(hex). Atmel's AVRs have a two-stage pipeline design. The next machine instruction is fetched as the current one is executing. Most instructions take just one or two clock cycles, making AVRs relatively fast among the eight-bit microcontrollers. The AVRs were designed for the efficient execution of compiled C code.
The AVR instruction set is more orthogonal than most eight-bit microcontrollers, however, it is not completely regular:
- Pointer registers X, Y, and Z have addressing capabilities that are different from each other.
- Register locations R0 to R15 have different addressing capabilities than register locations R16 to R31.
- I/O ports 0 to 31 have different addressing capabilities than I/O ports 32 to 63.
- CLR affects flags, while SER does not, even though they are complementary intructions. CLR set all bits to zero and SER sets them to one. (Note though, that neither CLR nor SER are native instructions. Instead CLR is syntactic sugar for [produces the same machine code as] EOR R,R while SER is syntactic sugar for LDI R,$FF. Math operations such as EOR modify flags while moves/loads/stores/branches such as LDI do not.)
The acronym AVR has been reported to stand for Advanced Virtual RISC. It's also rumoured to stand for the company's founders: Alf and Vegard, who are evasive when questioned about it.
Features
Current AVRs offer a wide range of features:- RISC Core Running Many Single-Cycle Instructions
- Multifunction, Bi-directional I/O Ports with Internal, Configurable Pull-up Resistors
- Internal Oscillators
- Internal Instruction Flash Memory up to 256K
- Internal Data EEPROM up to 4KB
- Internal SRAM up to 8K
- 8-Bit and 16-Bit Timers
- PWM Channels & dead time generator
- Lighting (PWM Specific) Controller models
- Dedicated I²C Compatible Two-Wire Interface (TWI)
- Synchronous/Asynchronous Serial Peripherals (UART/USART) (RS-232,RS-485, and more)
- Serial Peripheral Interface (SPI)
- CAN Controller Support
- USB Controller Support
- *Proper High-speed hardware & Hub controller with embedded AVR.
- *Also freely available low-speed (HID) software emulation. Cheaper than a real USB interface chip.
- Ethernet Controller Support
- Universial Serial Interface for Two-Wire, Three-Wire Synchronous Data Transfer (?)
- Analog Comparators
- 10-Bit A/D Converters, usually with 8-way multiplex
- Brownout Detection
- Watchdog Timer (WDT)
- Low-voltage Devices Operating Down to 1.8v
- picoPower Devices
- Multiple Power-Saving Sleep Modes
- LCD Controller Support
Footnotes
See also
Atmel Official Links
AVR Forums & Discussion Groups
- [AVRFreaks]
- [Atmega128] - in Spanish
- [www.mikrocontroller.net] - in German
Machine Language Development
C Language Development
- [WinAVR] – Open Source Suite for Windows & GCC
- [C Programming for Microcontrollers] AVR Butterfly and Free WinAVR GCC Toolset
- [GNU Development Environment for AVRs] – by Rich Neswold
- [Procyon AVRlib] - C Function Library
- [Programming AVRs with GCC] – by Guido Socher
BASIC & Other AVR Languages
AVR Butterfly Specific
Hardware implementations
- [AT mega 103 clone] at [Opencores]. Written in [VHDL] and implemented in [FPGA] ([Altera] EPF10K50ETC144-3).
Other AVR Links
- [AVR Newbie Articles]
- [Candle Automation Tutorials]
- [Student Programming Projects] – Cornell ECE476
- [AVR tutorials and projects]
From Wikipedia, the Free Encyclopedia. Original article here. Support Wikipedia by contributing or donating.
All text is available under the terms of the GNU Free Documentation License See Wikipedia Copyrights for details.
