산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

워치독 타이머 이해하기: 마이크로컨트롤러 행 방지 원리

부품 및 소모품

부품 수량
아두이노 우노 (Arduino UNO) 1

앱 및 온라인 서비스

아두이노 IDE (Arduino IDE)

프로젝트 소개

마이크로컨트롤러가 무한 루프에 빠져 혼란스러워하는 상황😖. 작업을 수행하는 동안 마이크로컨트롤러가 멈추거나 걸리는 경우가 있나요😖. 일반적인 문제 해결 방법은? 리셋 버튼, 맞죠? 😕 매번 버튼을 누르는 것이 현실적으로 가능할까요? 이 작업을 자동으로 수행하는 장치가 있다면 어떨까요? 좋은 생각입니다. 쿨...! 🙂

네! 이제 마이크로컨트롤러 내부에 이미 있는 그런 장치에 대해 논의하겠습니다. 바로 워치독 타이머(Watchdog Timer)입니다.

"워치독 타이머(Watchdog Timer, WDT)는 메인 프로그램이 주기적으로 서비스하지 않으면 자동으로 시스템 리셋을 생성하는 하드웨어 타이머입니다. 소프트웨어 또는 하드웨어 결함으로 인해 멈추는 임베디드 장치를 자동으로 리셋하는 데 자주 사용됩니다." (os.mbed.com/cookbook/WatchDog-Timer).

개에게 먹이 주기!

집에 개가 있다고 상상해보세요. 정기적으로 개에게 먹이를 주어야 합니다. 하루라도 먹이를 주지 않으면 개가 물 것입니다! 워치독 타이머도 이와 비슷하게 작동합니다.

워치독 타이머 이해하기: 마이크로컨트롤러 행 방지 원리

프로그램의 메인 부분은 반복 실행됩니다(loop). 워치독 타이머를 메인 프로그램의 총 지연보다 큰 초기값으로 로드하여 활성화합니다. 메인 프로그램이 실행될 때마다 이 타이머를 리셋합니다. 어떤 경우든 메인 프로그램이 타이머가 0으로 카운트다운되기 전에 돌아와 타이머를 리셋하지 않으면, 프로세서를 리셋하는 인터럽트가 발생합니다. 이렇게 워치독 타이머는 마이크로컨트롤러가 멈추는 것을 방지합니다.

아두이노에서 워치독 타이머를 사용해 봅시다 ;)

아두이노 우노는 ATMEGA328P 마이크로컨트롤러를 사용합니다.

워치독 타이머 이해하기: 마이크로컨트롤러 행 방지 원리

워치독 타이머 라이브러리

#include 

아두이노에서 워치독 타이머를 사용하려면 이 라이브러리가 필요합니다.

워치독 타이머 활성화

wdt_enable(WDT Reset Timer);

워치독 타이머를 활성화하려면, WDT RESET TIMER 값은 15ms ~ 8s 범위에서 설정합니다.

워치독 타이머 이해하기: 마이크로컨트롤러 행 방지 원리

예: wdt_enable(WDTO_4S); -- 4초로 워치독 타이머 활성화

워치독 타이머 리셋

wdt_reset();

이 함수는 워치독 타이머를 리셋하는 데 사용합니다. loop() 안에 리셋 함수를 사용하세요. 프로그램이 워치독 타이머의 임계 지연보다 큰 delay()를 사용하는 경우, 그 delay 앞에도 리셋 함수를 추가해야 합니다. 그렇지 않으면 해당 작업이 완료되기 전에 마이크로컨트롤러가 리셋됩니다.

워치독 타이머 비활성화

wdt_disable();

예제 코드

#include 

void setup() {
  Serial.begin(9600);
  Serial.println("Setup started :");
  // WDT 활성화 전 지연
  // 이 지연은 모든 초기 작업 완료를 돕습니다
  delay(2000);
  wdt_enable(WDTO_4S);
}

void loop() {
  Serial.println("LOOP started ! ");
  for (int i = 0; i <= 5; i++) {
    Serial.print("Loop : ");
    Serial.print(i);
    Serial.println();
    delay(1000);
    wdt_reset();
  }
  // MCU를 멈추게 하는 무한 루프
  while (1) {}
}

출력 결과

워치독 타이머 이해하기: 마이크로컨트롤러 행 방지 원리

피드백, 질문, 토론은 댓글 섹션에 남겨주세요.

코드

전체 코드 (Arduino)
#include 
void setup() {
  Serial.begin(9600);
  Serial.println("Setup started :");
  delay(2000);
  wdt_enable(WDTO_4S);
}
void loop() {
  Serial.println("LOOP started ! ");
  for (int i = 0; i <= 5; i++) {
    Serial.print("Loop : ");
    Serial.print(i);
    Serial.println();
    delay(1000);
    wdt_reset();
  }
  // MCU를 멈추게 하는 무한 루프
  while (1) {}
}

제조공정

  1. 인서트 몰딩: 다중 소재 생산의 효율성 증대 및 비용 절감
  2. 프로토타이핑 설명: 스타트업을 위한 핵심 검증 단계
  3. 리니어 모터 이해: 전기 에너지에서 정밀 직선 운동으로
  4. CNC 선삭 가공 설명: 고품질 부품을 위한 정밀 가공
  5. 주조소(파운드리) 이해: 금속이 현대 산업의 빌딩 블록이 되는 곳
  6. 다단 펌프 이해: 기능, 용도 및 이점
  7. 프레스 피더의 작동 원리, 기능 및 산업적 응용 이해하기
  8. 수중 펌프(잠수 펌프) 이해: 작동 원리와 주요 장점
  9. 음료 로봇 이해: 기술, 자동화, 음료 산업에서의 역할
  10. 메커니컬 프레스 설명: 기능, 유형, 산업 응용 분야