Atmel에서 만든 범용 RISC 마이크로컨트롤러. 2016년 Microchip Technology가 인수 합병하면서 산하 브랜드의 마이크로컨트롤러가 되었다. 안에 CPU, ROM, RAM, 플래시 메모리, ADC, DAC, GPIO가 다 들어있다. PIC와 함께 독립된 상표 형식으로는 8비트 마이크로컨트롤러 업계에서 가장 잘 알려져 있으며[1], 특히 ISP(In-System Programming) 인터페이스를 갖추고 있어서 별도의 롬 라이터 없이 PC에서 프린터 포트나 시리얼 포트, USB 인터페이스에 연결하는 ISP 장비를 통해 손쉽게 프로그램을 짜 넣을 수 있어서 인기가 많다. 저렴한 가격에 ROM, RAM 걱정 없이 프로그램을 넣을 수 있기 때문에 많은 대학교의 전자공학과에서 마이크로컨트롤러나 임베디드 시스템과 관련된 과목에서 AVR을 대상으로 강의하는 경우가 많다. 특히 학부 4학년 때 졸업작품용으로 높은 인기를 구가하고 있다.
재미있는 것은 겨우 8비트급 마이크로컨트롤러임에도 불구하고 RISC를 표방하고 있다. 이는 마이크로컨트롤러계의 CISC라고 할 수 있는 인텔 8051에 비해 명령어 길이가 일정하고 범용 레지스터 숫자가 많으며 하버드 아키텍처가 도입되었고 메모리 공간이 비교적 일정하게 구성되어 있다는 RISC적인 특징을 가지고 있기 때문.[2]
사실 어렵게 생각하지 않아도 되는 것이 아두이노가 AVR을 탑재하고 있다.2. 용도[편집]
전기밥솥, 엘리베이터 제어, 자동 판매기 등 높은 성능이 전혀 필요 없고 신뢰성이 필요한 제어 장치 부분은 앞으로도 계속 8비트 마이크로컨트롤러가 사용될 것이다. 심지어 인텔 8051은 1980년에 개발되어서 30년 넘게 사용되고 있다. 물론 공정이나 인터페이스 등은 현대화 되었지만 기본 아키텍처는 30년된 그대로. 그래서 각종 용도별 어셈블리 및 C 소스 프로그램이 온 천지에 널려있다... Arduino 플랫폼 중 가장 기본이 되고 많이 사용되는 아두이노 우노 또한 이 AVR 기반이다. 커스텀 키보드에도 USB를 지원하는 ATMega32 계열 MCU가 자주 사용된다.
AVR도 여러 모델이 있지만 그 중 ATMEGA128이 가장 인기가 좋다. 한마디로 말해 학부 4학년 수준에서 사용하기에 미칠듯이 적절하다. 가격, 기능, 확장성 등의 적절함은 말할 것도 없고 예제 코드가 정말 넘쳐난다. 프로세서만 단독으로 구매하면 보통 1.5만원 미만이고 외부 장치 연결을 위해 이런저런 포트들을 덕지덕지 달고 있는 모듈 타입도 10만원을 채 넘지 않는다. 그냥 사다가 RS232C 포트나 UART 포트에 꽂은 뒤 매뉴얼에 적힌 코드를 그대로 복붙해서 다운로드만 해도 의도한 대로 동작하는 모듈들이 많다.[3] 이 정도로 예제 코드가 넘쳐나는데 ATMEGA128로 원하는 것을 못 만든다면… 애초에 ATMEGA128을 제대로 다룰 줄 모르든가 아니면 ATMEGA128 정도의 프로세서로는 만들 수 없는 물건일 가능성이 높다. 당장 구글에서 ATMEGA128 작품으로 검색만 해봐도 정말이지 신기한 물건들이 많이 나온다. #. 그리고 ATMEGA128로도 아두이노로 만들수 있다[4]
3. 장단점[편집]
가장 큰 장점은 전기적 특성이 매우 강하다는 것. 핀이 공급하거나 받을수 있는 전류 한계치가 다른 마이크로컨트롤러에 비해 높다. I/O에서 감당 가능한 전류가 40mA로 다른 마이크로컨트롤러들의 경우 이것의 절반이거나 10분의 1 정도밖에 안되는 경우도 허다하다. 따라서 다른 마이크로컨트롤러라면 불가능한 설계도 어느 정도 가능하며 다른 마이크로컨트롤러라면 죽었을 상황에서도 살아있는 경우가 있다. 예를 들면 LED를 별도의 회로 없이 제어하거나 FET를 별도의 드라이브 회로 없이 제어한다던가.
물론 8비트 마이크로컨트롤러인 만큼 연산 능력이나 클럭 속도, 메모리 어드레스 영역은 상당히 제한된다. AVR 시리즈 중 고급형에 해당하는 ATMega급의 최대 동작 속도가 20MHz에 머물고 있으며, 그나마 이는 일부 모델만 해당되고 대부분은 16MHz가 한계이다. 대부분의 경우 FPU가 없을 뿐만 아니라 32비트 단정도 실수를 제대로 처리하기에는 워드 길이가 8비트로 크게 제약되는 나머지 소프트웨어적인 실수 연산 처리도 쉽지 않으므로 복잡한 수학 연산 성능은 거의 없다고 생각하는 편이 좋다. 단 ATMega급은 대부분 정수 곱셈 연산 유닛은 내장하고 있으므로 라인트레이서 정도의 제어 연산은 무난하게 수행 가능하다. 따라서 고성능을 필요로 하는 정밀 제어 분야에서는 DSC(DSP + 마이크로컨트롤러, TI가 대세)나 ARM(Cortex-M 시리즈 및 Cortex-A 시리즈, 삼성 및 ST 등이 강세)에 발려서(...) 시장 진입조차 어렵다. 몇 년 전까지만 해도 8비트급과 16/32비트급 컨트롤러의 시장 영역이 상당히 달랐으나 2010년경 출하량 기준으로 16비트급 컨트롤러가 1위, 매출 기준으로는 32비트급이 1위를 차지하면서 8비트급 컨트롤러의 점유율이 확연히 줄어드는 추세이다.#
그러나 8비트 마이크로컨트롤러의 특성 상 구조가 간단하다. 32비트급 이상의 고속 MPU에서 주로 볼 수 있는 CPU 코어에 관련된 MMU나 DRAM 컨트롤러 등의 여러 장치들의 특성을 사전에 익힐 필요가 없고 OS를 끼고 돌아가는 경우가 적기 때문에 그에 관련된 내용도 따로 스터디할 필요가 없다. 즉 부팅하고 바로 유저가 작성한 코드로 점프하면 되기 때문에 다루기 쉽다는 것이지, C 코드 문법이 쉽다는 의미가 아니다. 유지보수가 간단하며, I/O핀이 전기적으로 강인한 경우가 많고, 워낙 오랫동안 사용되어 오면서 검증된 안정성과 무엇보다도 32비트급 마이크로컨트롤러에 비해 단가가 매우 싸기 때문에 단순 제어 분야에서는 현업에서도 여전히 널리 사용되고 있다.