답변:
워치 독 타이머 (WDT)는 기본적으로 켜져 있으며 더 복잡한 응용 프로그램에서 사용하는 것이 유용하지만 많은 새로운 사람들이 트립됩니다. 그들은 종종 코드에서 WDT를 서비스하지 않거나 WDT 이벤트를 처리하기 위해 ISR (인터럽트 서비스 루틴)을 포함하지 않기 때문에 칩 리셋이 계속되면 매우 실망하게됩니다. 또한 샘플 프로그램은 대부분 WDT를 시연하지 않으므로 꺼져 있습니다.
편집 : 워치 독 타이머의 이름은 "dead man 's switch"일 수 있습니다. 펌웨어가 주기적으로 모든 것이 잘 작동하고 있음을 알리지 않는 한 기본 동작은 마이크로 컨트롤러를 재설정하는 것입니다. 이것을 "개에게 먹이기"또는 "개를 걷어차"라고합니다. 이런 식으로 펌웨어가 루프에 걸리거나 예상대로 작동을 멈 추면 워치 독이 공급되지 않고 칩이 재설정됩니다 (신선하게 작동하는 상태).
WDT를 주기적 인터럽트로 사용하여 상상할 수있는 다른 작업을 수행 할 수도 있습니다. 관련 ISR 만 작성하면됩니다.
사람들이 실수로 WDT를 넘어 뜨리는 것에 대한 사무엘의 요점 외에도 처음에 WDT를 비활성화해야하는 또 다른 중요한 이유가 있습니다.
애플리케이션이 일반적으로 타이머를 올바르게 재설정 할 수있는 경우에도 다음 두 가지 이유로 초기화 코드 중에 타이머를 재설정하지 못할 수 있습니다.
따라서 WDT를 활성화하지 않은 경우에도 WDT를 가장 먼저 수행하지 않는 것이 좋습니다 .
사용하려는 경우 초기화 코드의 마지막 단계로 인터럽트를 켜기 전에 즉시 다시 활성화 할 수 있습니다.
int _system_pre_init(void)
실행되는 기능을 사용하여 초기화하기 전에 비활성화 할 수 있음을 발견했습니다.main