
'감시하는 강아지'라는 뜻으로 마이크로프로세서에서 주로 다루는 내용이다.
마이크로 컨트롤러 유닛(MCU)가 무한루프에 빠지지 않도록 해주며, 비정상적인 상황으로 가는 것을 방지해준다.
예를 들어, 다음과 같은 코드를 가정해 보자.
int main(void)
{
while(1);
printf("Hello World!")
return 0;
}
위의 코드에서 printf("Hello World!");를 실행할 수 없으므로 Watchdog이 주기적으로 CPU를 감시하여 이를 찾아내고, 중단시킨다.
Time Out Mode는 Watchdog Timer가 일정 주기내에 어떠한 입력 신호를 받지 못하면 MCU에게 reset을 보내는 방식이다.Window Mode는 기존의 Time Out Mode에서 일정 주기내에 신호가 여러개 입력될 때에도 이를 감지하여 MCU에게 reset을 보내는 방식이다. 때문에, 더 정확한 이상 감지가 가능하다.Q&A Mode는 앞서 말한 두 가지 방법보다 복잡하고, 정확한 방법으로 구현된다. MCU가 Watchdog Timer에게 미리 데이터를 송신한 후, 나중에 들어온 데이터와 비교하여 이를 감지하는 방식이다. 데이터 통신 과정에서의 구현이 복잡하지만, 가장 안정적인 방법이다.대표적으로 Atmega128의 데이터셋을 보면, 다음과 같이 나와있다.

WDTCR이라는 레지스터의 비트를 조정하여 Watchdog의 On/Off와 주기를 설정할 수 있다.
WDE비트가 Watch Dog Enable비트이고, WDP2~1비트의 조합으로 다음과 같이 주기를 설정할 수 있다.

만약, MCU개발 환경에서 알 수 없는 reset이 발생한다면 main loop에 앞서 다음 코드를 넣어 Watchdog을 disable해보자.
WDTCR = 0x00;