Arduino Watchdog: 작동 방식

워치독 아두이노

이 새로운 기사에서 우리는 지키는 개, 용도 및 프로젝트에서 사용하는 방법 아두 이노. 흥미롭지만 알려지지 않은 이 기능에 대해 알아야 할 모든 것. 그리고 그렇습니다. 이름에서 알 수 있듯이(워치독) 일부 문제를 추적하는 데 사용할 수 있습니다.

여기서 우리는 볼 것이다 당신이 알아야 할 모든 것 에 관하여…

감시견이란 무엇입니까?

컴퓨팅에서, 지키는 개 시스템이나 프로그램의 작동을 모니터링하는 데 사용되는 감독 메커니즘입니다. 주요 기능은 충돌이나 정지와 같은 비정상적인 상황이나 시스템 오류를 감지하고 대응하며, 지속적인 작동이나 시스템 복구를 보장하기 위한 시정 조치를 취하는 것입니다.

감시견 타이머로 작동 특정 시간 간격으로 구성됩니다. 시스템이나 프로그램이 해당 시간 간격 내에 특정 작업을 수행하지 않거나 워치독에 전원을 공급하지 않는 경우(예: 재시작), 워치독은 시스템이 원치 않는 상태에 있거나 올바르게 응답을 멈춘 것으로 가정하고 미리 결정된 작업을 수행합니다. 이 작업은 구현에 따라 다를 수 있으며 시스템 재부팅, 오류 로그 생성, 경보 실행 또는 문제 해결을 위한 특정 단계 수행이 포함될 수 있습니다.

워치독은 운영 체제와 서버부터 장치에 이르기까지 다양한 컴퓨터 시스템과 장치에서 사용됩니다. Arduino를 포함한 임베디드 및 중요 실시간 시스템. 주요 목표는 문제를 자동으로 감지하고 대응하여 시스템 안정성과 가용성을 향상함으로써 장애 상황에서 수동 개입의 필요성을 줄이는 것입니다.

Arduino 워치독이란 무엇입니까?

아두이노에 관한 책들

Arduino의 감시 타이머는 애플리케이션의 필요에 따라 조정되어야 합니다. 그 워치 독 타이머 내부 128kHz 클록 소스를 사용합니다(사용된 보드 및 MCU에 따라 다를 수 있음). 활성화되면 XNUMX부터 사용자가 미리 지정한 값까지 카운트가 시작됩니다. Watchdog Timer가 이 값에 도달했을 때 재설정되지 않으면 마이크로컨트롤러가 재설정됩니다.

마이크로컨트롤러(MCU)는 중앙 처리 장치(CPU), 메모리, 입/출력 주변 장치 및 때로는 통신 인터페이스를 단일 칩에 통합하는 소형 전자 장치입니다. 특정 작업을 제어하고 실행하도록 설계되었습니다.

워치독 타이머 ATmega328P, 이는 다음에서 구현됩니다. Arduino UNO는 10가지의 서로 다른 시간 설정을 제공하며, 각 설정은 타이머가 오버플로되어 재설정되는 시기를 결정합니다. 다양한 시간 간격은 다음과 같습니다. 16ms, 32ms, 64ms, 0.125초, 0.25초, 0.5초, 1초, 2초, 4초, 8초. 나중에 포함된 표에서 살펴보겠습니다.

Watchdog Timer로 무엇을 할 수 있는지 아직 확실하지 않은 경우 Arduino UNO, 우리는 볼 것이다 그래서 그래픽으로 이해할 수 있습니다. 이 예에서는 간단한 LED 깜박임(깜박임)을 사용합니다. while() 루프에 들어가기 전에 설정된 기간 동안 LED가 깜박입니다. 이 while() 루프는 차단 시스템의 대안으로 사용됩니다. Watchdog Timer는 while() 루프에 있는 동안 재설정되지 않으므로 시스템이 재부팅되고 시스템이 충돌하고 재부팅되기 전에 LED가 다시 깜박이기 시작합니다. 이 사이클은 계속될 것입니다…

고려사항 및 특징

워치독 타이머 코드 시작 부분에서 비활성화되어 있습니다. Watchdog을 활성화하기 전에 x초의 지연이 통합됩니다. 이러한 지연은 Arduino 부트로더가 새 코드가 로드되는지 확인하고 코드를 플래시 메모리에 구울 수 있는 충분한 시간을 허용하는 데 중요합니다. 이 측면은 예방 조치와 관련이 있습니다. 잘못된 코딩이나 부적절한 고려로 인해 작성된 코드가 매우 짧은 간격으로 마이크로컨트롤러를 무한정 재설정하는 상황이 발생할 수 있습니다. 이로 인해 Arduino 보드가 손상되고 코드가 제대로 업로드되지 않을 수 있습니다. 이런 일이 발생하면 잠긴 Arduino에서 다른 Arduino를 ISP로 사용하여 부트로더를 구워야 합니다.

Arduino watchdog을 사용할 때 다음을 사용해야 합니다. 비트 레지스터 칩의 동작을 정의합니다. 관련 레지스터와 그 의미는 Arduino 보드에 있는 마이크로컨트롤러 데이터시트에 자세히 설명되어 있습니다. 그러나 Arduino 통합 개발 환경(IDE)에는 이 프로세스를 단순화하도록 설계된 일부 기능과 매크로가 포함되어 있으며 라이브러리를 포함하여 가져올 수 있습니다. #포함하다 AVR 칩 워치독을 사용합니다.

이런 식으로 워치독을 구성할 수 있습니다. wdt_enable() 함수를 사용하여 활성화. 이 함수의 인수는 타이머가 재설정되지 않은 경우 보드가 재설정되기 전까지의 시간을 결정합니다. 코드에서 구성할 수 있는 값은 여기에 포함됩니다.

워치독이 트리거되기 전의 시간 wtd_enable() 인수
15 MS WDTO_15MS
30 MS WDTO_30MS
60 MS WDTO_60MS
120 MS WDTO_120MS
250 MS WDTO_250MS
500 MS WDTO_500MS
1들 WDTO_1S
2들 WDTO_2S
4들 WDTO_4S
8들 WDTO_8S
자세한 내용은 Arduino 데이터시트를 참조하세요. 통합 마이크로컨트롤러 자체, 워치독과 함께 사용할 수 있는 레지스터, 핀아웃, 주변 장치, 기술 사양, 전압, 전력 소비 등에 대한 자세한 내용을 확인할 수 있습니다.

Arduino에서 Watchdog을 사용하는 예

Arduino IDE, 데이터 유형, 프로그래밍

마지막으로 Arduino IDE의 예제를 통해 Watchdog이 실제로 어떻게 사용되는지 살펴보겠습니다. 보시다시피 인터넷에서 이와 같은 다양한 소스 코드를 찾을 수 있으며, 프로젝트에서 watchdog을 사용하기 위해 연습하고, 수정하고, 자신만의 코드를 만들 수 있습니다. 보자 우리의 예:

#include <avr/wdt.h> // Incluir la biblioteca watchdog (wdt.h)
 
void setup()
{
  wdt_disable(); // Desactivar el watchdog mientras se configura, para que no se resetee
  wdt_enable(WDTO_2S); // Configurar watchdog a dos segundos
}
 
void loop()
{
  wdt_reset(); // Actualizar el watchdog para que no produzca un reinicio
  //Aquí iría el código de tu programa...
}

Arduino 스케치의 이 예에서 볼 수 있듯이 세 가지 기능 워치독 관리를 위한 주목할만한 프로그래밍 언어는 다음과 같습니다.

  • wdt_disable() Arduino를 구성하는 동안 타이머를 비활성화합니다.
  • wdt_enable(아야) 타이머에 간격을 할당하고 타이머를 시작하려면 이전 표에 표시된 대로 해당 시간을 지정해야 합니다.
  • wdt_reset() 할당된 간격을 갱신하고 프로그램이 다시 시작되지 않도록 합니다.

코멘트를 첫번째로 올려

코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자 : Miguel Ángel Gatón
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.