Watchdog timer là gì? Hướng dẫn sử dụng Watchdog cho Adruino

Watchdog Timer là gì và hướng dẫn sử dụng Watchdog Timer cho Arduino (How to use Watchdog Timer);

Mesenco giới thiệu về Watchdog Timer và tầm quan trọng của nó làm thế nào để cấu hình watchdog timer cho arduino.

Có một vài ví dụ cụ thể để bạn dễ hiểu hơn về cách cấu hình và sử dụng;

Chúng ta cùng đi tìm hiểu nhé

Watchdog Timer là gì
Watchdog Timer là gì

Watchdog timer là gì

Hầu hết vi điều khiển PIC, Arduino (AVR) đều có bộ dao động riêng, (độc lập với bộ dao động của hệ thống) dành riêng cho Watchdog.

Điều này rất hay cụ thể bởi lý do sau:

1/ Không phải chia nhiều (bộ dao động watchdog timer của PIC là khoảng 8ms, có thể dùng các bộ Prescaler để giảm clk watchdog).

AVR: có một bộ dao động độc lập với tốc độ 1Mhz. Đây là giá trị cụ thể tại VCC=5V.

2. Watchdog hoạt động được ở cả ở chế độ “ngủ”. Vì tại chế độ ngủ này, CLK của hệ thống ngừng hoạt động.

3. Trong chế độ vừa ngủ vừa watchdog enable, một số vđk thiết kế là: Đang ngủ —> Bị Watchdog timer —> Nó không khởi động lại mà là thức MCU thức dậy.

Watchdog Timer là gì
Watchdog Timer

Vậy chúng ta có thể hiểu đơn giản là watchdog timer dùng để reset nếu bị lỗi phần mềm:

  • Do người lập trình,
  • Do vi điều khiển bị treo do nhiễu tác động vài nguồn hay nhiễu kiểu điện từ trường…. cường độ cao xông thẳng vào chip;

Từ đó watchdog timer được sử dụng để fix lỗi các công đoạn trên;

Watchdog Timer làm việc như thế nào

Hầu hết các chương trình thường có một vòng lặp, mà nó liên tục đi qua thực hiện các chức năng khác nhau.

Watchdog Timer được nạp một giá trị ban đầu lớn hơn thời gian trễ của toàn bộ chương trình, trường hợp xấu nhất gặp vòng lặp vô hạn, dùng watchdog timer để thoát khỏi vòng lặp vô han ( hay vòng lặp chết);

Nếu xảy ra lỗi và chương trình chính không quay trở lại để đặt lại bộ hẹn giờ, trước khi nó đếm ngược về 0, một ngắt được tạo ra để đặt lại bộ xử lý;

 

Quy trình hoạt động

Cơ quan giám sát khởi động lại

Trong Watchdog timer thì hành động khởi động lại bộ đếm thời gian theo dõi, thường được gọi là “kicking”cơ quan giám sát, thường được thực hiện bằng cách ghi vào cổng điều khiển của bộ giám sát. Trong các máy tính đang chạy hệ điều hành,thiết lập lại watchdog thường được gọi thông qua trình điều khiển thiết bị. Trình điều khiển thiết bị, phục vụ để trừu tượng phần cứng watchdog khỏi các chương trình không gian người dùng, cũng được sử dụng để định cấu hình thời gian chờ, bắt đầu và dừng bộ hẹn giờ.
Lưu đồ thuật toán sử dụng Watchdog Timer
Lưu đồ thuật toán sử dụng Watchdog Timer
 

Cơ quan giám sát một giai đoạn

Với cơ quan giám sát một giai đoạn của Watchdog timer thì đồng hồ bấm giờ có nhiều cấu hình và cho phép thay đổi cấu hình của chúng. Vi điều khiển thường bao gồm một cơ quan giám sát tích cực trên chip. Trong các máy tính khác, bộ giám sát có thể nằm trong một con chip gần đó kết nối trực tiếp với CPU hoặc có thể đặt trên thẻ mở rộng bên trong khung máy tính. Bộ giám sát và CPU có thể chia sẻ tín hiệu đồng hồ chung, như thể hiện trong sơ đồ khối bên dưới, hoặc chúng có tín hiệu đồng hồ độc lập.
Cơ quan giám sát giai đoạn
Cơ quan giám sát giai đoạn

Cơ quan giám sát nhiều tầng

Watchdog timer  dùng cơ quan giám sát nhiều tầng, hai hoặc nhiều bộ định thời đôi khi được xếp tầng để tạo thành bộ đếm thời gian  theo dõi nhiều tầng, trong đó mỗi bộ định thời được gọi là giai đoạn hẹn giờ hoặc đơn giản là một giai đoạn.
Cơ quan giám sát nhiều tầng
Cơ quan giám sát nhiều tầng
Ví dụ, sơ đồ khối bên dưới hiển thị một cơ quan giám sát ba giai đoạn. Trong một cơ quan giám sát nhiều tầng, chỉ có giai đoạn đầu tiên mới được xử lý bởi bộ xử lý. Khi hết thời gian đầu, một hành động khắc phục được tiến hành và giai đoạn tiếp theo trong dòng thông tin được bắt đầu. Khi mỗi giai đoạn kết thúc (hết thời gian) thì nó sẽ kích hoạt hành động khắc phục và bắt đầu cho một giai đoạn mới, cho tới giai đoạn cuối cùng
Thông thường, bộ định thời giám sát một giai đoạn được sử dụng để khởi động lại máy tính, trong khi đó bộ định thời giám sát nhiều tầng sẽ kích hoạt tuần tự một loạt các hành động khắc phục, với giai đoạn cuối sẽ kích hoạt khởi động lại máy tính.

Sử dụng Watchdog Timer cho Arduino

Bước 1: Cần thêm thư viện sau:

#include <avr/wdt.h>

Để sử dụng watchdog timer cho arduino cần thêm thư viện đó ;

Bước 2: Cho phép hoạt động và không cho phép hoạt động Watchdog timer;

Cho phép Watchdog timer hoạt động:

wdt_enable(WDT Reset Timer);

Ví dụ:

wdt_enable(WDTO_5S);

Watchdog timer có thể cho phép cài đặt thời gian khác nhau,  Thời gian thiết lập phải lớn hơn thời gian cần thiết cho vòng lặp chương trình sẽ quay trở lại,

Ở vi điều khiển Arduino (AVR): Tối đa là 8s còn min là 15ms có thể cài đặt;

Dưới đây là bảng Watchdog timer cài đặt:

Bảng watchdog timer cài đặt
Bảng watchdog timer cài đặt

 

  • Không cho phép Watchdog timer hoạt động;

wdt_reset();

chức năng reset vòng lặp để cài đặt lại giá trị về 0 để lặp lại từ đầu;

 

Ví dụ:

#include <avr/wdt.h>
void setup(){

   //watchdog timer với 2s

   wdt_enable(WDTO_2S);

}

void loop(){
// toàn bộ chương trình chạy
   wdt_reset(); // thực hiện reset bộ đếm về 0;
}

Một số ví dụ dùng watchdog timer cho arduino để tiết kiệm năng lượng và đánh thức vi điều khiển;

#include <SPI.h>
#include "nRF24L01.h"
#include "RF24.h"
#include "LowPower.h"

RF24 radio(9,10);

const uint64_t pipe = 0xF0F0F0F0E1LL;

void setup() {
//Setup Watchdog Timer with 8 Seconds Reset
wdt_enable(WDTO_8S);

//Setup Wireless nRF24L01 Radio
radio.begin();
radio.setRetries(15,15);
radio.setPayloadSize(30);
radio.setPALevel(RF24_PA_MAX); 
radio.setDataRate(RF24_250KBPS);

radio.openWritingPipe(pipe);
radio.stopListening();
}

void loop() {
double Temperature = ((5.0/1024.0) * analogRead(A0)) * 100;
radio.powerUp();
delay(5);
radio.write(Temperature,sizeof(double));

//Turn off Radio
radio.powerDown();

// Set sleep to full power down. Only external interrupts or
// the watchdog timer wake the CPU after 7 Seconds
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
}

Cảm ơn mọi người đã theo dõi bài viết Watchdog timer là gì? Hướng dẫn sử dụng Watchdog cho Adruino. Nếu có bất kì tắc mắc hay hỏi đáp gì vui lòng liên hệ qua email: info@mesenco.com

 

Công ty TNHH MESENCO 
Chuyên cung cấp và lắp đặt các sản phẩm :  Công tắc, Ổ cắm, Đèn Led, Camera giám sát, Pin năng lượng mặt trời, Thiết bị khách sạn,… cho các dự án, chung cư,khách sạn,TBA,..
HOTLINE : 098 588 2002( Mr Vũ)
Email : info@mesenco.com

 

 

 

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

0985882002