06.05.2015 Views

ATMEGA 2560 개발키트 사용기

ATMEGA 2560 개발키트 사용기

ATMEGA 2560 개발키트 사용기

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

NTC Atmega<strong>2560</strong> 개발 키트 사용기<br />

1. 개발 키트의 구성<br />

2010, 04, 알피공(최진영)<br />

NTC 제품의 테스트 선정 된 후 택배로 온 박스를 열어 보았다. 박스에는 예전에도 보았던<br />

NTC의 보라색 박스에 담긴 “KD-<strong>2560</strong>PRO V01” ATEMGA<strong>2560</strong> 개발 키트(이하 개발 키트),<br />

그리고 정전기 방지 재질로 된 봉지에 담긴 AB-E<strong>2560</strong> 확장 보드를 볼 수 있다. 개발 키트<br />

는 다음과 같은 구성으로 되어 있다.<br />

MCU 모듈 :: AM-<strong>2560</strong>Pro V01<br />

메인 보드 :: AB-M<strong>2560</strong><br />

USB ISP ::<br />

이 외에는<br />

SMPS 12V, 1A<br />

MCU 모듈과 PC의 시리얼 통신을 위한 SE-3T9 시리얼 통신 케이블<br />

확장 보드 연결을 위한 SE-2X520 케이블 3개<br />

예제와 각종 자료가 들어 있는 CD 롬<br />

우선 박스를 열었을 때 한가지 아쉬운 것은 이 패키지에 포함된 물품의 리스트가 없었다는<br />

것이다. 비록 CD 안의 개발 키트 설명서를 보면 물품의 목록을 확인할 수 있다. 하지만 박<br />

스를 열었을 때 즉시 내용물을 확인할 수 있도록 종이로 된 물품 리스트를 포함하거나 박스<br />

외부에 스티커로 부착하는 것이 좋을 것 같다.<br />

이 글에서는 이 개발 키트의 주인공이라고 할 수 있는 MCU 모듈(AM-<strong>2560</strong>Pro V01), 그리고<br />

이 주인공을 빛나게 해주는 조연들인 메인 보드(AB-M<strong>2560</strong>), 그리고 별도로 포함된 만능기<br />

판용 확장보드에 대해서 살펴보고, 개발에 필수 품인 USB-ISP와 이 개발 키트를 최대한 활<br />

용할 수 있게 해주는 자료(소프트웨어, 소스 코드, 문서)가 들어 있는 CD에 대해서 살펴보<br />

았다.<br />

2. MCU 모듈 AM-<strong>2560</strong>Pro V01<br />

MCU 모듈에 사용된 커넥터는 쉽게 구할 수 있는 2.54mm(100mil) 간격이 아닌 2mm 간격<br />

의 커넥터를 이용해서 메인 기판에 부착할 수 있도록 되어 있다. 이 커넥터를 사용하기로<br />

결정하는 과정에서 상당히 많은 고민을 했으리라 생각한다. 전자 부품을 구하기 위해서 발<br />

1/9 페이지


품을 팔고, 인터넷을 뒤져온 사용자라면 2.54mm 간격이 아닌 2.0mm 간격의 커넥터와 원하<br />

는 크기의 만능보드를 구하는 쉽지 않다는 것을 알 수 있다.<br />

그러면 왜 MCU 모듈에서 2mm 간격의 커넥터를 이용했을까? 라는 생각을 해보면 이<br />

Atmeag<strong>2560</strong>의 너무나도 많은 다리(100개) 때문이라는 답을 얻을 수 있다. Atmega<strong>2560</strong>은 그<br />

많은 기능에 걸맞은(?) 100개라는 다리 수를 자랑하고 있다. 2.54mm 간격의 커넥터를 사용하<br />

게 되면 그 크기가 커져야 한다. 예전 4개의 UART를 이용하기 위해서 구입했던 A사의<br />

Atmega<strong>2560</strong> 개발 보드와 NTC의 제품을 비교한 사진이다.<br />

이렇게 보니 확실히 보드의 크기가 줄어든 것을 볼 수 있다. 하지만 여전히 다른 사용자들<br />

은 만능기판에서 이 MCU 모듈을 사용할 수 없다는 결점을 지적할 지 모른다. 하지만 이렇<br />

게 100 핀이나 되는 MCU를 위한 MCU 모듈을 한번이라도 만능기판에서 사용하기 위해 납<br />

땜을 해 본 사용자라면 납땜을 하다가 지쳐서라도 이런 MCU 모듈을 만능기판에서 사용하<br />

는 것이 쉽지 않다는 것을 느끼게 될 것이다.<br />

NTC의 MCU 모듈의 장점은 MCU 모듈에 PC와 시리얼 통신을 위한 MAX3232라는 전압<br />

레벨 변환 IC를 부착한 것이다. NTC의 MCU 모듈은 PC와의 통신을 위해서 매번 MAX232<br />

와 같은 IC를 납땜해서 사용해야 한다는 불편함을 없애 준 것이다. 이 하나만을 보더라도<br />

사용자를 위해서 많은 배려를 했다는 것을 알 수 있다. 또한 MAX3232를 사용함으로써<br />

3.3V를 사용하는 경우도 대비하였다는 것이다.<br />

하지만 이 MCU 모듈의 PCB에는 실크 인쇄에 한가지 실수가 있다. Atmega<strong>2560</strong>과 Pin-to-<br />

Pin 호환인 Atmega1280을 이 MCU 보드에서도 사용할 수 있으므로 사용된 MCU에 따라서<br />

2/9 페이지


MCU 모듈의 모듈명을 표시하기 위해서 “AM-1280” 과 “AM-<strong>2560</strong>” 라고 둘 다 적은 뒤 한<br />

개에 선택해서 체크를 해야 하는데, 실수로 둘 다 “AM-1280”로 적은 것이다. 물론 AVR의<br />

모델명을 보면 확인할 수 있지만 제품을 포장할 때, 그리고 소비자가 잘못 보면 오해를 할<br />

수 있으므로 이 후에는 수정되어야 할 것이다.<br />

3. 메인 보드 AB-M<strong>2560</strong><br />

예전에 NTC의 제품을 사용할 때 다른 회사의 제품에 비교해서 차별성을 가지는 것이<br />

ATmega128의 PORT G를 제외한 AVR의 대부분의 포트를 10핀 HIF 커넥터를 이용해서 연<br />

결할 수 있도록 했다는 것이다. 물론 같은 커넥터를 이용하여 연결할 수 있는 LED, 스위치,<br />

스텝 모터 컨트롤러 등 다양한 확장보드를 제공함으로써 사용자들이 최대한 편하게 개발 할<br />

수 있도록 하고 있다.<br />

NTC의 개발보드는 예전의 Atmega128을 위한 개발 보드에서부터 사용한 이 10핀 커넥터를<br />

위한 확장기능이 본인이 보기에는 일반 사용자를 상당히 많이 고려한 것이라고 생각한다.<br />

개발 연습을 위한 대부분의 주변기기를 하나의 보드에 다 포함시킨 개발 키트의 경우 그 가<br />

격이 30에서 70만원까지 형성되어 있기 때문에 초보 및 일반 사용자들이 그 장비를 구입하<br />

는 것이 쉽지 않다.<br />

초보에서 중급자는 참으로 단순한 기능들, 즉 LED 몇 개, 또는 스위치 몇 개, 또는 LED와<br />

스위치, 아니면 스위치와 Text LCD라는 간단한 주변 장치들로도 어느 정도의 실습이 가능하<br />

며, 이런 실습을 통해서 원하지 않는 주변 장치들이 잔뜩 붙어 있는 개발 장비를 구입하는<br />

것 보다 필요한 외부 장비만 구입할 수 있다면, 그것도 쉽게 연결할 수 있다면 많은 도움이<br />

된다.<br />

여기 잠시 한가지 생각 해 볼 것은 LCD와 같은 8비트 데이터 버스를 가지는 외부 장비들<br />

을 메모리 매핑 방식으로 하나의 키트로 구성하는 방식에 대해서이다. 왜 이렇게 구성을 했<br />

을까? 이런 메모리 매핑 방식으로 회로를 구성해서 사용할 경우 개인이 주변기기를 연결하<br />

기 위해서는 많은 배선을 해야 하는데, 이 때 메인 회로의 수정이 불가피 함으로써 처음부<br />

터 많은 주변기기가 달려 있어야만 한다. AVR과 같이 손쉽게 GPIO를 통한 확장이 쉽지 않<br />

다는 것이다.<br />

이런 방식의 개발 키트는 본인이 보기에는 MCU 내부에 충분한 ROM과 RAM을 가지지 못<br />

한 MCS-51을 이용한 개발 키트에서부터 시작되었다고 생각한다. 8051과 함께 이 당시 사용<br />

되던 외부의 IC들은 거의 8비트의 정보를 칩 선택, 읽기, 쓰기를 제어하는 신호와 함께<br />

ROM과 RAM이 외부에 있으므로 메모리 매핑 방식으로 설계해서 사용하였다.<br />

하지만 언젠가부터 한국의 마이크로 컨트롤러 시장에 자리잡기 시작한 AVR 시리즈의 대표<br />

3/9 페이지


적인 Atmega128은 대부분의 적용에서 충분 한 크기의 내장 ROM과 RAM, 그리고 UART등<br />

과 같은 페리페랄(pheripheral)을 내장하였으며, ISP를 기본적으로 가지고 있으므로 괜히 번<br />

거롭게 주변에 많은 IC를 가진 개발 키트가 필요 없게 된 것이다. 즉 필요에 따라서 주변<br />

장치를 추가하더라도 RAM과 ROM을 내장한 Atmega128과 Atmega<strong>2560</strong>등은 GPIO가 넉넉<br />

한 것이다.<br />

이와 같이 AVR을 위한 개발키트는 많은 주변기기를 하나의 보드에 포함시켜 두어서 제품<br />

을 구입하는데 많은 비용을 들이고 이 후 재활용도 힘든 all-in-one 형식의 개발 키트 보다<br />

는 NTC에서 만든 것과 같이 통일된 연결(확장) 커넥터를 가지는 이 AB-M<strong>2560</strong>과 같은 개발<br />

키트가 Atmega 시리즈의 특징을 백분 활용하면서도 초보자부터 중급 사용자에게는 많은<br />

도움이 되리라고 생각한다.<br />

예전의 AB-M128과 AB-M<strong>2560</strong>의 크기를 비교한 사진을 아래에 보인다. 이번의 AB-M<strong>2560</strong>의<br />

경우 메인 보드에 아무런 주변기기가 없다는 것을 볼 수 있는데, 이것은 보드의 크기를 줄<br />

이며, 가격 경쟁력과 함께 사용자가 주변장치를 원하는 것만 사용할 수 있는 장점을 가지고<br />

있다.<br />

그리고 이 메인 보드에는 역시나 기대를 저버리지 않고 보드에 공급 되는 외부 전원을 그대<br />

로 다른 보드에서 사용하기 쉬운 커넥터가 이번에도 여전히 있으며, 거기다 2개라는 것이<br />

4/9 페이지


더욱 마음에 든다. AVR MCU가 기본적으로 5V에서 동작하지만 전원 장치는 9~12V의 전압<br />

을 내보내는 어댑터를 사용하는 경우가 많다. 여태까지의 경험으로 디지털 회로만을 구성한<br />

다면 5V의 전원만 있으면 충분하지만 아나로그 회로, 또는 모터 구동 등을 위해서 12V 정<br />

도의 전원이 필요한 경우가 종종 있었다. 이 경우 원래의 어댑터를 개발 보드에 연결하고,<br />

별도의 어댑터를 이용해서 12V 전원을 공급하거나 개발 보드의 전원 입력 부분에서 병렬로<br />

선을 연결해서 필요한 전원을 공급하는 번거로움이 있었다.<br />

하지만 입력 되는 전원을 병렬로 2개의 LWL0640-02 커넥터에 연결 해 놓았기에 이런 저런<br />

시도를 하기 좋아하는 개발자들이 납땜을 하지 않고서도 쉽게 12V 정도의 전원을 사용하며<br />

스위치 하나로 같이 전원을 조절 할 수 있게 해 준다. 하지만 이 LWL0640-02 커넥터는 핀<br />

이 외부로 노출 되어 있어서 사용하지 않는 커넥터는 사용자가 12V 전원을 넣고 작업 중<br />

실수로 전원 핀 두 개를 쇼트 시킬 수 있다는 위험이 있는데 이 부분은 조금 개선이 필요할<br />

것으로 생각된다. 특히 이번에 공급되는 전원장치가 어댑터가 아닌 12V 1A SMPS 이기 때문<br />

에 전원핀의 쇼트가 거의 일어날 일이 없다고는 생각하지만 조금은 걱정 되는 부분이었다.<br />

하지만 이번의 AB-M<strong>2560</strong> 메인 보드에서는 이런 경우에 대비해서 퓨즈를 회로에 추가한 것<br />

또한 NTC의 사용자를 위한 세심한 배려를 엿볼 수 있는 부분이다. 그러나 이 퓨즈가 SMD<br />

부품이고 납땜하기 쉽지 않은 장소에 위치해서 쉽게 교체할 수 없다는 것은 옥의 티라고 할<br />

수 있다. 이 후 이 AB-M<strong>2560</strong> 보드의 다음 버전에서는 최소한 퓨즈를 교체하기 쉽도록 보드<br />

의 외각으로 배치 시키면 좋을 것이라 생각한다.<br />

또 한가지 이 메인보드에서 개선해야 할 것으로 JTAG, PORT A 과 같은 각 10핀 커넥터의<br />

이름을 더 크게 인쇄하고 위치도 커넥터의 오른쪽 또는 왼쪽에 위치 시킨다면 한눈에 커넥<br />

터의 용도를 알아보기 쉬울 것으로 생각된다.<br />

5. 그 외의 내용물에 대해서<br />

USB-ISP<br />

이 개발 키트에는 처음 사용자가 반드시 구입해야 하는 ISP, 그것도 시리얼 포트가 거의 사<br />

라진 요즘 컴퓨터들에서 사용하기 편한 USB-ISP를 포함되어 있다. 이것은 가격을 낮추기 위<br />

해서 저가의 병렬 포트 연결용, 혹은 시리얼 포트 연결용의 ISP를 포함시키지 않았다는 것<br />

이다. 사용하다 보면 결국에는 통합 환경을 구성하기 위해서나 프로그램 다운로드 속도를<br />

높이기 위해서, 시리얼 포트와 병렬포트가 없어서 USB-ISP를 구입하게 되는 소비자에게 이<br />

중 지출을 피하게 해 주는 NTC의 정책이라고 생각되며, 이 정책에 대해서는 본인도 깊이<br />

공감하는 바이다.<br />

SMPS<br />

5/9 페이지


이 개발 키트에는 12V 1A의 SMPS가 포함되어 있다. 1A라는 전류는 백라이트 용으로<br />

100~300mA 정도까지 소비하는 CLCD나 GLCD를 하나가 아니고 2-3개 연결하더라도 무리<br />

없이 사용할 수 있으므로 초보자가 실수로라도 전류가 모자라서 제대로 동작하지 않는 것을<br />

어느 정도 막아 줄 것으로 생각된다.<br />

데이터 CD<br />

CD는 다음과 같은 디렉토리 구성으로 되어 있다. 예제 소스(Example_source)와 NTC의 제<br />

품 매뉴얼, 유틸리티 프로그램 등 약 470개의 폴더와 파일들이 있지만 그림에서는 지면상<br />

생략하였다.<br />

제품에 대한 자료와 함께 많은 소스 코드를 다 포함시켜 두었기에 사용자가 홈페이지에서<br />

소스 코드를 찾는 수고를 덜어 주고 있다. 하지만 이번 키트에 포함된 USB-ISP인 “AD-USB-<br />

ISP V03” 에 대한 사용자 설명서가 없다는 점, AD-USBISP V02와 AD-USB-UART V02제품의<br />

자료를 저장하는 폴더에 사용할 수도 없는 크기가 0 바이트인 USBISP_V01.exe 라는 이름의<br />

파일이 들어 있는 것이 조금 거슬린다. 이것은 이후 이 자료 시디를 새로 만들 때에는 수정<br />

되어야 할 부분이다.<br />

예제 소스들은 초보자라면 반드시 한번씩 해 봄으로써 AVR의 기능을 익힐 수 있는 유용한<br />

예제들이 많으므로 초보라면 반드시 소스들을 한번씩은 분석해 보는 것이 좋을 것이라고 생<br />

각된다. 그러나 예제 소스의 초기화 루틴을 보면 예전의 Atmega128을 위한 소스를<br />

Atmega<strong>2560</strong>을 위해서 수정하는 과정에서 실수가 하나 보인다. 즉 Atmega128에는 M103 호<br />

환모드가 있으며 이 때는 PORTC 가 입력으로만 동작하게 된다. 이 때를 위해서 포트의 초<br />

기화 함수인 port_init()에 “//m103 output only” 라는 주석을 붙였으나 Atmega<strong>2560</strong>에는 이<br />

호환 모드가 없으므로 이 AB-M<strong>2560</strong>키트를 위한 CD로 제작할 경우 각 소스의 포트 초기화<br />

6/9 페이지


부분에 있는 이 주석들을 삭제를 하는 것이 초보자들의 오해를 낳지 않아서 좋을 듯 하다.<br />

그리고 또 한가지 아쉬운 점은 이 Atmega<strong>2560</strong>을 위한 개발 키트를 위한 시디라는 조건을<br />

충족하기 위한 예제 소스로 반드시 추가해야만 하는 예제가 빠져있다는 것이다. Atmea<strong>2560</strong><br />

을 선택하는 이유 중의 하나가 4개의 UART를 쉽게 사용할 수 있다는 장점인데, 이 4개의<br />

UART를 사용하는 예제가 빠진 것이다. 어느 정도 실력이 있는 사용자가 이 키트를 사용한<br />

다면 데이터시트를 뒤져서 직접 작성하겠지만 이런 제품들은 늘 다양한 사용자를 염두에 두<br />

고서 이런 예제들을 작성하는 것이 좋을 것이라 생각한다.<br />

마지막으로 한가지 바라는 것이 있다면 시디에 포함된 소스 코드들은 전부 ImageCraft사의<br />

ICC AVR 컴파일러를 위한 소스이지만, 언젠가는 AVR Studio 와 WinAVR의 조합을 이용해<br />

서 사용하는 사용자들을 위한 소스도 제공한다면 초보자들에게는 도움이 되리라 생각한다.<br />

그리고 이 개발 키트에 포함된 CD를 보면 또 한가지 제품의 전체적인 완성도를 높이기 위<br />

한 NTC의 노력을 볼 수 있다. 이번의 테스트에서만 사용하는 지는 모르겠지만 CD 표면에<br />

직접 글자와 이미지를 기록할 수 있는 LightScribe CDR 미디어를 사용한 것이다. 이 라이트<br />

스크라이브를 이용해서 이런 개발 키트를 위한 CD를 제작하게 되면 CD를 제작하는 비용은<br />

조금 더 들겠지만 앞으로 이 CD의 내용을 업데이트 해 가면서도 개발 키트를 위한 CD라는<br />

정보를 멋있게 표시 하기 위해서 라이트 스크라이브 시디를 사용한 NTC의 결정을 존중한<br />

다.<br />

6. 테스트 프로그램 작성 및 동작<br />

개발 소프트웨어<br />

본인이 사용하는 AVR용의 개발 툴은 다음과 같다.<br />

• AVR Studio 4.18 + Service Pack 1<br />

• WinAVR 2010-01-10<br />

• Procyon Library<br />

LED 켜보기<br />

처음에는 개발 키트를 이용해서 LCD와 함께, 8개의 LED를 구동하는 간단한 회로를 구성하<br />

고 프로그램을 작성해보기로 하였다. 예전에 NTC의 AB- M128Pro-A 를 이용한 스터디를 할<br />

때 참석하신 분의 도움으로 만든 8개의 LED 보드와 손으로 만든 4개의 LED가 붙은 보드를<br />

개발키트에 연결한 후 전원을 넣었다. 그런데 전원을 넣는 순간 자동으로 모든 GPIO에서 8<br />

개의 LED가 하나씩 켜지고 마지막에는 전체 LED를 켰다가 끄는 동작을 반복하는 것이었다.<br />

제품의 동작 테스트를 위한 프로그램이 내부에 들어 있었던 것이다. 처음 전원을 넣었을 때<br />

7/9 페이지


LED가 동작하는 것을 다음의 사진에 보인다.<br />

그러면 처음 하고자 했던 테스트는 다음의 단계에서 같이 하기로 하였다.<br />

LCD와 ADC를 이용하는 테스트<br />

ADC 기능을 이용해서 Sharp GP2012 센서에서 나오는 전압을 LCD에 표시하는 프로그램을<br />

작성해서 동작 시켜 보았다. 이 프로그램은 역시 예전의 스터디를 위해서 작성한 프로그램<br />

을 편집한 것이다.<br />

예전의 보드에 사용하던 보드들을 케이블을 이용해서 연결 하는 것으로 전체 회로 구성을<br />

끝내었다. 좌측에는 CLCD 연결을 위해 자작한 보드와 20x4 LCD, 가운데는 AB-M<strong>2560</strong>와<br />

LED 보드, 오른쪽은 ADC와 함께 Low Pas Filter를 실험하기 위해 자작한 보드에 Sharp의<br />

GP2012 센서를 연결 하였다. LCD에는 GP2012 센서에서 나오는 전압을 10비트와 8비트<br />

ADC를 이용해서 변환한 값을 보이고 있다.<br />

예전에는 이렇게 ADC, LCD, LED 등을 한번에 이용하기에는 개발 보드의 커넥터가 부족한<br />

느낌이 들었으나 이 AB-M<strong>2560</strong>에서는 사진에서 볼 수 있듯이 아직도 7개의 포트가 남아 있<br />

8/9 페이지


어서 원하는 장치를 더 붙일 수 있는 것이 마음에 든다.<br />

7. 마치면서<br />

이번에 운 좋게도 NTC사의 Atemga<strong>2560</strong>을 위한 개발 키트의 테스터로 뽑혀서 제품을 사용<br />

해 볼 수 있었다. 앞서 살펴본 바와 같이 MCU 모듈의 구성과 설계, 메인보드를 설계하는데<br />

있어서 늘 빠질 수 없는 가격을 고려한 최소 구성요소, 사용자를 고려한 확장성 등을 다년<br />

간의 MCU 개발 키트 개발과 판매 경험을 바탕으로 구성한 NTC의 MCU 모듈 AM-<strong>2560</strong>와<br />

메인보드 AB-M<strong>2560</strong>로 구성된 개발키트의 장점들을 다시 한번 확인하면서 이 테스트를 마<br />

무리 하고자 합니다.<br />

이상으로 사용기를 마칩니다.<br />

9/9 페이지

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!