1970년대 말에 마이크로프로세가 등장한 이후로 현대 사회는 가전제품에서 개인용 휴대 기기와 로봇 제어기, 무선 통신 기기 등의 첨단 분야에 이르기까지 마이크로프로세서를 내장한 임베디드 마이크로컨트롤러의 사용이 필수적으로 되었다.
최근 마이크로컨트롤러 기술은 각종 제품의 융합화, 고기능화에 따라 점차로 다양한 기능을 내장한 임베디드 마이크로컨트롤러가 요구되고 있으며 USB, CAN, ZigBee 등과 같은 시스템의 분산화 추세에 따라 마이크로컨트롤러의 활용 범위가 매우 다양해지고 있는 실정이다.
현재 출시되고 있는 8비트의 마이크로컨트롤러는 인텔사의 8051 계열, 마이크로칩스 테크놀로지사의 PIC 계열과 아트멜사의 AVR 계열의 MCU 등이 대표적이지만, 이 중에서도 AVR 계열은 8051이나 PIC 계열에 비해 플래시 메모리를 내장하여 ISP 기능을 제공한다는 장점과, 시스템 개발자의 욕구에 맞는 다양한 기능을 내장하고 다양한 소자가 출시되고 있기 때문에, 가전제품이나 완구, 유무선 통신 제품과 기타 소형 시스템에 적합하다는 인식이 고조되면서 현재 가장 보편적으로 사용되고 있는 상황이다.
따라서 AVR 계열에 대한 이론적 지식, 프로그램 작성 기법과 이를 활용한 각종 시스템 구현 기술은 전자, 컴퓨터, 정보 통신 및 멀티미디어 분야에 종사하는 개발자에게는 필수적이라 할 수 있다.
AVR 마이크로컨트롤러의 동작 원리와 제어 방법을 쉽게 터득할 수 있는 방법은 현재까지의 실무와 강의 경험을 토대로 생각하여 볼 때, 사용자가 직접 보드를 설계/제작하고, 제작된 보드에 간단한 제어 프로그램을 작성하여 구동하여 보는 것이다.
따라서 본 교재에서는 AVR 마이크로컨트롤러 중에서 현재 광범위하게 사용되고 있고, 쉽게 평가 보드를 구할 수 있는 ATmega128을 중심으로 내부 하드웨어 구성과 이를 활용하여 보드 설계 과정을 설명하고, AVR에 내장된 모든 기능을 프로그램 작성 과정을 통해 직접 확인하고, 다양한 시스템의 개발에 필요한 기초 지식을 독자들에게 전달하여 개발 현장에서 실무 활용에 도움이 될 수 있는 내용을 다루고 있다.
이러한 AVR 마이크로컨트롤러에 대한 기초 지식과 실무 지식을 배양하기 위하여, 본 교재에서는 1장과 2장에서는 마이크로컨트롤러와 AVR의 개요에 대해 설명하였으며, 3장에서는 AVR을 사용하여 하드웨어를 설계하기 위한 과정, 4장과 5장에서는 제작된 보드를 사용하기 위한 개발환경을 각각 다루었으며, 6장에서 13장까지는 AVR에 내장되어 있는 기능을 확인하고 활용하기 위한 과정을 다루었다.
본 교재는 전체를 13장으로 구성하고, 각 장에서는 AVR의 실제 활용을 위하여 AVR의 기본 기능을 자세히 설명하고, 이를 제어하는 프로그램의 작성법을 설명함과 동시에 해당 예제를 제시하여 AVR의 기능을 보다 쉽게 이해하고 제어할 수 있는 방법을 터득할 수 있도록 프로그램 작성 방법을 자세히 설명하였다.
본 교재의 주요 특징과 내용을 살펴보면 다음과 같다.
AVR에 내장된 기능을 초보자가 이해할 수 있도록 자세히 설명함.
AVR에 내장된 기능을 확인할 수 있도록 예제 작성 과정을 자세히 설명함.
프로그램의 다양한 작성 방법의 습득을 위해 '참고사항'을 두어 설명함.
매 장마다 다양한 예제를 수록하고, 이를 활용하여 프로그램을 활용할 수 있도록 연습 문제를 제시함.
마이크로컨트롤러에서 사용되는 용어를 일목요연하게 정리하여 수록함.
AVR의 개발에 필요한 데이터 시트, 응용 노트, 개발자 정보와 매 장의 프로그램의 소스와 실행 파일 등에 대한 정보는 웹 사이트에서 다운로드 가능함.
프로그램의 작성을 돕기 위해 컴파일러에서 제공되는 함수 및 AVR의 I/O 레지스터를 정리하여 부록에 수록함.
1장에서는 AVR 마이크로컨트롤러를 학습하기 전에 독자가 알아야 하는 기초적인 용어를 설명한다.
2장에서는 AVR 마이크로컨트롤러의 종류와 내부 구조 및 기능에 대한 기본적인 사항에 대해 설명한다.
3장에서는 AVR 마이크로컨트롤러의 회로를 제작하기 위한 기본적인 하드웨어 설계 방법과 이의 활용을 위한 방법에 대해 자세히 설명한다.
4장에서는 설계된 교육용 보드의 운영을 위해 C언어 컴파일러인 CodeVision에서 구현된 C언어 확장 기법 및 C언어 기초에 대해 자세히 설명한다.
5장에서는 제작된 교육용 보드의 운영을 위해 C언어 개발 환경 및 디버깅 환경에 대해 설명하고, 이 환경에서의 실험용 보드의 실제 동작 방법에 대해 설명한다. 여기에는 실험용 보드의 플래시 메모리로 다운로드되는 인텔 16진 파일의 분석에 대해 추가적으로 설명이 되어 있다.
6장에서 9장까지는 AVR 마이크로컨트롤러에 내장된 기능인 I/O 포트, 인터럽트와 8비트/16비껆 타이머/카운터의 기능에 대해 C언어로 제어하는 방법을 예제와 더불어 상세히 설명한다.
10장에서는 I/O 포트의 제어를 통해 문자형 LCD를 제어하는 방법을 자세히 설명한다.
11장과 12장에서는 AVR 마이크로컨트롤러에 내장된 직렬 포트, SPI 통신 포트, TWI 통신 포트를 C언어로 제어하는 방법을 예제와 더불어 상세히 설명한다. 여기에서 SPI 통신 모드를 이용한 주변소자의 활용으로 자이로 센서, EEPROM 등의 인터페이스 방법과 프로그램 작성 방법에 대해 자세히 설명한다.
13장에서는 A/D 변환기, EEPROM, 아날로그 비교기, 워치독 타이머 및 슬립 모드 등의 제어 방법에 대해 C언어로 제어하는 방법을 예제와 더불어 상세히 설명한다.
이상의 내용으로 작성된 본 교재는 크게 AVR 기능의 내장 기능을 소개하는 부분과 AVR을 확장하는 부분으로 구분될 수 있다. 따라서 대학의 교재로 활용하기 위해서는 각 대학의 실정에 맞추어 한 학기 또는 두 학기로 강의를 진행할 수 있다. 4장의 내용을 보면 AVR 사용을 위한 C언어 활용을 다루고 있는데, 여기에는 일반 C언어의 고급 활용에 대해서도 설명하고 있다. 만약 C언어를 이용하여 프로그램을 작성하는 과정을 미리 학습하였다면, 4장의 내용 중에 AVR 활용을 위해 특별히 정의된 데이터 형, 메모리 형, 메모리 모델, 인터럽트 함수, 어셈블리 프로그램과의 결합 부분만을 강의하고 나머지 내용은 강의하지 않아도 무방할 것이다.
이 교재를 스스로 학습하기 위해서는 교재에서 설명하고 있는 교육용 보드가 필요하다. 이 보드는 한국산업기술대학교 IHLAB에 연락을 하면 구입하는 방법과 제작 방법에 대해 자세히 조언을 들을 수가 있을 것이다. 그리고 교재의 내용에 대한 사항과 작성된 프로그램에 대한 질의는 저자의 홈페이지인 www.roboticslab.co.kr을 통해 운영될 예정이고, ITC 출판사를 통해서도 피드백을 받을 예정이다.
아무쪼록 본 교재가 AVR 마이크로컨트롤러에 관심이 있고 이를 활용한 시스템 설계 및 제작에 관심이 있는 독자들에게 작게나마 도움이 되길 진심으로 바란다.
끝으로 이 책을 완성하기까지 프로그램의 작성 및 검증을 위해 불철주야 열심히 도와준 IHLAB (지능형 헬스케어 시스템 연구소)의 연구원들에게 심심한 감사의 뜻을 표하고, 또한 이 책의 출판을 위해 도움을 주신 ITC 출판사의 사장님을 비롯한 직원 여러분께 깊은 감사를 드린다.
--- '머리말' 중에서