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

왜 시작하게 됐나

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

그런데 프로젝트가 조금이라도 커지면 어느 순간부터 다음과 같은 문제들이 생긴다.

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

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

단순히 동작하는 코드가 아니라 잘 짜인 코드를 찾아가는 과정이라고 보면 된다.

진행 방식

각 글은 다음 순서로 진행한다.

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

다룰 주제

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

마치며

코드를 더 잘 만들고 싶어서 시작한 시리즈다. 비슷한 고민을 하는 분들에게 조금이라도 도움이 됐으면 한다.