컴퓨터, 전자, 전기, 기계 가릴것 없이 공학도라면 피할 수 없는 마이크로프로세서(마이크로컨트롤러)를 배워보자.
Q. 마이크로프로세서란 무엇인가?
A. 마이크로프로세서란 초소형 연산처리장치이다.
우리가 흔히 사용하는 PC, 스마트폰 안에 들어있는 연산처리장치 즉
CPU가 마이크로프로세서이다. 그러나 이런 CPU는 단독적으로 사용이 불가능하다.
칩이 특정기능을 사용 수 있도록 명령을 내려야 하고 결과를 확인 할 수 있어야 한다.
마이크로프로세서에 입력과 출력 인터페이스를 결합한 칩을 마이크로컨트롤러(MCU)라고 한다.
따라서 엄밀히 말하자면 우리는 칩셋에 입출력을 전부 수행하는 마이크로컨트롤러를 배운다고 하는것이 맞는 표현이다.
처음 프로그래밍을 배울 때 보통 C, 파이썬 등을 배웠을 것이다.
(필자는 C밖에 안배워서 나중에 파이썬도 공부해야지...)
여기서 수많은 명령어와 문법을 배우면서 이 어려운 기계어를 왜 배워야 하나 싶었을 것이다.
그.러.나 놀랍게도 이런 프로그래밍 언어는 기계어가 아니다.....
기계어는 사실 이진수(0과1)의 집합으로 이루어져 있다.
C, 파이썬같은 언어는 인간이 컴퓨터에게 쉽게 명령을 내릴 수 있도록 만든 인간을 위한 언어이다.
바로 컴파일러라는 것이 우리가 생각해내서 만든 C코드를 어셈블리어라는 칩셋만의 용어로 바꿔 준 후
또 어셈블러가 기계어로 변환시켜준다.
즉, [ C언어 -> 컴파일러 -> 어셈블리어 -> 어셈블러 -> 기계어 ] 과 같이 많은과정을 거친다.
마이크로프로세서는 이런 어셈블리어로 칩셋을 제어한다.
어셈블리어
그렇다면 편하게 C로도 프로그래밍을 할 수 있는데 왜 어셈플리어로 명령해야하나??
우리가 흔히 사용하는 PC는 보통 32비트 혹은 64비트 운영체제이다. 컴퓨터로 명령을 내릴 때에는 불편함이 없지만
8비트, 16비트 와같이 비트단위가 낮은 MCU로는 메모리 공간이 다소 협소하여 많은작업을 하기가 힘들다.
오늘날 8비트, 16비트 컴퓨터를 사용하지 않는다고 질문 할 수 있지만 다른방면에서는 오히려 더 많이 사용된다.
선풍기, 냉장고, 에어컨, 리모컨, 심지어 자동차까지 전기로 제어하는 모든것에 MCU가 내장되어 있으며
이를 제어하기 위해서는 비트단위, 메모리공간을 생각해서 프로그래밍을 해야 한다.
따라서 마이크로프로세서 수업 목적은 제한된 공간을 효율적으로 프로그램 설계하는 것이다.
ATmega128
위의 사진은 ATmega128칩셋의 데이터시트이다. 각각 핀별로 하는 역할이 정해져 있으며 제어를 할 수 있다.
해당 칩셋에는 32개의 저장공간이 있으며 이를 레지스터라고 부르며 하나의 레지스터는 변수 한개씩 일대일 대응 한다.
이에 대한 자세한 명령어는 다음 포스팅부터 다루기로 하자.
[ATmega128 데이터시트]
ATmega128/L Datasheet Summary (microchip.com)
'AVR(Microchip Studio)' 카테고리의 다른 글
[AVR] 아두이노를 이용한 AVR코딩 & 버튼 채터링(Microchip Studio) (0) | 2021.12.25 |
---|---|
[AVR] Atmel Studio7 레지스터 제어, Simulator 디버깅 (0) | 2021.12.23 |
[µ-Processor] 내부구조(ALU) (1) | 2021.07.20 |
[µ-Processor] AVR내부연산 & Opcode (0) | 2021.07.17 |
[µ-Processor] 기본적인 어셈블리어 & 문법 (0) | 2021.07.17 |