'AVR'에 해당되는 글 17건

  1. 2014.04.20 변수 vs. 메모리
  2. 2014.04.20 AVR의 메모리 구조 3
  3. 2014.04.04 Wii-ESC 프로젝트의 소개입니다
  4. 2014.03.27 아두이노(Ardunio)의 장점(1)
  5. 2014.03.24 TWI(I2C) 통신이란?
  6. 2014.03.13 Wii-ESC란?
  7. 2014.03.11 AVR이란?
Embedded Programming/AVR 2014. 4. 20. 21:51



1) 전역변수(Global variable)


SRAM에 저장되어 있다가 이를 사용할 때마다 register로 읽혀지며 사용이 끝나면 다시 SRAM에 저장되므로 처리속도가 늦은 변수로, 특별히 속성을 정하지 않고 변수를 정의하면 SRAM 영역에 저장됩니다. 게다가 Compiler는 이를 변수로 처리하지 않고 그 상황에서 이 변수가 갖는 값에 해당하는 상수로 처리하는 경우가 있는데 이런 상황에서 여러 함수가 이 변수를 공유하여 사용하는데 문제를 야기하고 컴파일 시 최적화 옵션에 따라서도 영향을 받게 됩니다.


특히 인터럽트 서비스 루틴(Interrupt Serve Routine, ISR) 함수와 그 밖의 함수 사이에 공유하는 전역변수의 경우에 흔하게 발생하며 이를 방지하기 위해서는 전역변수에 'volatile'을 선언해 주어야 합니다.

ex) volatile unsigned char zc_count;


2) 지역변수(Local variable)


ATmega8의 경우, 다른 MCU에서처럼 지역변수를 Stack에 저장하는 것이 아닌 32개의 General Purpose Registers(GPFs)로 처리하므로 항상 처리속도가 빠릅니다. 하지만 ISR에 사용되는 변수는 특성상 Stack에 저장합니다.


3) 정적변수(static variable) 


함수가 시작될 때 register로 옮겨지고 함수가 종료될 때 SRAM으로 다시 옮겨져 저장되므로 만일 함수 내에서 여러 번 사용된다면 전역변수보다 정적변수가 처리속도가 증가하게 됩니다.





4) Flash Memory에 데이터의 저장


물론 메모리 용량이 크고 고성능의 MCU를 사용하면 문제가 되지는 않지만 가격대 성능비 등을 고려하여 그렇지 못한 경우, 변수로 사용해야 할 SRAM 용량을 절약할 필요가 있습니다. 만일 SRAM 용량이 부족하게 되면 Stack overflow가 발생하거나 프로그램이 오동작을 할 수 있습니다.


avr-gcc에서 상수 데이터를 프로그램이 적재되는 Flash Memory에 저장하기 위해서는 먼저 상수 데이터를 전역변수처럼 함수의 밖에서 정의하고 이때 상수가 byte 데이터라면 prog_char 또는 prog_uchar로 선언하며 읽을 때문 pgm_read_byte() 또는 pgm_read_word() 함수를 사용합니다.


참고로 비록 상수 데이터를 prog_char 또는 prog_uchar로 정의하더라도 이들이 함수 내에서 정의되면 컴파일 시 SRAM 변수로 처리되므로 주의가 요구되며, 일반적으로 Flash Memory는 SRAM에 비하여 용량이 훨씬 크므로 유용하게 사용할 수 있습니다.


5) EEPROM에 데이터의 저장


AVR에서 EEPROM을 I/O register를 사용하여야 접근할 수 있으므로 avr-gcc 에서는 EEPROM을 eeprom_read_byte() 혹은 eeprom_write_byte() 함수로 각각 읽기, 쓰기가 가능합니다.



'Embedded Programming > AVR ' 카테고리의 다른 글

다양한 AVR Package 비교  (0) 2014.06.14
AVR의 메모리 구조  (3) 2014.04.20
AVR이란?  (0) 2014.03.11
부트로더란?  (0) 2012.12.10
Posted by Nature & Life
Embedded Programming/AVR 2014. 4. 20. 17:49



사용자가 Assembler나 C 언어를 기반으로 접근 가능한 ATmega8 칩의 메모리 구조입니다.


1) Program Memory

8 Kbyte의 비휘발성(Non-volatile) Flash Memory로 프로그램을 적재하거나 데이터를 저장하며 최대 10,000번까지 변경이 가능합니다.


* 이 영역에서는 boot 프로그램을 저장할 수 있는 공간이 따로 존재하는데 이는 직접 MCU 핀을 접속하여 프로그램 및 데이터를 변경할 수 없을 때 시리얼 통신 등으로 Flash Memory 내의 프로그램 및 데이터를 변경할 수 있게 해 줍니다.

참고: http://sharehobby.tistory.com/entry/%EB%B6%80%ED%8A%B8%EB%A1%9C%EB%8D%94%EB%9E%80


2) Data Memory

General Purpose Registers(GPRs) 그리고 I/O register와 같은 Special Function Registers(SFRs) 그리고 Internal SRAM, External SRAM 등으로 구성되며 External SRAM은 별도로 장착된 SRAM으로 MCUCR register를 설정해야 합니다. 여기서 SFRs는 사용자가 데이터를 저장하는 메모리가 아닙니다.


  • General Purpose Registers(GPRs) : 32개의 register를 가지고 있으며 CPU의 연산 결과를 메모리(SRAM, Flash Memory, EEPROM)에 옮기기 전에 임시로 저장하는 장소로 접근 속도가 가장 빠르며 Assembler 아닌 C 언어를 사용하는 경우 Compiler가 register를 자동으로 관리합니다.

  • Internal SRAM : 1Kbyte 내부 SRAM으로 프로그램 실행 중 변하는 변수의 값을 저장하는데 사용되며 전원이 끊기면 내용은 지워집니다(휘발성, volatile). 

  • EEPROM : 512 byte의 비휘발성으로 프로그램 실행 중 변하는 변수의 값이 전원이 끊긴 이후에도 지속적으로 유지하는데 사용되며 최대 100,000번까지 변경이 가능하며 내장된 주변장치처럼 register를 통하므로 접근 속도는 느립니다.






'Embedded Programming > AVR ' 카테고리의 다른 글

다양한 AVR Package 비교  (0) 2014.06.14
변수 vs. 메모리  (0) 2014.04.20
AVR이란?  (0) 2014.03.11
부트로더란?  (0) 2012.12.10
Posted by Nature & Life
Radio Control/ESC2014. 4. 4. 08:49

 

 

 

About

 

This firmware designed as a replacement for many commercially available ESC designs based on the AVR MCU. It implements scalar sensor less method to drive Brushless Motor by detecting BEMF zero-crossing instants. The goal of this project is to create firmware most suitable to use in multi-rotors, using cheap and commercially available hardware.

 

이 펌웨어는 AVR 마이크로콘트롤러(MCU)에 기반을 둔 많은 상업용 ESC의 대체용으로 설계되었습니다. 이것은 BEMF zero-cross 순간을 감지하여 Brushless 모터를 구동하는 Sensorless 방법을 구현하였습니다. 이 프로젝트의 목표는 저렴하고 상업적으로 가능한 멀티로터(Multi-rotor) 기체를 사용하는 데에 가장 적당한 펨웨어를 개발하는 것입니다.

 

Features:

 

  • Fastest possible power response.

  • Up to 4000 steps of resolution.

  • Low noise with comparatively high efficiency (Sigma-delta modulator, instead of fixed frequency PWM)

  • Linear power response. (completely no "bump" at 100%)

  • Jitter-free input PWM measurement without harware assisted input capture.

  • Accepts any PWM update rate

  • Sync recovery.

  • Safe stall detection.

  • Complimentary PWM support (AKA: active freewheeling, active rectification)

  • Fixed throttle end-points. No need to calibrate. (since version 2.0.9 it is also possible to calibrate end-points using stick programming procedure)

  • Automatic oscillator calibration.
    Enhanced PPM filter, preventing accidental motor startup (when FC is rebooted, for example)

  • Configurable. The configuration parameters are stored in EEPROM. The Wii-ESC flash tool has visual parameters editor. No more stick programming.

  • Modularity. The high-level implementation is separated from actual hardware with HAL layer.

  • Portability. The firmware is written in C++, which means it can be easilly ported to different platform.

 

Supported Hardware:

 

For complete mapping between targets and real hardware, it is possible to use RapidESC Database. Currently tested targets:

 

펌웨어와 실제 하드웨어 사이에 완전한 매핑을 위하여 RapidESC 데이타베이스를 사용하는 것이 가능합니다. 현재 검증된 펨웨어는 다음과 같습니다.

 

  • bs.hex

  • bs_nfet.hex

  • bs40a.hex

  • kda.hex

  • qynx.hex

  • rb50a.hex

  • rct30nfs.hex

  • rct45nfs.hex

  • tgy.hex

  • tp.hex

  • tp_nfet.hex

 

다음은 아래의 상업용 HobbyKing BlueSeries 40A(HK40A-bs) ESC에서 APC prop.을 장착하고 원래 출고당시 제품과 SimonK와 Wii-ESC 펌웨어를 탑재하였을 때의 추력 등의 특성을 서로 비교한 데이터입니다.

 

 

 

 

 

 

 

 

마지막으로 상업용 ESC에 재프로그램(reflashing)하는 절차입니다.

 

 

 

 


 

'Radio Control > ESC' 카테고리의 다른 글

RapidESC FAQ's  (0) 2014.06.11
RapidESC Flashing  (0) 2014.06.03
RapidESC란?  (0) 2014.05.26
Wii-ESC에 대한 FAQ  (0) 2014.04.07
Wii-ESC란?  (0) 2014.03.13
Posted by Nature & Life


 

아두이노(Arduino)는 오픈 소스(Open Source)를 기반으로 한 단일 보드(board) 마이크로 컨트롤러입니다. 2005년 이탈리아 사람에 의해서 최초 만들어지기 시작한 프로젝트로 현재에도 진행 중에 있으며 Arduino는 이탈리아어로 영어의 'Best Friend'와 같은 의미를 가진다고 알려집니다.

 

아두이노는 대부분 Atmel社의 ATmega8이나 ATmega32U4, ATmega168, ATmega328, ATmega2560 등을 탑재한 보드로 이들 마이크로 컨트롤러에 탑재할 펌웨어(Firmware)를 개발하는 환경에서부터 컴파일 및 독립적으로 작동할 수 있도록 업로드 과정이 편리하여 최근에 전 세계적으로 인기를 끌고 있습니다. 

 

2011년에는 구글의 안드로이드(Android)가 아두이노를 하드웨어 파트너로 선택한 이유도 이런 확장성과 편리함 때문에 상호간에 시너지 효과를 기대해 보자는 것으로 풀이되며, 이러한 추세에 힘입어 얼마전에는 Intel社에서도 아두이노 플랫폼에 자사의 Quark Processor를 탑재한 갈릴레오(Galilo)를 출시하였는데, 이러한 것도 내내 동일한 맥락이라는 것입니다.

 

갈릴레오 보드

 

하드웨어에 서툰 사람들조차도 아두아노에 관심을 가지게 만드는 이유는 요구하는 제품이 기존의 AVR의 개발환경에 비하여 뚜렷하게 간소화됨으로 말미암아 편리함일 수도 있지만, 이러한 과정들이 복잡하지 않아 소프트웨어 제작이나 다양한 하드웨어 DIY(Do It Yourself)를 즐기는 사람들에게 호기심을 불러 일으키기에 충분하였기 때문일 것입니다.

 

그럼 아두이노는 어떤 장점이 있는지 요약하여 봅니다.

 

1) 소프트웨어 개발을 위한 통합 환경(IDE)이 간소화 되었다는 것입니다.

가장 큰 장점으로 기존의 AVR 프로그래밍은 WinAVR로 컴파일하여 별도의 ISP 장치를 통해 업로드 해야하는 번거로운 과정을 거쳐야 하는데, 아두이노는 컴파일된 펌웨어를 보드 내 USB 포트에서 PC의 USB 포트로 케이블을 연결하는 것만으로 쉽게 업로드 할 수 있다는 것입니다.

 

2) Windows를 비롯한 Mac OS X 및 Linux와 같은 다양한 OS 환경을 지원합니다.

 

3) 다양한 소프트웨어와 연동이 가능하다는 것입니다.

사용자들이 기존에 즐겨 사용하여 익숙했었던 Flash나 Processing, Max/MSP, Android, Object C, Labview, Pure Data 등과 같은 소프트웨어를 연동할 수 있다는 것입니다.

 

4) 가격이 저렴합니다.

사실 마이크로컨트롤러를 배우고 싶어서 강좌를 듣거나 데모보드를 구입하려면 최소한 수 십만원 정도 이상을 호가하는데, 이에 비해 아두이노 보드는 상대적으로 매우 저렴하다는 것입니다.

 

5) 아두이노는 오프 소스입니다.

아두이노는 보드의 회로도가 공개되어 있으며 개발환경 조차도 오픈 소스이고 이로 인해 각종 회로도나 펌웨어 소스가 웹상에서 다량 공유되어 있다는 것입니다. 뿐만 아니라 여러 개발자들이 만들어 놓은 라이브러리 조차도 공유되어 개발 시간을 단축시키고 있다는 것입니다. 

 

다음은 아두이노 포럼입니다.

 

http://forum.arduino.cc/

 

 

현재 가장 많이 사용되는 아두이노는 보드는 기본형 우노(Arduino UNO)로써 손바닥만한 크기를 가지면서 ATmega328을 탑재하고 있는데 6개의 아날로그 입력단자와 14개의 디지털 입출력단자를 지원합니다. 이러한 입출력 단자들은 우노 보드에 위로 쌓아(Stack-up) 연결된 확장보드(Shield 보드, Shield-up 보드)에 서로 연결되고, 사용자는 1개 이상의 이들 확장보드에 주변회로를 직접 꾸며주게 됩니다.

 

 

 

Posted by Nature & Life

 

 

통신약정(Protocol)이란 데이터를 보내는 사람과 받는 사람이 정보를 오류없이 원할히 주고 받을 수 있도록 쌍방간에 정하는 규칙 혹은 약정입니다. 이는 원거리 인터넷이나 FAX 통신도 혹은 PC와 그 주변기기와의 통신같은 근거리 통신에도 반드시 존재하며 자동차 내에서 혹은 한 보드내에서 칩과 칩 사이의 통신에도 적용됩니다.

 

AVR의 경우에는 다른 칩과의 통신방법으로 SPI(Serial Peripheral Interface)인 SCI(Serial Communication Interface, UART)나 TWI 통신을 지원합니다. 어느 정도 근거리 통신에서도 사용되어야 하기에 송수신에 앞서서 노이즈 등에 대비하여 신호의 크기를 키워야 할 필요가 하는데 이것이 PC 등에 사용되는 RS232C 트랜시버가 됩니다.

 

이러한 SPI 방식에서는 보내는 라인과 받는 라인 그리고 동기화된 클럭(Clock)으로 3가닥의 라인을 필요로 하였고, 한편 이 라인의 수를 더 간소화시켜 오직 2가닥 만으로 데이터의 송수신을 가능하게 한 새로운 인터페이스(Interface)를 제공하게 되었는데 이를 TWI라고 명명합니다.

 

TWI는 'Two Wire Interface'의 약자로 이를 통해서 AVR 칩은 오직 2가닥 만으로 128개의 다른 장치들과의 통신할 수 있다는 것입니다. TWI는 Atmel社 등이 주로 사용하지만 1980년대 Philips社에서 만든 I2C 인터페이스와 매우 유사하여 하드웨어의 별다른 수정없이 그대로 사용할 수 있다는 장점이 있습니다. 통상 I2C 인터페이스가 2가닥의 라인을 이용하므로 TWI라 부르게 되었습니다.

 

Philip社에서 제창한 I2C(IIC)는 칩(IC)간의 통신을 의미하는 'inter IC(Integrated Circuit)'의 준말로 'i square c'라고 읽으며, 비록 서로 다른 회사로부터 만들어졌지만 10-bit 주소나 고속 모드(high speed mode) 등에 차이를 제외하면 서로 호환가능하여 수정없이 사용할 수 있다는 것입니다.

 

TWI 통신이 가능한 장치는 데이터(SDA, Serial Data Line)와 클럭(SCL, Serial Clock) 라인이 공통 버스(bus)에 연결되어 고유의 주소값을 가져 다른 칩과 통신시 master와 slave의 관계를 번갈아가며 데이터의 송수신이 가능합니다. 표준 모드(standard mode)에서 100kbit/s로 통신할 수 있고 버스의 capacitance가 400pF을 넘지 않는 한도에서 칩을 계속 연결할 수 있다고 알려집니다.

 

 

 

 

간단하게 설명하면 아래 그림과 같이 데이터(SDA)를 클럭(SCK)에 동기화하여 주고 받는 방식으로 먼저 데이터를 주고 받고자하는 장치 주소(Address)를 1~7번 비트에 싣고 보낼지 읽을지에 따라서 8번 비트를 Read('1')나 Write('0')로 설정하며 그 다음에 데이터를 연속적으로 읽거나 실을 수가 있다는 것입니다.

 

 

 

여기서 ACK 비트는 정보의 송신자에게 직전 8-bit의 정보를 수신했는지의 여부를 확인하는 값입니다.

 

 

'Flight Controller 이해 > 인터페이스' 카테고리의 다른 글

CAN 통신이란?  (0) 2017.12.24
드론에서 사용되는 무선 통신  (1) 2017.03.09
Posted by Nature & Life
Radio Control/ESC2014. 3. 13. 19:46

 

 

ESC는 Electronic Speed Controller의 약자로 우리말로 '전자변속기'라고 부릅니다. ESC는 밧데리로부터 전기를 전기모터에 공급하는 장치로 멀티콥터(Multicopter)를 비롯한 각종 RC 기체에 회전 동력을 필요로 하는 곳에 사용하여 로터(rotor)를 회전시켜 양력을 얻거나, 멀티콥터의 짐벌(gimbal)에 응용하여 기계적 장치를 움직이게 합니다.

 

과거의 엔진기체에는 전기모터가 필요없지만 근래에는 밧데리 용량과 방전 특성이 크게 개선되어 전기모터를 동력원으로 하는 기체가 대중화되었습니다. 기존의 DC 모터를 사용하는 경우, 기계적 브러쉬(brush)로 회전자에 전기를 급전하기에 기계적 접점이 불가피하여 모터가 회전시 스파크나 소음이 발생하는 등 효율이 좋지 않고 모터의 수명 또한 단축되었습니다.

 

최근에는 이러한 기계적 접점을 없앤 브러쉬리스(brushless; BLDC) 모터가 등장하여 소음도 현저히 줄어들고, 반영구적이며, 효율이 개선되어 RC 기체의 정숙비행과 체공시간의 증대로 전동기체가 범람하게 되었습니다. 기존의 DC 모터를 구동하기 위해서는 스로틀(throttle)의 위치에 따라 트랜지스터(transistor)와 같은 액티브 스위치(active switch)를 PWM 형태로 개폐하므로 장치가 간단하지만 브러쉬리스 모터를 사용하는 경우 장치가 매우 복잡해지고 단가가 상승하게 됩니다.

 

 

BLDC 모터를 구동하는 ESC는 8-bit PIC나 AVR 시리즈 등의 마이컴(Micom)으로 정교하게 제어하는 방법을 채택하고, 상용 ESC의 제조사는 하드웨어를 제작하고 여기에 펌웨어(Firmware)를 적절히 튜닝하여 시판하게 됩니다. 최근에는 멀티콥터가 대중화되면서 이에 걸맞는 성능을 갖춘 예를 들어, 빠른 응답 특성을 가진 ESC를 필요로 하게 되었습니다.

 

 

이러한 요구는 전 세계적으로 ESC를 자작(DIY)하려는 매니아나 동호회를 등장시켰습니다. 대다수는 ESC는 동일 클럭에서 속도가 빠르고 내부에 A/D 컨버터나 비교기 등의 고기능을 지원하는 AVR를 사용하는데, 대부분 어셈블러(Assembler) 수준에서 펌웨어를 개발하기 때문에 일반인이 접근하기에는 쉽지 않다는 것입니다.

 

Wii-ESC는 멀티위(MultiWii) 등의 멀티콥터에 최적화된 ESC 펌웨어를 만들기 위한 오프 소스(open source) 펌웨어 개발 프로젝트로 전 세계적으로 여러 사람이 참여하고 있으며, 어셈블러가 아닌 C 언어 기반이므로 일반 매니아층도 펌웨어의 이해와 수정이 가능하여 자기만의 멀티콥터에 최적화된 펌웨어를 구현할 수 있다는 장점이 있습니다.

 

다음은 Wii-ESC 프로젝트의 링크이며 소개를 간단히 번역한 것입니다.

(번역이 원문과 상이하거나 매끄럽지 못한 부분은 댓글로 남겨 주시면 감사하겠습니다)

 

http://code.google.com/p/wii-esc/

 

 

About

This firmware designed as a replacement for many commercially available ESC designs based on the AVR MCU. It implements scalar sensor less method to drive Brushless Motor by detecting BEMF zero-crossing instants. The goal of this project is to create firmware most suitable to use in multi-rotors, using cheap and commercially available hardware.

이 펌웨어는 AVR MCU에 기반을 둔 많은 상용 ESC를 위한 대체용으로 개발되었습니다. 이것은 역기전력(BEMF)이 '0' 레벨을 지나가는 순간(ZC point)를 감지함으로서 BLDC 모터를 구동하는 sensorless method를 구현하였습니다. 이 프로젝트의 목표는 저렴한 상용 하드웨어를 사용하여 멀티콥터에 가장 적합한 펌웨어를 만드는 것입니다.

 

* Sensorless method

BLDC 모터는 센서(sensor)의 유무에 따라 크게 두 가지 구분하는데, CD-ROM 모터로 대표되는 센서를 가진 BLDC 모터는 제어기가 간편해질 수는 있으나 모터에 센서가 장착되어 단가가 올라가고, 혹한 환경에서 센서의 정밀도가 떨어지며, 모터 외부로 추가적인 배선이 요구되는 등 고장이 쉽다는 것입니다. 하지만 센서 없는 BLDC 모터는 이를 구동하는 제어기가 복잡해지는 단점은 있지만, MCU의 지속적인 성능 개선으로 얼마든지 이를 극복할 수 있으므로 근래에 보다 선호하게 되었다는 것입니다.

 

Features:

  • Fastest possible power response.

  • Up to 4000 steps of resolution.

  • Low noise with comparatively high efficiency. (Sigma-delta modulator, instead of fixed frequency PWM)

  • Linear power response. (completely no "bump" at 100%)

  • Jitter-free input PWM measurement without harware assisted input capture.

  • Accepts any PWM update rate.

  • Sync recovery.

  • Safe stall detection.

  • Complimentary PWM support. (AKA: active freewheeling, active rectification)

  • Fixed throttle end-points. No need to calibrate. (since version 2.0.9 it is also possible to calibrate end-points using stick programming procedure)

  • Automatic oscillator calibration.

  • Enhanced PPM filter, preventing accidental motor startup. (when FC is rebooted, for example)

  • Configurable. The configuration parameters are stored in EEPROM. The Wii-ESC flash tool has visual parameters editor. No more stick programming.

  • Modularity. The high-level implementation is separated from actual hardware with HAL layer.

  • Portability. The firmware is written in C++, which means it can be easilly ported to different platform.

 

 

 

'Radio Control > ESC' 카테고리의 다른 글

RapidESC FAQ's  (0) 2014.06.11
RapidESC Flashing  (0) 2014.06.03
RapidESC란?  (0) 2014.05.26
Wii-ESC에 대한 FAQ  (0) 2014.04.07
Wii-ESC 프로젝트의 소개입니다  (0) 2014.04.04
Posted by Nature & Life
Embedded Programming/AVR 2014. 3. 11. 13:11

 

AVR(Atmel AVR)은 8bit RISC 단일칩(onechip) 마이크로컨트롤러(Microcontroller) 혹은 마이크로컴퓨터(Microcomputer, Micom)로 일반적으로 마이컴이라고 부릅니다. 1996년에 美 Atmel社가 하버드 아키텍처(Harvard architecture)로 수정하여 개발한 구조로 프로그램을 저장하기 위해 타사 마이컴처럼 ROM, EPROM 또는 EEPROM을 사용하지 않고 단일칩 플래시메모리(Flash memory)를 처음 사용하였다고 전해집니다.

 

AVR 마이컴은 중앙처리장치(CPU)와 소용량 플래시메모리가 하나의 IC에 집적되어 있으며 프로그램과 데이터 영역의 메모리가 분리된 형태로 특수 명령어로 프로그램을 데이터 영역으로 읽어들일 수 있습니다. 마이컴에 프로그램을 탑재하기 위해서는 ISP(in-system programming) 방식으로 Reset을 추가한 SPI 프로토콜로 업로드가 가능합니다.

 

http://www.atmel.com/

 

 

 

무엇보다도 AVR은 ISP 기능을 통해 매우 저렴하게 개발환경을 구축할 수 있다는 점과 한 cycle에 한 개의 명령(instruction)을 수행하는 파이프 라인 방식으로 연산 속도가 빠르며, 하버드 아키텍처의 특징으로 C언어에서 우수한 성능을 발휘하며 게다가 우수한 각종 컴파일러(Compiler)와 디버거 툴인 AVR Studio를 무료로 제공한다는 특징을 가집니다. 이밖에도 A/D 변환기, PWM, SPI 등의 고기능을 손쉽게 구현할 수 있다는 장점이 있습니다.

 

AVR은 위와 같은 특징으로 말미암아 대중화되었으며 근래에는 보다 상위개념의 ARM 프로세서가 출시되어 아이폰이나 최신기기에 탑재되지만, 저렴하여 가격대비 성능면에서 우수하여 여전히 중소 규모의 다양한 기기에 여전히 활용되고 있으며, 드론(Drone)이나 기타 RC에 사용되는 장치에는 다른 마이컴인 PIC 보다 처리 속도가 빠르고, 8051 계열보다 자원이 풍부한다는 장점으로 보다 널리 사용되고 있는 실정입니다.

 

 

 

다음은 AVR의 일반적인 특징을 요약하였습니다.

 

  • ISP(In System Programming) 기능이 있어 AVR을 장치에 부착한 상태에서 내부 메모리에 프로그램이 가능합니다.

  • RISC 구조로 동일 클럭(clock)으로 동작 시 PIC보다 4배 빠르고, 8051보다 10배 이상 빠릅니다. 예를 들어 1MHz에 1MIPS의 처리 능력이 있어 20MHz로 동작하는 경우 20MIPS의 처리 능력을 가집니다.

  • CPU 설계 단계에서 레지스터/메모리/명령어가 C 언어에 적합하도록 설계되어 C 언어를 사용하면 개발 기간을 단축하고 유지 보수가 편리하다는 것입니다.

  • 다양한 AVR 제품군이 있어 저가의 적합한 소자의 선정 및 사용이 가능하고 풍부한 저가의 개발 환경 및 응용 기술 자료가 많다는 것입니다.

  • SRAM, 통신포트, A/D 변환기, Watchdog, 타이머, PWM, I/O포트 등의 풍부한 내부 장치를 구비하여 외부에 별도로 주변장치를 부착하지 않아도 된다는 것입니다.

 

 

'Embedded Programming > AVR ' 카테고리의 다른 글

다양한 AVR Package 비교  (0) 2014.06.14
변수 vs. 메모리  (0) 2014.04.20
AVR의 메모리 구조  (3) 2014.04.20
부트로더란?  (0) 2012.12.10
Posted by Nature & Life