WATCHDOG TIMER LÀ GÌ

Ở bài xích này, Mình reviews về Watchdog Timer cùng tầm đặc trưng của nó; làm cố gắng nào nhằm cấu hình watchdog timer đến arduino;

Vậy Watchdog Timer là vật gì,

Làm cụ làm sao nhằm thông số kỹ thuật watchdog timer;

Có một vài ba ví dụ cụ thể để bạn dễ hiểu hơn về kiểu cách thông số kỹ thuật với sử dụng;

Nào bọn họ cùng tra cứu hiểu;

I.Watchdog timer là cái gì;

Hầu hết vi tinh chỉnh PIC, Arduino (AVR) đều sở hữu cỗ dao động riêng biệt, *hòa bình cùng với cỗ giao động của hệ thống) dành riêng cho Watchdog.

Bạn đang xem: Watchdog timer là gì

Như vậy rất thú vị rõ ràng bươi nguyên nhân sau:

1/ Không phải phân chia những (ví dụ cỗ dao động watchdog timer của PIC khoản 8ms, rất có thể sử dụng các cỗ presscale để bớt clk watchdog).

AVR: gồm một cỗ xấp xỉ tự do cùng với vận tốc 1Mhz. đấy là quý giá cụ thể trên VCC=5V.

Xem thêm: Hack Game Vĩnh Hằng Kỷ Nguyên Lậu Trung Quốc Full Vàng, Kim Cương

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

3. Trong chính sách vừa ngủ vừa watchdog anable, một vài vđk vẫn kiến tạo là: Đang ngủ —> Bị Watchdog timer —> Nó không khởi cồn lại mà là thức MCU tỉnh dậy.

Vậy watchdog timer dùng để làm rephối nếu bị lỗi phần mềm:

Do fan thiết kế,Do vi tinh chỉnh bị treo vì chưng nhiễu ảnh hưởng vài nguồn hay nhiễu đẳng cấp năng lượng điện trường đoản cú trường…. cường độ dài xông thẳng vào chip;

Từ đó ta sử dụng watchdog timer để fix lỗi những quy trình trên;

II. Watchdog Timer thao tác làm việc như thế nào;

*
Hầu không còn các lịch trình thông thường sẽ có một vòng lặp, mà lại nó thường xuyên đi qua tiến hành những tác dụng không giống nhau.

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

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

III. Sử dụng Watchdog Timer mang lại Arduino:

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

#include

Để thực hiện watchdog timer đến arduino yêu cầu adđ tlỗi viện đó ;

Bước 2: Cho phép với ko có thể chấp nhận được Watchdog timer;

Cho phxay Watchdog timer hoạt động:

Cú pháp: wdt_enable(WDT Remix Timer);

Ví dụ:

wdt_enable(WDTO_4S);

Watchdog timer hoàn toàn có thể có thể chấp nhận được setup thời gian không giống nhau, Thời gian tùy chỉnh cấu hình cần to hơn thời hạn quan trọng mang đến vòng lặp lịch trình đang trở lại,

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

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

THRESHOLD VALUECONSTANT NAMESUPPORTED ON
15 msWDTO_15MSATMega 8, 168, 328, 1280, 2560
30 msWDTO_30MSATMega 8, 168, 328, 1280, 2560
60 msWDTO_60MSATMega 8, 168, 328, 1280, 2560
1đôi mươi msWDTO_120MSATMega 8, 168, 328, 1280, 2560
250 msWDTO_250MSATMega 8, 168, 328, 1280, 2560
500 msWDTO_500MSATMega 8, 168, 328, 1280, 2560
1 sWDTO_1SATMega 8, 168, 328, 1280, 2560
2 sWDTO_2SATMega 8, 168, 328, 1280, 2560
4 sWDTO_4SATMega 168, 328, 1280, 2560
8 sWDTO_8SATMega 168, 328, 1280, 2560
Không cho phép Watchdog timer hoạt động;

wdt_reset();

công dụng remix vòng lặp để cài đặt lại cực hiếm về 0 để lặp lại tự đầu;

Example:

#include void setup() //watchdog timer cùng với 2s wdt_enable(WDTO_2S);void loop()// toàn thể công tác chạy wdt_reset(); // tiến hành remix bộ đếm về 0;Dưới đây là một ví dụ sử dụng watchdog timer mang đến arduino để tiết kiệm tích điện, đánh thức vi điều khiển;

#include #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 Resetwdt_enable(WDTO_8S);//Setup Wireless nRF24L01 Radioradio.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 Radioradio.powerDown();// Set sleep to lớn full power down. Only external interrupts or// the watchdog timer wake the CPU after 8 Secondsset_sleep_mode(SLEEP_MODE_PWR_DOWN);