[소스코드 해설] 미니 오실로스코프
"내 칩"을 만들기 전에 "남의 칩"을 익혀보자. "남의 칩"을 응용에 활용하려면 그들이 제공하는 기술 문서(Data Sheet)를 읽을 수 있어야 한다. 아울러 "내 칩"의 기술 문서를 작성하는 본보기로 삼아본다. 살펴볼 "남의 칩"은 자작 취미가들에게 널리 알려진 아듀이노 듀오(Arduino Duo)보드에 장착된 마이크로 컨트롤러 ATmega328P다. 이 칩의 데이터 쉬트[ATmega328P Datasheet]가 무려 300여쪽에 이른다. 이는 이 칩에 내장된 CPU가 겨우 8-비트에 동작 속도는 16Mhz 밖에 되지 않지만 방대한 주변 장치를 갖추고 있다는 뜻이다. 용도에 맞게 사용하려면 제대로 공부가 필요하다. 남의 칩을 가지고 해볼 응용은 "미니 오실로스코프"다. 자작파들 사이에 가장 흔한 프로젝트 중 하나다[Youtube: Arduino mini oscilloscope]. 이 DIY 프로젝트는 Atmel 사의 마이크로 컨트롤러 ATmega328P를 채택한다. 이 칩을 선택한 이유는 개발도구와 응용 라이브러리가 매우 풍부하고 응용 목적에 맞는 기능을 모두 갖추고 있다는 점도 있지만 저렴하다는 것도 큰 이유다. 참고로 요즘 출시된 어지간한 마이크로 컨트롤러들은 이보다 훨씬 우수한 성능을 가지고 있다. 32-비트 듀얼코어, 100Mhz를 상회하는 동작 속도를 가지면서도 가격은 비슷하거나 오히려 저렴하다[RP2040-Zero]! 그럼에도 이 칩을 고른 이유는 당장 내 책상 서랍에 이 칩을 사용한 개발 보드[Arduino NANO V3 Super Mini]가 뒹굴고 있기 때문이다. 그만큼 흔하다. ATmega328P은 중앙처리장치(CPU, Central Processing)와 메모리(Memory)로 구성된 기본 컴퓨터 구조에 다양한 주변장치(Peripherals)를 한 패키지에 내장한다. AVR CPU는 코드와 데이터가 별도 메모리로 분리된 소위 하버드 아키텍쳐 8-비트 RISC다. 코드를 위해 32키로 바이트의 플래쉬 메모리, 데이터 용으로 2키로 바이트 SRAM을 갖추고 있다. 그외 1키로 바이트의 EEPROM은 주변 저장장치다. 이 칩의 사양서에서 보여주는 내부 구성은 아래와 같다.
....(중략)...
거의 모든 것을 내장하고 있는 듯이 보이는 범용 마이크로 컨트롤러지만 응용에 적용하려면 최소한의 부가 회로가 필요하다. 아울러 이에 맞는 구동 소프트웨어를 작성해 주어야 한다. 반도체 부품이 시장에서 성공하려면 누군가 "내 칩"을 활용하여 응용 사례가 많아야 한다. 내 칩의 활용 문서를 만들고 응용 회로를 제공해야 하며 경우에 따라 구동 라이브러리 소프트웨어도 제공해야 한다. 나혼자 사용하려고 엄청난 자원을 들여 "내 칩"을 만드는 것은 무의미하다.