이번 강의 목표 : 전반적 개념 정립
- MCU의 정의와 역할
- MCU 개발 환경 (컴파일러, 디버거, IDE)
- 기계어, 어셈블리어, Hex파일, ELF파일 개념 이해
- MUC 메모리에 대한 이해 (Flash, RAM, 메모리 주소)
- MCU 패리퍼럴의 개념
- MCU 패리퍼럴 내부 레지스터의 개념
- MCU 데이터시트, 레퍼런스메뉴얼 문서의 개념
- MCU SW 구현의 의미 / 구현 방법/ Driver SW(HAL)의 개념
- 보드의 개념 (회로 설계, 아트워크 등)
- 멀티미터 기능 소개
다루지 않은 것들
MCU 내부 각종 패리퍼럴들의 기능, 쓰임새, 구현방법, 유의사항 등
예) GPIO, 클락, 인터럽트 & 폴링, Timer, PWM, ADC, DMA, SPI, Uart 통신, Watch Dog, Edge Detection, Pwm Measurement, EEPROM...
자동차에는 조향(핸들), 구동모터(동력), 브레이크(정지), 램프(라이트)와 같은 많은 부품이 탑재됩니다.
이러한 부품들은 SW에 의해 작동되는데 이 SW를 실행하는 컴퓨터가 필요하며 이 컴퓨터를 ECU(Electronic Control Unit, 제어기)이라고 부릅니다.
즉, 각 부품마다 ECU가 존재하며 ECU는 실질적으로 SW를 구동시키는 MCU(Micro Control Unit)과 각종 부품으로 구성되어 있습니다.

S/W는 제어기들 속에 내장되어 작동하기 때문에 임베디드 제어기, 임베디드 SW라고 불립니다.
- 각자의 제품을 컨트롤 하기 위한 동작만을 반복 수행
- 일반적으로 낮은 성능의 CPU, 작은 크기의 메모리로 동작
- 제한된 성능 조건에서 필요한 기능 모두 수행되도록 SW 구현
- SW 개발환경(PC)와 실제 실행되는 환경(MCU)이 다름
MCU SW 개발 과정 (3번째 특징)
좋은 성능의 MCU로 SW 구현 -> SW 최적화 -> 낮은 성능의 MCU로 테스트 -> (반복) -> 최적의 MCU 도출
디버깅의 어려움(4번째 특징)
컴퓨터의 개발 환경과 다르게 MCU에서는 다양한 기능을 사용할 수 없기 때문에 디버깅이 힘듦
모터제어
세탁기, 청소기, 전기차 구동모터와 같은 장치에 사용될 수 있다.
모터제어는 제어기를 이용하여 모터를 제어하는 것을 의미하며, 전류의 방향과 세기에 따라 모터의 방향과 회전력이 변한다.
실제 제어기의 예시1 (기어 상태를 전압을 이용해 제어기에 전달 / 방향)
기어와 구동모터가 전선으로 연결되어 있을 때, 기어 상태(D, N, R)에 따라 전압이 변경되고 MCU느 전압을 ADC 기능을 이용하여 읽고 이 전압의 크기로 현재 기어의 상태를 확인한다.
실제 제어기의 예시2 (기어 상태를 통신 메세지로 제어기에 전달 / 방향)
기어의 상태를 통신 메시지를 이용하여 제어기에 전달하여 현재 기어 상태를 확인하는 방식으로 어떤 통신 프로토콜을 사용하는 지를 확인하여야 한다.
실제 제어기의 예시3 (가속 페달 정보를 MCU에게 전달 / 세기)
가속페달의 상태를 확인하고 밟힌 정도에 따라 모터에 공급전류 크기를 결정한다.
또 다른 예시...
청소기
-> 사용자의 버튼 조작 감지, 버튼에 따라 공급 전류 크기 컨트롤
-> 사용자의 버튼 조작 감지, 버튼 조작에 따라 현재모드 LCD 출력