AVR for Arduino/Atmel MCU
AVR 코딩에 대한 이해가 필요해서 아래와 같이 정리를 했다. 1. AVR이란 Atmel에서 개발한 MCU의 등록 상표인데, 아두이노 우노 보드에 쓰여서 많이 쓰이고 있다. 2. 아두이노는 Atmel의 MCU를 메인 프로세서로 사용하고, 언어 특성은 C/C++ 이다. 하지만 AVR 코딩 특성을 일부 반영하여서 아두이노 보드를 고속으로 동작시킬 수 있다. 3. 즉 아두이노에서 사용되는 명령어 세트들은 아두이노 보드를 보다 고속으로 작동시킬 수 있도록 AVR 수준 내지는 어셈블리어 형태에 가까운 특별한 명령어들이 사용된다. 그래서 외부로부터의 인터럽트 처리과정 (ISR)과 각 핀들의 입출력 모드 설정 (pinMode) 및 입출력에 해당하는 명령어를 혼합 사용하여 아두이노 보드의 연산 속도를 끌어올릴 수 있다. 4. 핀 모드 설정 방식 - pinMode(pin#, OUTPUT); pinMode(pin#, INPUT); - PORT 아두이노 우노 보드의 PIN PORT는 아래와 같이 정의된다. - PORTD: Digital pin 0~7 - PD0 ~ PD7 - PORTB: Digital pin 8~13 - PB0 ~ PB5 - 이렇게 PORTD, PORTB로 정의된 것은 C/C++에서 정의되는 것이 아니라, AVR에서 정의한 것이다. 5. 아두이노의 핀맵을 살펴보면서 설정을 어떻게 하는 지 보자. Arduino UNO Pin Map 위의 아두이노 핀맵에서 Digital Pin으로 설정된 0 ~ 13을 사용하려면, 4번의 방법으로 pinMode(pin, args)으로 미리 설정해주어야 한다. 참고로 이 pinMode는 "Arduino.h"에서 정의되어 이용이 가능한 것이다. 혹은 PORTD, PORTB를 이용해서 설정할 수도 있다. 참고로 이 PORTD, PORTB, DDRD, DDRB는 AVR에서 정의되는 ...