Atmel AVR MCU

개요

Atmel에서 만든 범용 RISC 마이크로 컨트롤러. 안에 CPU, ROM, RAM, 플래시 메모리, ADC, DAC, GPIO가 다 들어 있다. PIC와 함께 독립된 상표 형식으로는 8비트 마이크로 컨트롤러 업계에서 가장 잘 알려져 있으며[1], 특히 ISP (In-circuit Serial Programming) 인터페이스를 갖추고 있어서 별도의 롬 라이터 없이 PC에서 프린터 포트나 시리얼 포트, USB 인터페이스에 연결하는 ISP 장비를 통해 손쉽게 프로그램을 짜 넣을 수 있어서 인기가 많다.

물론 8비트 MCU인 만큼 연산 능력이나 클럭 속도, 메모리 어드레스 영역은 상당히 제한되며[2] 따라서 고성능을 필요로 하는 정밀 제어 분야에서는 DSC(DSP + MCU, TI가 대세)나 ARM(Cortex-M 시리즈 및 Cortex-A 시리즈, 삼성 및 ST 등이 강세)에 발려서(...) 시장 진입조차 어렵지만[3] 그러나 8비트 MCU의 특성 상 구조가 간단하여 프로그래밍이 쉽고[4] 유지보수가 간단하며, I/O핀이 전기적으로 강인한 경우가 많고, 워낙 오랫동안 사용되어 오면서 검증된 안정성과 무엇보다도 32비트급 MCU에 비해 단가가 매우 싸기 때문에 단순 제어 분야에서는 현업에서도 여전히 널리 사용되고 있다.

재미있는 것은 겨우 8bit급 MCU임에도 불구하고 RISC를 표방하고 있는데 이는 마이크로 컨트롤러계의 CISC라고 할 수 있는 8051[5]에 비해 명령어 길이가 일정하고 범용 레지스터 숫자가 많으며 하버드 아키텍처[6]가 도입되었고 메모리 공간이 비교적 일정하게 구성되어 있다는 RISC적인 특징을 가지고 있기 때문.

참고로 전기밥솥, 엘리베이터 제어, 자동 판매기 등 높은 성능이 전혀 필요 없고 신뢰성이 필요한 제어 장치 부분은 앞으로도 계속 8비트 마이크로 프로세서가 사용될 것이다. 심지어 8051 계열은 80년대 개발되어서 30년 넘게 사용되고 있다! 물론 공정이나 인터페이스 등은 현대화 되었지만 기본 아키텍처는 30년된 그대로. 그래서 각종 용도별 어셈블리 및 C 소스 프로그램이 온 천지에 널려있다...

저렴한 가격에 ROM, RAM 걱정 없이 프로그램을 넣을 수 있기 때문에 많은 대학교의 전자공학과에서 마이크로 프로세서나 임베디드 시스템과 관련된 과목에서 AVR을 대상으로 강의하는 경우가 많다. 특히 학부 4학년 때 졸업 작품용으로 높은 인기를 구가하고 있다.

AVR도 여러 모델이 있지만 그 중 ATMEGA128이 가장 인기가 좋다. 한마디로 말해 학부 4학년 수준에서 사용하기에 미칠듯이 적절하다. 가격, 기능, 확장성 등의 적절함은 말할 것도 없고[7][8] 예제 코드가 정말 넘쳐난다. 이 정도로 예제 코드가 넘쳐나는데 ATMEGA128로 원하는 것을 못 만든다면… 애초에 ATMEGA128을 제대로 다룰 줄 모르던가 아니면 ATMEGA128 정도의 프로세서로는 만들 수 없는 물건일 가능성이 높다. 당장 구글에서 ATMEGA128 작품으로 검색만 해봐도 정말이지 신기한 물건들이 많이 나온다. #. 물론 ATMEGA8으로도 정말 많은 일을 할수 있다. 8을 쓰다가 128로 넘어올때는 엄청난 성능차이에 놀라게 된다.

Arduino 플랫폼 중 가장 기본이 되고 많이 사용되는 아두이노 우노 또한 이 AVR 기반이다.
  1. 다만 북미나 유럽 쪽은 한국에서는 거의 안 쓰는 MC68H계열 마이크로 컨트롤러도 많이 사용한다.
  2. AVR 시리즈 중 고급형에 해당하는 ATMega급의 최대 동작 속도가 20MHz에 머물고 있으며, 그나마 이는 일부 모델만 해당되고 대부분은 16MHz가 한계이다. 또한 대부분의 경우 FPU가 없을 뿐만 아니라 32bit 단정도 실수를 제대로 처리하기에는 워드 길이가 8bit로 크게 제약되는 나머지 소프트웨어적인 실수 연산 처리도 쉽지 않으므로 복잡한 수학 연산 성능은 거의 없다고 생각하는 편이 좋다. 단 ATMega급은 대부분 정수 곱셈 연산 유닛은 내장하고 있으므로 라인트레이서 정도의 제어 연산은 무난하게 수행 가능하다.
  3. 몇 년 전까지만 해도 8비트급과 16/32비트급 컨트롤러의 시장 영역이 상당히 달랐으나 2010년경 출하량 기준으로 16비트급 컨트롤러가 1위, 매출 기준으로는 32비트급이 1위를 차지하면서 8비트급 컨트롤러의 점유율이 확연히 줄어드는 추세이다.#
  4. C 코드 문법이 쉽다는 의미가 아니다. 32비트급 이상의 고속 MPU에서 주로 볼 수 있는 CPU 코어에 관련된 MMU나 DRAM 컨트롤러 등의 여러 장치들의 특성을 사전에 익힐 필요가 없고 OS를 끼고 돌아가는 경우가 적기 때문에 그에 관련된 내용도 따로 스터디할 필요가 없다. 즉 부팅하고 바로 유저가 작성한 코드로 점프하면 되기 때문에 쉽다는 것이다.
  5. 실제로 8051의 내부 구조는 지저분하기로 악명 높다. 그러나 악명 높은 내부 구조는 컴파일러느님이 알아서 커버해 주실테니 상관없겠지
  6. 하버드 아키텍처는 사실 8051도 결과적으로는 도입이 되어 있기는 한데... 그 이유는 데이터 메모리 영역과 코드 메모리 영역을 분리하여 성능 향상을 도모하기 위한 것이 아니라 8051이 태생적으로 너무 구식이어서 Mask-ROM에 프로그램 코드가 들어가도록 설계되었고 연산 결과를 재기록해야 해서 Mask-ROM에 넣는 게 불가능한 변수형 데이터만 소량의 내부 RAM에서 돌아가도록 만들었기 때문이다. 그야말로 구시대의 잔재.
  7. 프로세서만 단독으로 구매하면 보통 1.5만원 미만이고 외부 장치 연결을 위해 이런저런 포트들을 덕지덕지 달고 있는 모듈 타입도 10만원을 채 넘지 않는다.
  8. 그냥 사다가 RS232C 포트나 UART 포트에 꽂은 뒤 매뉴얼에 적힌 코드를 그대로 복붙해서 다운로드만 해도 의도한 대로 동작하는 모듈들이 많다.