가장 간단하고 편리한 MCU이자, 기초를 다질 수 있는 ATmega328p를 이용해서 임베디드 시스템을 배워보자. 우선 임베디드가 뭔지, MCU가 뭔지에 대한 설명은 생략하겠다. Datasheet를 검색해서 들어올 정도의 수준이라면, 앞서 나열했던 개념들은 충분히 알 것이라고 생각한다. 그럼 여기서 하나의 질문을 던져보자. 배우는 사람 입장에서 가장 궁금한 질문이다.
ATmega328p기반 임베디드 SW 개발을 가장 쉽게 배울 수 있는 강의/자료는 무엇인가?
이 질문에 1초만에 대답을 할 수 있다면, 당신은 훌륭한 임베디드 시스템 개발자다. 정답은 바로,
우리의 친구 Datasheet를 정독 또는 발췌독하는 것이다!
학생 시절 우리는 교사, 강사, 교수님들을 통해 배우면서 성장해왔고, 이른바 "떠먹여주는" 교육에 익숙하다. 하지만 임베디드는 처음 배우는 사람 입장에서 숨이 턱 막힌다. 왜냐하면, 임베디드를 입문하기 위해서 CS 과목을 깊이 있게 이해해야 하고, Low Level을 다루고, 요즘 학부에서도 잘 안가르친다는 C언어에 능통해야하며, ... 이런 이유들이 있지만, 무엇보다 뭘 배워야할지를 모른다는 것이다.
책이나 인터넷 강의를 통해 배운다고 해도 뭔가 휘황찬란하게 칩을 세팅하고, LED를 켜고, 가변 저항을 돌리고... 이런 것까지는 하면서 재밌다고 느끼겠지만, 사실 그걸로 끝이다. 배우면서 생기는 궁금증들을 해소하기 어렵다. 예를 들자면,
"인터럽트 안에서 인터럽트를 호출할 수 있을까? 일단 디폴트 설정에서는 안되는거같은데.."
"우선순위가 동일한 인터럽트를 선언할 수 없는 이유는 무엇일까?"
"센서에서 데이터를 받는 이 아두이노 함수는 어떻게 구체적으로 동작하는 걸까? 어떻게 핀 하나로 통신이 가능할까?"
이런 구체적인 의문점을 해결하는 것으로 우리는 더 최적화되고, 더 요구사항을 충족할 수 있는 임베디드 개발을 할 수 있다. 또한 MCU 자체가 워낙 방대한 데이터와 복잡한 구조를 가지고 있어, 원하는 내용을 검색을 통해 답을 알아내기는 불가능에 가깝다. 아마 GPT에 물어봐도 인터넷 자료가 부족하기 때문에 할루시네이션이 발생할 것이다.
이러한 어려운 질문들은, 사실 "MCU 칩 개발자" 들만이 알고 있다. 그리고 이분들은 돈받고 자신들의 칩을 파는 입장이기 때문에, 누구보다 친절하게 문서를 작성해 두었고, 그것이 바로 데이터시트다! 그럼 아래의 링크에서 데이터시트를 받아보자.
여기서 엄청난 진입장벽이 발생한다. 바로 "영어"로 된 데이터시트가 무려 "294" 페이지에 달한다는 것!!!
하지만 놀라운 사실은, 32bit, 64bit 주소체계를 사용하는 최신 MCU들은, 심지어 ARM까지 곁들여 사용하기 때문에 최소 5000p 이상의 데이터시트를 가지고 있다. ( 따라서 사실상 정독은 불가능하다.) 그렇기 때문에, 우리는 기초적인 MCU인 AVR을 공부하면서 MCU의 기초를 공부할 수 있고, 이를 기반으로 ARM 기반의 STM32와 같은 업계에서 사용하고 있는 MCU들도, "아 대충 이런 느낌이겠구나!" 라고 이해할 수 있는 것이다.
이제 Datasheet를 공부할 충분한 Motivation이 되었을 것이라고 생각한다. 그럼 데이터시트의 세계로 떠나보자.
'Embedded SW > ATmega328p Datasheet' 카테고리의 다른 글
[Datasheet] 6. AVR CPU Core (0) | 2025.02.27 |
---|---|
[Datasheet] 2. Overview (1) | 2025.02.23 |
[Datasheet] 1. Pin Configurations (0) | 2025.02.23 |