'PWM'에 해당되는 글 6건

  1. 2017.03.11 Arduino Uno R3의 개요
  2. 2017.03.09 드론에서 사용되는 무선 통신 1
  3. 2015.12.02 왜 STM32가 유리한가?
  4. 2014.04.07 Wii-ESC에 대한 FAQ
  5. 2014.03.13 Wii-ESC란?
  6. 2014.03.11 AVR이란?


Arduino Uno R3는 가장 널리 사용되는 입문용 기본 보드로 R3는 세번째 버젼을 의미합니다. 이 보드는 8-bit 마이크로 콘트롤러인 ATmega328P을 탑재하며 PC와 USB로 연결할 수 있어 프로그램 다운로드 및 시리얼 통신에 가능합니다. 그 밖에도 ATmega16U2의 또 다른 마이크로 콘트롤러를 내장하는데, 이는 기존 보드들에서 사용하던 FTDI FT232R USB-to-Serial 드라이버 칩을 대체하기 위한 것으로 USB-to-Serial 변환 프로그램이 들어 있습니다. ATmega328P는 1KB의 부트로터(Bootloader)용을 포함한 32KB의 Flash 메모리와 2KB의 SRAM, 1KB의 EEPROM을 갖고 있으며, 클럭 속도(Clock speed)는 16MHz입니다.


5V로 동작하는 이 Uno 보드의 전원공급은 두 가지 방법이 있는데, 첫번째는 USB로부터 제공되는 5V를 그대로 사용할 수 있으며, 두번째로는 7~12V의 AC 어댑터를 잭에 꼽아 외부에서 공급하는 방법인데 이는 Uno 보드가 내부적으로 5V를 정류하는 레귤레이터(Regulator)를 내장하고 있기 때문이며 위의 두 가지 전원이 모두 연결되어 있다면 외부 전원이 우선이 됩니다.



디지털 입출력 핀 14개 (0번~13번)

디지털 입출력 핀들을 이용해서 외부의 이진 신호를 읽어들어나 또는 이진 신호를 내보낼 수 있다. 디지털 입출력으로 사용되면서 또한 다른 기능을 가지는 핀들이 있는데, 이 기능들은 한 핀으로 두가지를 다 사용할 수는 없으며 다른 기능은 다음과 같습니다.

    • 0번~1번: 시리얼 통신에 사용되어 USB로 PC와 통신을 할 수 있습니다.

    • 2번~3번: 인터럽트(interrupt) 기능을 갖습니다.

    • 3, 5, 6, 9, 10, 11번 핀은 PWM 기능을 가지며 아날로그 출력을 흉내낼 수 있다.


아날로그 입력 핀 6개 (A0~A5)

외부의 아날로그 입력값을 읽어들여 ATmega328P칩 내부의 ADC(Analog to Digital Converter)를 이용하여 0~1023 사이의 숫자로 변환합니다. 이때 필요한 기준 전압은 5V 이지만 1.1V의 내부 전압이 사용될 수 있으며 AREF핀으로 기준 전압을 직접 인가할 수도 있습니다. 그리고 아날로그 핀은 디지털 입출력 핀으로도 사용할 수 있습니다.


아날로그 출력핀 6개 (3,5,6,9,10,11번 핀)

아날로그 출력핀은 0~5V사이의 전압 값(256레벨)을 가질 수 있으며 이는 PWM(Pulse Width Modulation) 방식으로 동작하므로 흉내를 내는 것입니다.


인터럽트 (2, 3번 핀)

2번과 3번 핀에 가해진 외부 이벤트를 감지하여 사용자가 원하는 방향으로 이를 처리하기 위한 기능으로 이를 인터럽트 처리(interrupt handling)라 부르는데, 즉 이 핀들에 변화가 있는면 하드웨어는 즉각적으로 알리고 이때 사용자가 원하는 정해진 동작을 코딩하여 사용합니다.



ICSP for ATmega328 : 기존의 ATmega328P에 ICSP(In Circuit Serial Programming)를 위한 SPI 통신용 6핀 포트입니다. ICSP는 전통적으로 마이크로 컨트롤러에 직접 펌웨어를 프로그래밍하기 위해 마련된 것입니다.


ICSP for USB interface : 기존의 ATmega16U2에 ICSP(In Circuit Serial Programming)를 위한 SPI 통신용 6핀 포트입니다. 


TWI(I2C) 통신 : A0, A1 핀




Posted by Nature & Life


사용자는 무선송신기(Tx)를 이용하여 드론에 명령을 내리게 됩니다. 이때 전송된 신호는 주로 FM 통신 방식으로 드론에 장착된 수신기(Rx)에 전달되고, 수신기는 이 FM 신호로부터 각 채널의 신호를 뽑아 PWM 방식으로 비행제어기(FC)의 각 채널에 유선으로 보내집니다. 이런 식으로 국내의 수십 MHz 대역의 무선조종용 ISM(Industrial Scientific Medical) 주파수를 사용해 제한된 출력으로 허가 없이 사용하여 저렴한 비용으로 실현하였습니다.


최근에는 송수신시 드론의 다양한 상태, 예를 들어, 밧데리 소진으로 인한 저전압 등을 드론으로부터 조종자에게 보여질 수 있도록 양방향 통신의 필요성이 대두되었고, 이러한 기능은 종래 사용하던 주파수의 좁은 대역폭의 한계로, 종래에는 무선데이터통신시스템용 ISM 주파수인 2.4GHz 대역으로 옮겨가 PPM 방식이 주류가 되었다는 것입니다.


드론에서는 이와같은 Wireless 통신 방식이 점차 증가하였는데 일례로, 지상관제국(GCS)에서 설정한 경유지(waypoint)에 따라 순차적으로 비행하는 자동비행 모드나 드론에서 촬영된 항공 사진이나 동영상 혹은 기타의 정보를 전송받기 위해서 텔레메트리(telemetry)라는 통신 장치가 그것이라는 것입니다. 이들의 무선 통신 방식은 2.4GHz의 ISM 주파수로 블루투스(Bluetooth)와 지그비(Zigbee) 등이 있습니다.


블루투스와 지그비 통신 방식은 현재도 계속 진화하고 있으며 도달거리나 전송속도 등의 차이는 아래 표에서와 같이 비교하였습니다.



위와 같은 무선 통신 기술은 Bluetooth와 유사한 BLE, Zigbee와 유사한 Z-wave에 Wi-Fi(Wireless LAN)와 함께, 모두 2.4GHz의 ISM 주파수를 사용하는 근거리 무선 통신 기술들로 요즈음 사물인터넷 즉, IoT(Internet Of Things) 장비들을 묶어주는 역할을 하고 있다는 것입니다. 드론 조종의 특성상, 지그비가 통신거리가 가장 적합하고 2.4GHz 대역이 도달거리가 짧고 장애물에 취약하다는 점을 감안하면 드론이 시야에서 완전히 확보된 상태에서 조종해야 함을 유의해야 할 것입니다.  



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

CAN 통신이란?  (0) 2017.12.24
TWI(I2C) 통신이란?  (0) 2014.03.24
Posted by Nature & Life


ESC(electronic speed controller)를 설계할 때 왜 STM32가 유리한가요?


  • High side와 low side에 PWM이 automatic dead-time이 추가를 허용하는 일차적인 FET 제어기로서 TIM1을 사용할 수 있고 다른 이득 등을 제공합니다.

  • 저 비용의 개발 툴

In-Circuit Debugger/Programmer

  • 컴파일러로써 ARM GCC

  • SWD 프로그래밍/디버깅

  • I2C, CAN 지원

  • PWM 제어

  • 클럭 정밀도

정밀한 클럭은 일부 외장 오실레이터(oscillator) 타입을 요구합니다. STM32 내부 오실레이터의 정밀도는 1% 이내입니다. 이는 closed loop 실제 속도, PWM 주파수 정밀도 그리고 timing에 연관된 어떤 보고된 값들에 영향을 줍니다. 또한 이는 UART 최대 통신 속도에 어떤 밀접한 관계를 갖을 것입니다.

일차적인 클럭 속도는 72MHz의 외장 부품을 사용할 수 있지만 내부 오실레이터를 사용할 때 64MHz로 제한됩니다. 이는 64MHz에서 보드상에 프로세싱 파워가 충분하기 때문에 문제가 되질 않습니다.

  • UART

오픈 소스 커뮤너티에서 요구하는 것처럼 USART에 완전한 FTDI 접근을 합니다. 이를 사용하여 CLI(시리얼 터미널과 같은 Command Line Interface)가 구현될 수 있습니다.

  • 모든 FET 상에 게이트 저항

이는 FET turn-on 특성에 정밀한 제어를 할 수 있습니다. FET를 천천히 켜는 것(높은 게이트 저항)은 FET 상에 손실을 증가시킵니다. 그러나 전압 버스에 고주파 잡음을 엄청나게 줄일 수 있습니다. FET를 빠르게 켜는 것(낮은 게이트 저항)은 FET의 손실을 감소시키지만 전압 버스 상에 엄청난 잡음을 증가시킬 것입니다. 이것은 마이크로컨트롤러의 reset, 버스 커패시터 사이즈 그리고 다른 잡음 관련된 설계 결정 이슈에 큰 영향을 줍니다. Dead-time에 관련하여 너무 짧다면, 느린 FET는 실제로 위험할 수 있습니다.

  • 최근에 AVR 시리즈와 같이 STM32 시리즈도 Arduino 환경을 지원합니다.

  • 특히 Cortex M4 경우에 100% C 언어 프로그램이 가능합니다. 고성능의 high end 급의 소형 마이크로컨트롤러로 RISC, Pipeline 등의 구성으로 사실상 assembly 코딩이 불가능하지만, 다른 마이크로컨트롤로 달리 C 언어를 완벽하게 지원하여 assembly의 이해가 필요 없다는 것입니다. 기존의 마이크로컨트롤러는 C 언어를 지원하여도 최상의 성능을 위해서는 assembly 코딩이 불가피하지만 Cortex M4는 의미가 없으며 C 언어에서 지원하지 않은 명령어에 대해서는 intrinsic 함수로 assembly 코드로 1:1 변환하며, 디버깅 시에 C 언어 소스 코드가 의도한 assembly 코드로 올바르게 컴파일 되었는지 확인할 수 있는 정도의 assembly 언어 지식이 요구됩니다.



'Embedded Programming > STM32 Cortex-M4' 카테고리의 다른 글

STM32 MCU 누클레오 보드  (0) 2018.01.12
Discovery vs. Nucleo board  (1) 2018.01.11
STM32F4 시리즈의 소자 구별 방법  (0) 2018.01.03
STM32F405xx 스펙 요약  (0) 2017.11.17
AVR vs. STM32 comparison for Drone  (0) 2015.12.04
Posted by Nature & Life
Radio Control/ESC2014. 4. 7. 21:03

 

 

다음은 Wii-ESC에 대한 FAQ입니다.

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

 

Introduction

This page is collection of answers from different forums and threads. Main intention is to collect knowelege base here and than transform it to proper documentation later on.

이 페이지는 다른 포럼이나 글들에서 대답을 정리한 것입니다. 주된 목적은 여기에 기본 지식을 정리하고 나중에 적절한 문서 형태로 전환할 것입니다.

 

Q: What is the difference (meaning of) RCP_MAX and RCP_FULL?

RCP_MAX와 RCP_FULL의 [의미상] 차이는 무엇인지요?

 

RCP_MIN/RCP_MAX - valid range, everything outside is rejected ( 유효한 범위, 이외의 모든 것은 무시됩니다)
RCP_START - where to start (with min. power) (최소 파워인 시작 지점)
RCP_FULL - where to have full power (최대 파워를 갖는 지점)
RCP_DEADBAND - deadband for startup (초기의 데드밴드)

 

Q: Do you have a link to compile/flashing instructions for v2

v2에 대한 컴파일 및 프로그래밍 설명서에 대한 링크가 있는지요?

 

The easiest way to build (빌드하기에 가장 쉬운 방법) :

Download Code::Blocks (in downloads) (CodeBlocks을 다운로드합니다)
Open project wii-esc-ng.cbp (wii-esc-ng.cbp를 'Open project'로 열기합니다)
Setup path to avr-gcc in Code::Blocks (CodeBlocks에 avr-gcc 경로를 설정합니다)

 

Q: I did notice on an MT3506 and a Turnigy/Keda 2213 1050KV motor that the throttle seems to have some bumps, with either normal or complementary PWM.

MT3506과 Turnigy/Keda 2213 1050KV 모터에서 정상 모드 혹은 complementary PWM 모드에서 스로틀에 'bump' 현상을 있는 것으로 압니다.

 

 

 

I would guess you have BEMF filter caps still in place. It does not like them any more

여러분의 ESC에 BEMF 신호의 필터링을 위한 cap이 부착되어 있는 것으로 압니다. 그 cap을 제거해야 합니다.

 

Q: What is Sigma-Delta modulation and how such resolution is archived with /8 timer pre-scaler?

무엇이 Sigma-Delta 변조이며 어떻게 그러한 분해능이 8 timer pre-scaler 없이 구현될 수 있는지요?

 

Generally concept is simple: http://en.wikipedia.org/wiki/Pulse-density_modulation. So, there are 1 bit first order SDM. Due the fact that it has integrator, it is not necessary to sample it precisely. It even benefitial to add some noise to the sampling. So SDM generation scheduled as Idle task using prothothreads, without any timer or interrupt. This also allows to naturally sync SDM generation and Analogue comparator sampling. Qantizer value can be any as soon as the integrator not overflowing. So currently all measured range passed directly to the SDM without any transformation, which is ~4000 points with extended range, 1600 with standard one.

일반적인 개념은 간단합니다: http://en.wikipedia.org/wiki/Pulse-density_modulation. 1-bit 1st order SDM입니다. 이것은 적분기를 가지고 있기 때문에 그것을 정밀하게 샘플링할 필요가 없습니다. 이것은 결국 샘플링 노이즈를 추가하는 격입니다. 그래서 prothothreads를 사용하여 Idle task로 어떤 타이머나 인터럽트 없이 SDM 생성이 스케줄링합니다. 이것은 또한 동기화된 SDM 생성과 아날로그 비교기 샘플링을 허용합니다. 양자화 값은 overflow가 되지 않은 어떤 값이 될 수 있습니다. 그러므로 현재 모든 측정된 범위는 어떤 변환없이 SDM으로 곧바로 전달되고 표준의 1600이 아닌 약 4000 포인트의 확장된 범위를 갖습니다.

 

Benefits of this approach :

  • Lower switching losses as FET's have enough time to properly open/close (currently min on/off ~4us) (FET가 적절히 열리고 닫히기 위한 충분한 시간(현재 최소 ~4us의 on/off 시간)을 가질 때 낮은 스위칭 손실을 갖습니다)

  • More linear power curve by the same reason. (동일한 이유로 좀 더 선형적인 파워 커브를 갖습니다)

  • Lower noise in working range. Yes, the base frequency drops to 1khz at 99.99% but it is not really critical as commutation noises are much higher there. (동작영역에서 잡음 수준이 낮습니다. 기본 주파수는 99.99%에서 1khz인데 commutation 잡음이 휠씬 높기 때문에 실제로 중요하지는 않습니다)

 

Q: What is done to increase dynamic response of the system?

무엇이 시스템의 동적 응답 특성을 증가시켰나요?

 

Yes I have 7.5° blanking time and 2 taps FIR instead of IIR for timing. 2 taps FIR still needed because ZC detection in LH and HL transitions is not symmetrical. (7.5° blanking time과 IIR 대신에 2-tap FIR 필터를 가지며 2-tap FIR 필터는 LH 그리고 HL 천이에서 ZC 감지가 대칭적이지 않기 때문에 여전히 필요합니다)

 

Q: How Can I activate complimentary PWM during compilation?

어떻게 컴파일 동안에 complimentary PWM을 적용할 수 있는지요?

 

Add "#define COMP_PWM" in config.h (config.h에서 "#define COMP_PWM"을 추가합니다)

 

Q: hi ziss.. im interested in wii-esc fws.. and would be interested to know what is the downside of wii-esc?

무엇이 Wii-ESC 펌웨어의 단점인지요?

 

Bright side (장점):

1. up to 4000 steps of resolution.
2. low noise with comparatively high efficiency (Sigma-delta modulator, instead of fixed frequency PWM)
3. linear power response. (completely no "bump" at 100%)
4. Sync recovery.
5. Safe stall detection.
6. Complimentary PWM support

 

Dark side (단점):
1. no EPA, throttle endpoints are fixed.
2. no reverse
3. probably lower max RPM.
4. require removing BEMF capacitors.

 

Q: What is better for BS20A wii-esc Complementary or Low side PWM?

BS20A ESC에서 wii-esc 펌웨어의 Complementary PWM과 Low side PWM 중에 어떤 것이 좋은지요?

 

Short answer: Complimentary PWM allows faster rotor deceleration, putting energy back to the battery. (Complimentary PWM은 에너지를 밧데리 다시 보내 빠른 로터 감속이 가능합니다)

Long answer: This has an interesting effect of having the motor speed more closely and more quickly track the duty cycle even without any active braking or closed-loop controlling. (이것은 모터 속도가 어떤 브레이크나 폐회로 제어가 없을 때 조차도 duty 사이클을 좀 더 근접하고 빠르게 따라가는 흥미있는 효과를 갖습니다)

 

 

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

RapidESC FAQ's  (0) 2014.06.11
RapidESC Flashing  (0) 2014.06.03
RapidESC란?  (0) 2014.05.26
Wii-ESC 프로젝트의 소개입니다  (0) 2014.04.04
Wii-ESC란?  (0) 2014.03.13
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