안녕하세요.

ATMEGA4809 라는 제목으로, 제가 학부생 시절 수업 시간에 배웠던 ATmega4809를 이용하여 작성했던 펌웨어 코드를 하나씩 보면서 “코드리뷰” 형태로 정리해보는 기록입니다.

왜 시작하게 됐나

처음 개발을 하다 보면 일단 돌아가게 만드는 것이 첫 번째 목표가 되기 쉽습니다. 저 또한 수업을 일찍 끝내고 싶어서, 가산점을 받고 싶어서 일단 돌아가게 만들었던 기억이 있습니다.

그러나 프로젝트가 조금이라도 커지면 어느 순간부터 다음과 같은 문제점들이 발견됩니다.

  • 수정하면 다른 기능에 에러가 생긴다
  • 시간이 지나면 내가 봐도 다시 이해하기 힘든 코드
  • 수정조차 어렵다

그래서 이 코드리뷰를 진행하면서 제가 실제로 겪었던 코드의 문제점과 개선 과정들을 솔직하게 남기려고 합니다.

단순히 동작하는 코드가 아니라 잘 짜여진 코드를 찾아가는 과정이라고 생각하시면 편합니다.

진행 방식

각 글은 다음 순서로 진행합니다.

  1. 코드 일부를 가져와서 현재 구조를 설명하고
  2. 어떤 점이 불편했는지(혹은 위험했는지) 짚고
  3. 개선 방향을 정한 뒤
  4. 리팩토링한 결과를 다시 비교해보는 방식

다룰 주제

  • main 구조 (초기화 순서, 루프 구성)
  • 인터럽트 / 타이머 처리 방식
  • UART / I2C / SPI 같은 통신 코드
  • ADC / 센서 데이터 처리 (필터링, 캘리브레이션)

마치며

이 글이 완벽한 정답은 아닐 수 있습니다. 적어도 저한테는 코드를 더 깔끔하게 만들고, 잘 만들어진 코드가 무엇인지 이해하는 과정이 될 것 같아서 시작하게 되었습니다.

비슷한 MCU나 임베디드 C언어를 공부하는 분들에게 도움이 되면 더 좋을 것 같습니다.

다음 글부터 ATmega4809에 관한 간단한 소개와 전체 구조 설명을 시작으로 리뷰를 진행해보겠습니다.

글 읽어주셔서 감사합니다.