Ðề tài: thời gian Watchdog
View Single Post
Old 12-03-2008, 06:33 PM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi member_tdh View Post
Làm thế nào để tính thời gian Watchdog nhỉ?

mình chỉ biết:

1:32 -> 1ms
1:65536 -> 268s

vậy:

1:512 -> ? giây ?

giúp mình đi?
Không đơn giản như vậy đâu bạn. WDT dùng một nguồn dao động 31 kHz, với một bộ chia trước thay đổi từ 1:32 đến 1:65536. Ngoài ra, WDT còn dùng chung một bộ chia trước khác với Timer0. Nếu bộ chia trước dùng chung được gán cho Timer0, WDT chỉ dùng bộ chia trước của riêng nó. Và với hệ số 1:32, thời gian chờ tương ứng sẽ là 1/(31 kHz/32) = 1 ms (xấp xỉ).

Nếu bộ chia trước dùng chung được gán cho WDT, và chúng ta dùng các hệ số chia cực đại cho cả hai bộ chia trước, tức là 1:65536 và 1:128, khi đó chúng ta có thời gian chờ lớn nhất, tương ứng với 1/(31 kHz/(65536*128)) = 270 giây (xấp xỉ).

Giá trị tần số thực sự của nguồn dao động cấp cho WDT là một giá trị lẻ, hơi lớn hơn 31 kHz một chút. Do đó, phạm vi thời gian chờ của WDT được mô tả là tối thiểu 1 ms, và tối đa 268 giây. Thời gian chờ thực sự phụ thuộc vào sự phối hợp của hai bộ chia trước.

Do đó, câu hỏi của bạn "1: 512 => ? giây" sẽ có nhiều câu trả lời, tùy vào sự phối hợp của hai bộ chia trước. Hay nói cách khác, bạn phải cho biết giá trị gán cho bộ chia trước dùng chung giữa WDT và Timer0 thì mới có một câu trả lời chính xác.

Công thức tổng quát: thời gian chờ = 1/(31000/(hệ số chia trước của WDT*hệ số chia trước dùng chung)) (tính bằng giây)

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn