임베디드 용어 사전
타이머·ADC

워치독

정해진 시간 안에 리프레시하지 않으면 시스템을 리셋하는 타이머. 멈춘 펌웨어를 되살리는 마지막 방어선이다.

소프트웨어가 스스로를 구할 수 없을 때 하드웨어가 개입한다.

정상   주기적으로 리프레시 → 카운터가 리셋됨 → 아무 일 없음
이상   무한 루프·데드락으로 리프레시 실패 → 타임아웃 → 리셋

어디서 리프레시하느냐가 설계다

/* 나쁜 예 — 타이머 인터럽트에서 무조건 */
void SysTick_Handler(void) { IWDG->KR = 0xAAAA; }   /* 태스크가 다 죽어도 통과한다 */

/* 좋은 예 — 모든 감시 대상이 살아 있을 때만 */
if (alive_mask == ALL_TASKS) { IWDG->KR = 0xAAAA; alive_mask = 0; }

인터럽트만 살아 있어도 만족하는 구조면 감시 대상이 사라진 것과 같다.

종류

독립 워치독    자체 클럭으로 돈다. 메인 클럭이 죽어도 동작한다
윈도우 워치독  너무 일찍 리프레시해도 리셋 — 주기가 무너진 것까지 잡는다
외부 감시 칩   MCU 전체가 이상해지는 경우까지 대비

리셋 원인을 남긴다

리셋 원인 레지스터를 부팅 때 읽어 워치독 리셋이었는지 기록해야 현장에서 원인을 안다.

함께 보면 좋은 용어

노트에서 맥락과 함께 보기 — 타이머와 PWM — 시간을 만드는 하드웨어