프로그램 작성 순서 ATmegal28 프로그램을 작성할 때 그것을 직접하면 자칫 오류를 범하기 쉽습니다. 그리고 일단 오류를 범할 때 그것을 고친다는 것은 새로 프로그램을 작성하는 것보다 더 힘들 때도 있습니다. 특히 기계어나 어셈블리어와 같은 저급어로 작성할 때에는 더욱 그렇습니다. 그러므로, 특히 초보자는 다음과 같은 단계를 거쳐서 프로그램을 작성함이 바람직합니다. ① 문제의 해석 ② 순서도(flowchart)의 작성 ③ 코딩(협의의 프로그래밍) ④ 디버깅(debugging)을 합니다. 문제의 해석의 과정은 이는 문제의 핵심을 파악하고, 가능한한 수식화하는 과정입니다. 말은 쉽지만 실제로 어떤 문제의 핵심을 파악하고 그것을 수식화한다는 것은 그리 쉬운 일이 아닙니다. 그러나, 대개 의 경우 "이 문제..
프로그래밍 언어 프로그램을 작성하는 데 필요한 언어를 프로그래밍 언어(programming language)라고 합니다. 기계어, 어셈블리어, 컴파일러어 등 3종류가 있습니다. 이들 중 컴퓨터가 직접 이해할 수 있는 것은 기계어 뿐입니다. 코드, 즉 2진 코드로 되어 있어서 마치 암호와 같습니다. 예컨대 기계어(machine "레지스터 language)는 0과 1로 된 클리어하라"라는 명령을 AVR 마이크로컨트롤러에서 는 0010 0100 0000 0000이라고 하는데, 이것이 R0의 내용을 기계어입니다. 기계어는 쓰고 읽을 때의 번잡을 피하기 위해서 흔히 16진수로 표기합니다. 예컨대 0010 0100 0000 0000 대신 $2400이라고 씁니다. (단 $는 16진수 표시임). 기계어는 2진 코드로 ..
CPU에 대해서 알아보기 CPU는 프로그램 메모리에 들어 있는 명령어를 순서대로 하나씩 호출해서 실행시킴으로써 데이터를 처리하고, 다른 장치들을 제어하는 역할을 합니다. 일반적으로 CPU는 레지스터부, 연산부, 그리고 제어부로 구성됩니다. 레지스터부를 설명드라자면, 레지스터는 데이터를 일시 보존하는 일과 데이터를 다른 곳으로 옮기는 일을 합니다. 하드웨어면에서 볼 때 레지스터는 플립플롭회로로 이루어져 있습니다. 하나의 플립플롭회로는 하나의 비트를 기억하는 회로이고, 이것이 8개 또는 16개 모여서 레지스터를 이룹니다. 일반적으로 Z80과 같은 폰노이만 방식의 마이크로컨트롤러에 있어서는 레지스터와 데 이터 메모리가 구분되어 있어서 자주 사용하는 것은 CPU 소속의 레지스터에, 그 밖의 것은 데이터 메모리(..
ATmega128의 내부 구성 앞에서 논한 바와 같이, 마이크로컨트롤러는 입출력 능력, 인터럽트 기능, 명령어 등 만이 제어에 알맞도록 개선되었을 뿐, 근본적으로는 단일 칩 마이크로컴퓨터입니다. 그러므로, 마이크로컨트롤러 ATmegal28도 일반 마이크로컴퓨터와 같이 CPU, 프로그램 메모리, 일반 데이터 메모리, EEPROM 데이터 메모리, I/O포트, 직렬포트, 타이머/카운터, Compare/ Capture 파형생성 모듈, 아날로그 비교기, AD변환기 등으로 구성됩니다. 다만 하바드 구조 의 특성상 프로그램 메모리 플래쉬 메모리와 데이터 메모리 SRAM 및 EEPROM이 완전히 분리되어 있고, 버스 또한 별개로 존재하여, 프로그램 메모리는 16비트의 별도 주소버스와 16비트의 프로그램버스에 의해서 C..
하바드 구조에 대해서 AVR 계열은 하바드 구조(Havard architecture)로 되어 있습니다. 하바드 구조에서는 프로그램 메모리와 데이터 메모리가 확연히 구분되어 있어서 일반 데이터를 제외하고는 프로그램 메모리에 데이터를 넣을 수도 없고, 데이터 메모리에 프로그램을 넣을 수도 없습니다. 또한 프로그램 메모리와 데이터 메모리는 별개의 버스에 의해서 접근됩니다. 이에 반하여 8080, Z80과 같은 폰노이만 구조에서는 프로그램 메모리와 데이터 메모리가 확연히 구분되어 있지 않아서 프로그램과 데이터가 같은 메모리에 혼재합니다. 버스도 하나 뿐입니다. 하바드 구조에서는 다음과 같은 장점을 가집니다. AVR 계열은 하바드 구조로 되어 있어서 하바드 구조에서는 내부적으로 프로그램버스와 데이터버스를 별도로 ..
ATmega128의 특징 ATmega128은 ATmel사가 개발한 64핀 TQFP형의 저전력 8비트 CMOS 마이크로컨트롤러로, 다음과 같은 특징을 가집니다. 이것은 비단 ATmega128만의 특징이라기 보다는 모든 AVR 계열 마이크로컨트롤러가 가진 특징이라고 할 수 있습니다. 자세한 설명을 드리자면, 유사 RISC 아키텍처(RISC like Architecture)로 되어 있습니다. RISC는 Reduced Instruction Set Code의 약자로서, 복합 명령어를 쓰지 않고 극히 간단한 명령어만을 사용함으로써 명 령어의 수를 필요한 최소한으로 줄이고, 주소지정방식 또한 필요한 최소한에 국한하는 컴퓨터 구조인데, 이것은 CISC와 대치됩니다. CISC(Complex Instruction Set ..
AVR 마이크로컨트롤러의 계열 AVR에 속하는 마이크로컨트롤러 계열은 거의 같은 구조의 CPU를 사용하고 있으므로 기본 구조가 동일하고 기본 명령어 또한 같지만, 메모리의 크기라든가 특수기능의 내장여부에 따라 ATtiny 계열, AT90S 계열, ATmega 계열로 분류됩니다. ATtiny 계열은 4비트 범용 마이크로컨트롤러입니다. 미국 및 일본의 통계에 따르면 판매 수량면에서 4비트 마이크로컨트롤러는 전체 마이크로컨트롤러 판매량의 약 90%에 이르지만, 거의 전부가 세탁기, 휴대폰 등 특수목적으로 사용되고 있습니다. 그러나 ATtiny 계열은 범용으로 사용되어서 장난감, 배터리 충전기, 간단한 게임기 등 비교적 간단한 제품의 개발에 유용합니다. AT90S 계열은 ATtiny와 ATmega의 중간에 드는..
마이크로컨트롤러의 특징 마이크로컨트롤러는 제어용 컴퓨터를 LSI 기술에 의하여 하나의 칩으로 만든 것이므로, LSI로서의 장점과 컴퓨터로서의 장점을 다 갖추고 있습니다. LSI로서의 장점은 소형, 경량, 저렴한 것이고, 컴퓨터로서의 장점은 융통성과 신뢰성입니다. 그러므로, 마이크로컨트롤러를 사용하여 제품을 만들면 다음과 같은 장점을 가집니다. 첫번 째, 제품이 소형화되고, 경량화됩니다. 시스템 제어부의 대부분이 LSI로 구성되므로 구성 소자의 수도 줄고, 그 만큼 더 가벼워집니다.두번 째, 제품의 가격이 저렴해집니다. 마이크로컨트롤러를 사용하여 제품을 만들면 부품비 및 제작비가 감소되고, 개발비 및 개발시간 또한 절감되어 개별 논리회로에 사용되는 경우보다 제품의 원가가 적게 듭니다. 다만 복잡도가 크지 ..
마이크로컨트롤러의 역사 1969년 일본의 샤프사는 전자식 탁상계산기의 CPU를 하나의 칩으로 만들고자 인텔사를 포함한 몇 개의 회사와 개발계약을 맺었습니다. 그로부터 2년 뒤인 1971년에 이들 회사 중 오직 인텔사만이 요구된 제품을 만들어 내는 데 성공하였습니다. 그러나 아깝게도 그것은 처리 속도가 요구된 것에 미치지 못하였습니다. TTL 기술 대신 MOS기술을 사용했기 때문이었습니다. 계약은 취소되었고, 그래서 인텔사는 실패작으로서 이것을 창고에 사장시키느냐, 아니면 새로운 상품으로서 이것을 시장에 내어 놓느냐의 갈림길에 서게 되었습니다. 논란 끝에 인텔사는 후자를 택하였습니다. Intel4004라는 이름으로 시판에 들어갔습니다. 이것은 말이 탁상계산기의 CPU이지, 프로그램만 바꾸면 전혀 다른 용도..
로봇 마이크로컨트롤러 컴퓨터의 중앙처리장치(CPU)가 가진 기능의 대부분을 하나 또는 몇 개의 반도체 칩에 집적한 것을 마이크로프로세서라고 하고, 이것을 중심으로 ROM, RAM, I/O장치 등으로 구성된 작은 규모의 컴퓨터 시스템을 마이크로컴퓨터라고 합니다. 예컨대, Z80이나 i80586이나 MC68040은 마이크로프로세서이고, 이들을 중심으로 구성된 작은 규모의 컴퓨터 시스템은 마이크로컴퓨터입니다. 마이크로컴퓨터는 일반 컴퓨터와 본질적으로 그 기능은 같으나, 구성이 비교적 간단하고, 한꺼번에 처리할 수 있는 데이터의 폭이 작으며, 처리속도가 느리다는 점에서 일반 컴퓨터에 비하여 그 성능이 떨어집니다. 그러나, 마이크로컴퓨터의 고성능화, 고속화가 급진됨에 따라 그 간격은 급속히 좁혀지고 있습니다. 마..