1. 마이크로컨트롤러 개요

  • 마이크로컨트롤러(MCU; Micro Controller Unit)

    • 하나의 칩에 CPU(MPU), 메모리, 주변기기 제어 회로를 집약하여 독자적으로 동작 가능한 칩 하나로 된 컴퓨터
    • 주로 임베디드 시스템(제한된 용도의 전용 시스템)에 사용
  • MPU(CPU) vs MCU

    • MPU: 고성능 연산 중심, 외부 메모리/주변장치 필요 (예: 인텔 i7)
    • MCU: 제어 중심, 단일 칩 솔루션, 저사양/저전력 (예: ATmega, PIC)
  • 장단점

    • 장점: 소형화, 경량화, 저비용, 신뢰성 향상, 융통성(프로그램 변경 가능)
    • 단점: 낮은 처리 능력, 범용성 부족
  • 종류: 8051(Intel), PIC(Microchip), AVR(Atmel - 아두이노 사용), ARM(고성능 32/64비트) 등

2. 마이크로컨트롤러의 구조 (ATmega128 기준)

MCU는 크게 Core(CPU), 메모리, 클럭, 전원관리, 그리고 다양한 주변장치(Peripherals)로 구성된다.

2.1. CPU(Core)

  • 특징
    • 주로 RISC(Reduced Instruction Set Computer) 구조를 사용하여 실행 속도가 빠르다.
RISC 구조CISCRISC
프로그램 크기작음
명령어당 클록 수가변고정
  • 하버드 구조(Harvard Architecture)

    • 프로그램 메모리와 데이터 메모리 공간(및 버스)이 분리되어 병목 현상을 줄인다.
  • 레지스터

    • 범용 레지스터
      • 연산 데이터 저장
    • 특수 레지스터(I/O Register)
      • MCU의 특정 기능(GPIO, 타이머 등)을 제어하고 상태를 확인하는 데 사용된다.
      • (개발자가 직접 제어해야 함)

2.2. 메모리(Memory)

  1. 플래시 메모리(Flash): 프로그램 코드 저장 (비휘발성)
  2. SRAM: 변수 및 연산 데이터 저장 (휘발성, 고속)
  3. EEPROM: 설정 값 등 영구 보관이 필요한 데이터 저장 (비휘발성)

2.3. 클럭 및 전원 관리

  • 클럭(Clock)

    • 시스템 동작의 기준
    • 외부 결정(Crystal/Oscillator) 또는 내부 RC 회로를 사용한다.
  • 슬립 모드(Sleep Mode)

    • 배터리 소모를 줄이기 위해 사용하지 않는 모듈의 클럭을 차단하는 기능
    • (Idle, Power-down 등)
  • 리셋(Reset)

    • 입출력 레지스터는 초기화되고, 프로그램은 시작 번지가 저장되어있는 리셋 벡터에서 새롭게 시작
  • 리셋의 종류

    • Power-on: MCU의 공급전압이 파워온 리셋 임계전압 이하일 때 리셋
    • 외부: 리셋핀에 일정 시간 이상의 신호가 입력되면 리셋
    • 워치독(Watchdog): 프로그램이 무한 루프 등 오류에 빠졌을 때 시스템을 강제로 리셋시켜 복구하는 기능 (지정된 시간이 될 때 까지 사용자가 쓰기 작업을 하지 않으면 리셋 발생)
    • 브라운아웃(Brown-out): 공급전압(VCC)이 일정 수준 이하로 떨어질 때 오동작 방지를 위해 리셋
    • JTAG: JTAG 시스템 사용

3. 주요 주변장치 모듈

3.1. GPIO

  • GPIO(General Purpose Input Output; 범용 입출력 포트)

    • 디지털 신호(0/1)를 입출력하는 핀이다.
    • MCU와 다양한 디지털 입출력장치를 연결하는 통로
    • 복수 개의 입출력 핀 사용 → 8개(비트) 단위로 하나의 GPIO 포트를 구성
  • cf. GPIO의 기능

    • 핀의 용도 결정: 미사용/입력/출력 설정
    • 풀업 저항의 사용 여부
    • 핀 입력 데이터 읽기: 입력된 데이터가 저장
    • 출력 데이터 쓰기: 출력되는 데이터를 저장
  • 제어 레지스터(ATmega 기준)

    • DDRx(Data Direction Register): 데이터 방향 설정 (입력/출력 결정)
    • PORTx(Port INput pins register): 출력 데이터 설정 (High/Low) 및 내부 풀업 저항 설정
    • PINx: 입력 데이터 읽기
  • 주요 개념

    • 풀업/풀다운 저항(플로팅 방지)
    • 채터링/디바운싱(스위치 노이즈 제거)
      • 바운스(채터링): 스위치 조작 시 기계적인 진동 때문에 잠시 원하지 않는 on/off 반복이 나타나는 현상
      • 디바운스(디바운싱): 소프트웨어나 하드웨어에 의한 방법으로 바운스 현상을 제거하는 방법

3.2. 타이머/카운터(Timer/Counter)

  • CPU와 무관하게 클럭 펄스를 세는 장치이다.

  • 동작 모드

    • 타이머: 내부 시스템 클럭을 계수 (시간 측정, 지연 생성)
    • 카운터: 외부 핀으로 들어오는 펄스를 계수 (사건 횟수 측정)

3.3. PWM

  • PWM(Pulse Width Modulation, 펄스 폭 변조)

    • 디지털 신호의 듀티비(Duty Cycle, On/Off 비율)를 조절하여 아날로그와 유사한 효과를 내는 기술
    • LED 밝기 조절, 모터 속도 제어 등에 필수적으로 사용된다.
  • cf. PWM 용어

    • 주기
      • 하나의 PWM 파형이 반복되는 시간 (On 시간+Off 시간)
      • On 시간: PWM의 주기에서 출력이 On으로 출력되는 시간
      • Off 시간: PWM의 주기에서 출력이 Off로 출력되는 시간
    • 듀티비
      • 디지털값인 듀티비를 조절하여, 아날로그값인 평균전압을 가변할 수 있음
      • 단위: %

3.4. 인터럽트

  • 인터럽트(Interrupt)
    • 외부/내부 사건 발생 시 하던 일을 멈추고 즉시 해당 사건(ISR)을 처리한 후 복귀하는 방식
    • 장점: 지속적으로 상태를 감시하는 폴링(Polling) 방식에 비해 시스템 효율이 월등히 높다.
    • 종류: 외부 핀 인터럽트, 타이머 인터럽트, 통신 인터럽트 등

3.5. ADC(아날로그-디지털 변환기) & 비교기

  • ADC

    • 센서 등의 아날로그 전압 값을 디지털 값(n비트)으로 변환한다. (분해능과 변환 속도가 중요)
  • cf. ADC의 주요 성능

    • 분해 능력: 몇 비트의 디지털 값으로 변경할 것인지의 여부
    • 변환 속도: 변환하는 데 걸리는 시간
    • 직선성: 디지털로 변경할 때, 모든 범위에서 얼마나 정확하게 표현되는지의 여부
  • cf. ADC의 입력 방법

    • 단일 입력, 차동 입력
  • 아날로그 비교기

    • 두 전압을 비교하여 크다/작다(0/1)를 판별한다.
    • ADC 없이 간단하게 아날로그값을 비교할 때 사용한다.

4. 통신 모듈

MCU는 외부 장치와 데이터를 주고받기 위해 직렬 통신(Serial Communication)을 주로 사용한다.

4.1. USART - 비동기식

  • USART(Universal Synchronous Asynchronous Receiver and Transmitter)

    • 범용 동기 비동기 수신기와 송신기
    • Rx(수신), Tx(송신), GND 3선으로 통신하며, 별도의 클럭 선이 없다. (Baud rate 약속 필요)
  • UART

    • RS-232: PC 직렬 포트 표준, ±12V 전압 사용 (장거리용 드라이버 IC 필요)
    • RS-422: 차동 신호(Differential) 사용으로 노이즈에 강하고 장거리 전송 가능
    • RS-485: 차동 신호 사용, 멀티 드롭(1:N) 통신 지원, 산업용으로 많이 사용

4.2. I2C(TWI) - 동기식

  • I^2C(Two Wire Interface)
    • 2개의 선(SDA, SCL)만 사용하는 동기식 통신
    • 주소(Address)를 사용하여 최대 128개의 슬레이브와 연결 가능
    • 선이 적어 회로가 간단하지만 SPI보다 속도는 느리다.

4.3. SPI - 동기식

  • SPI(Serial Peripheral Interface)
    • 고속 동기식 통신(클럭 선 존재)
    • 4개의 선 사용 (SCK, MOSI, MISO, SS)
    • 마스터-슬레이브 방식, 1:1 연결에 적합하며 속도가 빠르다.