- Kết nối với máy tính để giám sát và hoạt động của mô hình thang máy.
10. Watchdog Timer (WDT)
Watchdog timer (WDT) là bộ đếm độc lập dùng nguồn xung đếm từ bộ tạo xung
được tích hợp sẵn trong vi điều khiển và không phụ thuộc vào bất kì nguồn xung clock ngoại vi nào. Điều đó có nghĩa là WDT vẫn hoạt động ngay cả khi xung clock được lấy từ
pin OSC1/CLKI và pin OSC2/CLKO của vi điều khiển ngưng hoạt động (chẳng hạn như
do tác động của lệnh sleep). Bit điều khiển của WDT là bit WDTE nằm trong bộ nhớ
chương trình ởđịa chỉ 2007h (Configuration bit).
WDT sẽ tựđộng reset vi điều khiển (Watchdog Timer Reset) khi bộđếm của WDT bị tràn (nếu WDT được cho phép hoạt động), đồng thời bit tựđộng được xóa. Nếu vi
điều khiển đang ở chế độ sleep thì WDT sẽ đánh thức vi điều khiển (Watchdog Timer Wake-up) khi bộ đếm bị tràn. Như vậy WDT có tác dụng reset vi điều khiển ở thời điểm cần thiết mà không cần đến sự tác động từ bên ngoài, chẳng hạn như trong quá trình thực thi lệnh, vi điều khiển bị “kẹt” ở một chổ nào đó mà không thoát ra đươc, khi đó vi điều khiển sẽ tựđộng được reset khi WDT bị tràn ể chương trình hoạt động đúng trở lại. Tuy nhiên khi sử dụng WDT cũng có sự phiền toái vì vi điều khiển sẽ thường xuyên được reset sau một thời gian nhất định, do đói cần tính toán thời gian thích hợp để xóa WDT (dùng lệnh CLRWDT). Và để việc ấn định thời gian reset được linh động, WDT còn được hỗ trợ
một bộ chia tần số prescaler được điều khiển bởi thanh ghi OPTION_REG (prescaler này
được chia xẻ với Timer0).
Một điểm cần chú ý nữa là lệnh sleep sẽ xóa bộđếm WDT và prescaler. Ngoài ra lệnh xóa CLRWDT chỉ xóa bộ đếm chứ không làm thay đổi đối tượng tác động của prescaler (WDT hay Timer0).