watchdog timer 예제

이 함수는 루프()의 시작 부분에서 호출되어야 합니다. 감시 타이머 수를 재설정합니다. 프로그램 루프가 중단되어 재설정할 수 없는 경우 Watchdog 타이머는 arduino를 재설정하고 노이즈 또는 로직 오류로 인해 컨트롤러 중단 문제를 방지합니다. 제어 스레드가 소프트웨어에 추가되기 때문에(ISR 및 소프트웨어 작업의 형태로) 감시 타이머가 시작되는 코드에 한 곳만 있는 것은 비효율적입니다. 예를 들어 위의 다이어그램은 2단계 감시 타이머에 대한 가능성이 있는 구성을 보여 주십습니다. 정상적인 작동 중에 컴퓨터는 정기적으로 시간 시간을 방지하기 위해 Stage1을 시작합니다. 컴퓨터가 Stage1을 걷어차지 못하면(예: 하드웨어 오류 또는 프로그래밍 오류로 인해) Stage1은 결국 시간 시간이 지났습니다. 이 이벤트는 Stage2 타이머를 시작하고 동시에 컴퓨터에 리셋이 임박했다는 것을 (마스크할 수 없는 인터럽트를 통해) 알립니다. Stage2가 끝날 때까지 컴퓨터는 상태 정보, 디버그 정보 또는 둘 다를 기록하려고 시도할 수 있습니다. 컴퓨터가 Stage2 시간 시간에 재설정됩니다. 멀티태스킹 커널을 사용하면 교착 상태가 발생할 수 있습니다.

예를 들어 작업 그룹이 서로 대기하고 그 중 하나가 필요한 외부 신호를 기다리지 않고 전체 작업 집합이 무기한 중단될 수 있습니다. 일반적으로 “발로 차기”라고 하는 감시 타이머를 다시 시작하는 작업은 일반적으로 감시 타이머 제어 포트에 서면으로 수행됩니다. 또는, 통합 된 감시 타이머가 있는 마이크로 컨트롤러에서 감시 타이머는 때때로 특수 한 기계 언어 명령을 실행 하거나 레지스터에 특정 비트를 설정 하 여 걷어차. 이 것의 예는 일부 PIC 마이크로 컨트롤러의 명령 집합에서 발견 하는 CLRWDT (명확한 감시 타이머) 명령입니다. 이 방법으로 우리는 아두 이노에서 워치독 타이머를 활용할 수 있습니다. 이러한 결함이 일시적인 경우 우리가 배운 내용을 요약 할 수 있습니다, 시스템은 각 감시 유발 재설정 후 시간의 일부 길이 동안 완벽하게 작동 할 수 있습니다. 그러나 하드웨어가 실패하면 시스템이 지속적으로 재설정될 수 있습니다. 이러한 이유로 Watchdog로 유도된 재설정 수를 계산하고 몇 가지 고정된 수의 실패 후에 시도하는 것을 포기하는 것이 현명할 수 있습니다.

¡Contactanos!