이 새로운 기사에서 우리는 지키는 개, 용도 및 프로젝트에서 사용하는 방법 아두 이노. 흥미롭지만 알려지지 않은 이 기능에 대해 알아야 할 모든 것. 그리고 그렇습니다. 이름에서 알 수 있듯이(워치독) 일부 문제를 추적하는 데 사용할 수 있습니다.
여기서 우리는 볼 것이다 당신이 알아야 할 모든 것 에 관하여…
감시견이란 무엇입니까?
컴퓨팅에서, 지키는 개 시스템이나 프로그램의 작동을 모니터링하는 데 사용되는 감독 메커니즘입니다. 주요 기능은 충돌이나 정지와 같은 비정상적인 상황이나 시스템 오류를 감지하고 대응하며, 지속적인 작동이나 시스템 복구를 보장하기 위한 시정 조치를 취하는 것입니다.
감시견 타이머로 작동 특정 시간 간격으로 구성됩니다. 시스템이나 프로그램이 해당 시간 간격 내에 특정 작업을 수행하지 않거나 워치독에 전원을 공급하지 않는 경우(예: 재시작), 워치독은 시스템이 원치 않는 상태에 있거나 올바르게 응답을 멈춘 것으로 가정하고 미리 결정된 작업을 수행합니다. 이 작업은 구현에 따라 다를 수 있으며 시스템 재부팅, 오류 로그 생성, 경보 실행 또는 문제 해결을 위한 특정 단계 수행이 포함될 수 있습니다.
워치독은 운영 체제와 서버부터 장치에 이르기까지 다양한 컴퓨터 시스템과 장치에서 사용됩니다. Arduino를 포함한 임베디드 및 중요 실시간 시스템. 주요 목표는 문제를 자동으로 감지하고 대응하여 시스템 안정성과 가용성을 향상함으로써 장애 상황에서 수동 개입의 필요성을 줄이는 것입니다.
Arduino 워치독이란 무엇입니까?
Arduino의 감시 타이머는 애플리케이션의 필요에 따라 조정되어야 합니다. 그 워치 독 타이머 내부 128kHz 클록 소스를 사용합니다(사용된 보드 및 MCU에 따라 다를 수 있음). 활성화되면 XNUMX부터 사용자가 미리 지정한 값까지 카운트가 시작됩니다. Watchdog Timer가 이 값에 도달했을 때 재설정되지 않으면 마이크로컨트롤러가 재설정됩니다.
워치독 타이머 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에서 Watchdog을 사용하는 예
마지막으로 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() 할당된 간격을 갱신하고 프로그램이 다시 시작되지 않도록 합니다.