카드뉴스










코드보다 먼저 전원과 실행 조건을 확인한다
MCU가 반응하지 않을 때 애플리케이션 코드부터 고치면 원인과 상관없는 변경만 늘기 쉽다. 먼저 VDD와 주요 전원 레일을 GND 기준으로 측정하고, Reset 핀이 계속 활성 상태인지 확인한다. 평균 전압은 정상인데 기동할 때만 문제가 생긴다면 오실로스코프로 전압 강하와 리플을 보는 편이 낫다.
그다음 프로그램이 정상적으로 다운로드됐는지, 디버거가 연결되는지, CPU가 사용자 코드까지 실행되는지 확인한다. 전원이나 Reset, 다운로드 단계에서 막혔다면 뒤의 UART·ADC 설정을 살펴봐도 신호는 나오지 않는다.
클럭과 핀은 기능이 동작하는 기준이다
UART, PWM, Timer, Delay는 모두 클럭을 기준으로 움직인다. UART 문자가 깨지거나 PWM 주기와 지연 시간이 같은 비율로 어긋난다면 개별 함수보다 클럭 소스, PLL, 시스템 클럭과 주변장치 분주 설정을 먼저 본다. 설정값만 믿지 말고 필요하면 클럭 출력이나 실제 파형을 측정한다.
핀 번호가 맞아도 역할이 틀릴 수 있다. GPIO 입력·출력·아날로그 모드, pull-up/down, Alternate Function을 핀맵과 회로도에 맞춰야 한다. 같은 물리 핀이 UART, ADC, PWM 가운데 어느 신호로 연결되는지는 이 설정이 결정한다.
주변장치 활성화와 배선을 한 묶음으로 본다
주변장치는 보통 클럭 enable, 파라미터 설정, 기능 enable 순서가 갖춰져야 동작한다. UART라면 TX 핀의 AF와 baud rate, Timer라면 prescaler와 period, ADC라면 핀 모드·기준전압·채널을 함께 확인한다. 초기화 코드가 있어도 클럭 게이팅이나 enable bit가 빠지면 주변장치는 멈춰 있다.
외부 모듈을 연결했다면 TX와 RX가 교차됐는지, GND를 공통으로 묶었는지, 커넥터 핀 순서와 3.3V·5V 논리 레벨이 맞는지도 살핀다. 설정이 정확해도 전기적 기준이 다르면 통신은 성립하지 않는다.
마지막에는 변수보다 실제 신호를 본다
증상에 따라 확인 지점을 좁히면 시간이 줄어든다. UART 문자가 깨지면 클럭·baud rate·GND를, 출력이 없으면 TX 핀·AF·enable을 본다. ADC 값이 이상하면 핀 모드·Vref·채널을, PWM 주파수가 다르면 Timer 클럭·prescaler·period를 확인한다.
UART 터미널은 메시지 흐름을, 로직 애널라이저는 디지털 타이밍을, 오실로스코프는 전압과 파형을 보여준다. 전원과 Reset → 다운로드와 실행 → 클럭 → 핀 → 주변장치 활성화 → 배선과 전압 레벨 → 측정 → 코드 로직 순서로 기록하면 같은 문제를 다시 만났을 때도 바로 범위를 좁힐 수 있다.