Còn nếu ko dùng watchdog, tức là bình xăng của hắn ta như niêu cơm Thach Sanh, hết lại tự đầy. Do đó hắn rất sung sướng chạy suốt ngày ko nghỉ nên tai nạn giao thông do ngủ gật còn nguy hiểm hơn cái việc hết xăng rất nhiều.(Bởi vậy, việc dùng xe phải đổ xăng lại rất có lý, chính thao tác đổ xăng làm cho anh ta thoát khỏi cơn buồn ngủ)
Thông báo
Collapse
No announcement yet.
Watchdog là gì?
Collapse
X
-
theo tui bít thì phụ thuộc bạn đặt CLRWDT ở đâu để chỉ dẫn WDT resetNguyên văn bởi minham Xem bài viếtCho mình hỏi nếu dùng WDT thì biết khi nào cần phải reset lại nó, ko lẽ cứ mấy lệnh thì phải reset nó ah
Last edited by soulasylum; 18-03-2011, 17:13.
Comment
-
89C52 ko có WDT, nếu bạn này muốn dùng WDT của 89 thì hãy xài 89S51 hoặc 89S52, nhưng chỉ có 1 mức thời gian duy nhất là 16383 chu kỳ máy (khoảng 16.3ms, nếu chạy thạch anh 12MHz). Nếu dùng C, thì khai báo như sau, trước hàm while(1):Nguyên văn bởi Thaphuong Xem bài viếtChào các cao thủ, em nghe bác Bình Anh có nói rằng chức năng Watchdog gần như ko thể thiếu trong các ứng dụng cho VĐK, vậy nó để làm gì? nó hoạt động như thê nào? sao em thấy con 89C52 ko có chức năng này nhỉ?
Bác nào có thêm 1 ví dụ mẫu về code sử dụng watchdog thì hay quá!
WDTPRG|=0x07;
WDTRST=0x1E;
WDTRST=0xE1;
Sau đó bạn này cứ chèn câu lệnh :
WDTRST=0x1E;
WDTRST=0xE1;
vào những chỗ thích hợp (<16.3ms):Last edited by nguyen24; 04-07-2011, 15:29.- Mạch nạp vdk 8051, AVR, PIC, EEPROM
- Linh kiện điện tử cho sinh viên
Comment
-
Các bạn cho mình hỏi watchdog trong avr khi khai báo trong codevision có dạng
vậy trong thân ct chính// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/16k
#pragma optsize-
WDTCR=0x18;
WDTCR=0x08;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endifcần thực hiện lệnh gì để sử dụng được watchdog?while(1){};
Thanks you,Đối với Tôi Đam mê là yếu tố không thể thiếu để quyết định sự Thành Công ...!
Gmail: -Mobile: 0989.194.472
Comment
-
Bạn phải thực hiện lệnh clear watchdog nếu không MCU sẽ bị reset .Nguyên văn bởi thiennv0109 Xem bài viếtCác bạn cho mình hỏi watchdog trong avr khi khai báo trong codevision có dạng
vậy trong thân ct chính
cần thực hiện lệnh gì để sử dụng được watchdog?
Thanks you,
#asm("wdr");Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Comment
-
Most microcontroller have at least one watchdog facility(hầu hết các vđk có ít nhất một cơ quan giám sát). The watchdog basically a timer that is refreshed by the user program(cơ quan giám sát cơ bản là một bộ đếm thời gian được làm tươi bởi chương trình người dùng). Whenever(bất cứ khi nào) the program failed to the refresh the watchdog, a reset occurs(bất cứ khi nào chương trình không thể làm tươi các giám sát, thì reset xảy ra). The watchdog timer use to detect a system problem(bộ đếm thời gian giám sát(watchdog timer) được dùng để phát hiện các vấn đề thệ thống), such as(chẳng hạn như) the program being(trương trình bắt đầu) endless loop(vòng lặp vô tận).
This safety feature prevent runaway solfware(phần mềm trật đường ray(chạy sai)) and stops the microcontroller from executing meaningless and unwanted code(tính năng an toàn cản trở phần mềm chạy sai và dừng các vđk khi xuất hiện các đoạn mã không mong muốn). Watchdog facilities(cơ quan giám sát) are commonly used in real – time systems where successful or termination of one or more(của một hoặc nhiều) activities must be checked regularly(các cơ quan giám sát thường được dùng trong các hệ thống thời gian thực, nơi mà thành công hoặc kết thúc của một hoặc nhiều hoạt động phải được kiểm tra thường xuyên).
Đây là giới thiêu tính năng của watchdog timer mình dịch trong sách Newnes.Advanced.PIC.Microcontroller.Projects.in.C của tác giả Dohan Ibrahim hi vọng nó giúp bạn hiểu thêm về watchdog timer
Comment
-
@queduong/@all: cho em hỏi cái lệnh #asm("wdr"); đặt ở vị trí nào là hợp lí ( đặt ngoài, trước vòng while(1) {} phải không các bác?)
Các giá trị :
có ý nghĩa ntn, nên để bao nhiêu là hợp lí (dùng thạch anh 4MHz)\// Watchdog Timer Prescaler: OSC/16k
#pragma optsize-
WDTCR=0x18;
WDTCR=0x08;
Tks all,Đối với Tôi Đam mê là yếu tố không thể thiếu để quyết định sự Thành Công ...!
Gmail: -Mobile: 0989.194.472
Comment
-
Nguyên văn bởi thiennv0109 Xem bài viết@queduong/@all: cho em hỏi cái lệnh #asm("wdr"); đặt ở vị trí nào là hợp lí ( đặt ngoài, trước vòng while(1) {} phải không các bác?)
Các giá trị :
có ý nghĩa ntn, nên để bao nhiêu là hợp lí (dùng thạch anh 4MHz)\
Tks all,
Lệnh đó bạn đặt ( phải đặt nhiều ở trong chương trình ) ... ví dụ bạn chọn watchdog sau 1 giây sẽ reset thì trước đó bạn phải chèn lệnh clear watchdog vào.
diễn giải :
--- clear watchdog
--- thực hiện các lệnh ( tổng thời gian các lệnh phải nhỏ hơn thời gian watchdog )
lại Clear watchdog
--- thực hiện các lệnh
lại clear watchdog
----
Thực hiện lệnh #asm("wdr"); ở bất cứ dòng lệnh nào . Mục đích của ta clear ( hay làm mới ) hay reset bộ đếm của watchdog ... làm cho nó không reset MCU.
--- Còn tùy vào ứng dụng ta để thời gian ít hay nhiều ... ít thời gian thì ta phải chèn nhiều lệnh clear , xảy ra sự cố thì MCU reset ngay, nhiều thời gian thì đỡ phải clear nhiềuModule RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Comment
-
Theo thời gian, hầu hết các hàm đều dính dáng đến trì hoãn. Cứ chèn lệnh xoá WDT vào trong delay() là được.
Ngoài ra, cũng phải chèn nó vào các vòng lặp vô hạn.
Khi dùng chế độ ngủ/nghỉ thì tạm tắt WDT đi. Khi CPU thức/tỉnh thì cho phép trở lại.!e
- 1 like
Comment
-
Nguyên văn bởi MHz Xem bài viếtVề WDT bác BA đã giải thích rõ ràng roài, tôi thấy trong PIC tutorial của Nigel (cảm ơn ai đó đã dịch ra tiếng Việt) có nói về WDT, xin phép được post lên để chúng ta cùng tham khào :
Watchdog Timer:
Watchdog Timer là cái gì?
Giả sử bạn viết một chương trình, bạn mong đợi chương trình này sẽ chạy nếu không có gì trục trặc xảy ra thì nó sẽ không bao giờ dừng lại, như vậy bạn phải làm một vòng lặp để khi chương trình chạy đến điểm cuối thì nó lại quay trở về điểm bắt đầu. Nhưng mà hãy xem một trường hợp:
Giả sử chương trình kiểm tra một chân input, nếu nó lên mức cao thì con Pic sẽ tiếp tục kiểm tra một chân input thứ hai có lên mức cao hay không, nếu chân input thứ hai không lên mức cao, con Pic sẽ ngồi đó chờ và nó sẽ chỉ thoát ra khỏi chỗ ngồi của nó nếu chân input thứ hai lên mức cao.
Bây giờ hãy xem một trường hợp khác, giả sử như bạn viết một chương trình, bạn compiled nó thành công, và ngay cả bạn đã cho chạy mô phỏng từng bước, từng bước một trên máy tính, bằng MPLAB chẳng hạn, có vẽ như mọi chuyện đều tốt, bạn đem nạp vào con Pic. Sau một thời gian chạy thử, con Pic thình lình bị kẹt vào nơi nào đó trong chương trình mà không thể thoát ra được trạng thái hiện tại.
Điều gì là cần thiết để giải quyết hai trường hợp trên, reset lại hay vẫn để cho nó bị kẹt không thoát ra được ?, đó là mục đích của mạch watchdog.
Mạch watchdog thì không phải là mới mẽ gì, có rất nhiều microprocessors và microcontrollers đã có mạch watchdog, nhưng mà nó làm việc ra sao?.
Bên trong con Pic có một mạch RC, mạch này cung cấp 1 xung Clock độc lập với bất kỳ xung Clock nào cung cấp cho Pic. Khi Watchdog Timer (viết tắt là WDT) được cho phép (enabled), nó sẽ đếm bắt đầu từ 00 và tăng lên 1 cho đến FFh, khi nó tăng từ FFh đến 00 ( FFh+1) thì con Pic sẽ bị Reset bất kể đang làm gì, chỉ có 1 cách là ngăn không cho WDT đếm tới 00.
Khi con Pic bị kẹt không thể thoát ra khỏi tình trạng hiện tại thì WDT vẫn tiếp tục đếm mà không bị bất kỳ điều gì ngăn cấm nó đếm tới FF và đến FF+1, vì vậy nó sẽ reset con Pic làm cho chương trình phải khởi động lại từ đầu.
Để sử dụng WDT chúng ta cần làm 3 việc.
Thứ nhất, cần thời gian bao lâu để reset WDT?.
Thứ hai, làm sao xoá WDT?.
Cuối cùng, chúng ta phải nói cho con Pic biết chương trình cho phép WDT hoạt động.
Bây giờ bạn hãy xem từng cái một:
Trong Datasheet của con Pic có nói rằng, WDT có thời gian từ lúc Start cho đến khi kết thúc là 18ms, tuy nhiên nó cũng phụ thuộc vào vài yếu tố, nguồn cung cấp, nhiệt độ của con Pic bởi vì mạch dao động của WDT là RC. Tuy nhiên chúng ta cũng có thể làm cho thời gian dài hơn. Bên trong con Pic có một cái gọi là Prescaler tạm dịch là đặt tỷ lệ, chúng ta có thể lập trình để chia xung Clock của mạch RC, chúng ta chia RC Clock càng
nhiều thì thời gian WDT reset càng dài.Prescaler nằm trên thanh ghi OPTION có địa chỉ 81h từ bit0 đến bit2, bên dưới là bảng chia tỷ lệ thời gian WDT.
Bit 2 1 0 Rate WDT Time
0 0 0 1:1 18mS
0 0 1 1:2 36mS
0 1 0 1:4 72mS
0 1 1 1:8 144mS
1 0 0 1:16 288mS
1 0 1 1:32 576mS
1 1 0 1:64 1.1Seconds
1 1 1 1:128 2.3Seconds
Hãy nhớ rằng các khoảng thời gian này không phụ thuộc vào tần số xung Clock bên ngoài, nó xác định bằng thời gian thực chứ không phải đếm chu kỳ xung clock. Hãy xem ví dụ WDT sẽ reset con Pic trong khoảng ½ giây khi con Pic bị kẹt. Giá trị gần nhất mà ta có theo bảng trên là 576mS hoặc 0.576 seconds.
Đầu tiên chúng ta gởi giá trị b’101’ tới thanh ghi OPTION, như sau:
movlw b’101’ ;This is 0x05 in Hex
movwf 81h ;This is the Option Register
Quá đơn giản !, bây giờ, có một mẹo nhỏ.
Mặc nhiên prescaler được gán cho một bộ định thời khác, vì vậy ta phải thay đổi toàn bộ WDT. Trước tiên phải reset một bộ đếm khác tới giá trị 0, sau đó chuyển sang Bank1 để gán prescaler cho WDT và thiết lập thời gian rồi sau đó lại quay về Bank0, đoạn code bên dưới với xx là giá trị ta sẽ chọn cho prescaler.
Bcf STATUS,0 ;make sure we are in Bank 0
Clrf 01h ;address of the other timer – TMR0
Bsf STATUS,0 ;switch to Bank 1
Clrwdt ;reset the WDT and prescaler
movlw b’1xxx’ ;Select the new prescaler value and assign
movwf OPTION ;it to WDT
bcf STATUS,0 ;come back to Bank 0
Lệnh CLRWDT là để xoá WDT, chúng ta phải làm điều này trước khi nó reset con Pic, chúng ta cần tính toán nơi nào trong chương trình mà bộ đếm của WDT sẽ tràn để đặt lệnh CLRWDT trước thời điểm này để bảo đảm con Pic không reset. Nếu chương trình của bạn dài, có thể phải đặt hơn 1 lệnh CLRWDT trong chương trình. Ví dụ bạn sử dụng giá trị default mặc nhiên là 18ms thì phải bảo đảm rằng chương trình sẽ nhìn thấy
lệnh CLRWDT sau mỗi 18ms.
Bây giờ chúng ta phải tìm cho ra đoạn code của chúng thực thi trong thời gian thực là bao lâu, nguyên lý thì rất đơn giản nhưng mà có thể làm cho bạn dựng cả tóc lên đấy !.
thế bác share luôn tài liệu cho e với ạ
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Máy đo khuôn mẫubởi vi van phamQuá dễ, Mua cái máy xq quét tòan thân, lấy bàn và khung di chuyển. Tháo đầu xquang ra bán ve chai, mua cái máy siêu âm gắn vào vị trí đầu đèn. Setup máy là chạy chính xác, còn file Setup thì chưa nghĩ ra....
-
Channel: Đo lường và điều khiển dùng máy tính
07-06-2026, 08:49 -
-
Trả lời cho Máy Phun sương tạo ầm Trung Quốc.bởi nguyendinhvanMạch tạo sương là tự dao động.
Mach 555 là đóng mở chu kỳ tần số thấp.
IC 555 giá rẻ, chỉ chạy lên tần số vài trăm ki lô hẹc thôi. Thăng cao hơn là méo dạng rồi tịt.
Mach sương thì dao động tần số tầm 2 mê ga hẹc cơ !...-
Channel: Tâm tình dân kỹ thuật
07-06-2026, 00:09 -
-
bởi nguyendinhvan
Cái máy đo này mắc tiền quá !
Anh em dtvn có giải pháp nào tự chế được không ?...-
Channel: Đo lường và điều khiển dùng máy tính
07-06-2026, 00:00 -
-
bởi nguyendinhvanOi giời.
Thơi buổi PLC rồi, cậu còn hỏi mấy thứ cổ lỗ sĩ này nữa.-
Channel: Tâm tình dân kỹ thuật
06-06-2026, 22:59 -
-
bởi nguyendinhvanChuyện này cũ rồi.
Họ trả lương cho CN, sau đó lại bán hàng thu tiền về. Họ còn cấp các dịch vụ như chỗ ăn ở, quán cafe , giải trí, phương tiện giao thông. Mục đích là thu tối đa số tiền đã chi trả.
Hàng hóa sx ra, chuyển...-
Channel: Tìm mua
06-06-2026, 22:56 -
-
Trả lời cho Yêu thơ mê nhạc, mời các bác vào đây!bởi vi van phambao nhiêu năm quên bẳng đi, là mình còn có 1 chút xíu nghệ thuật bài bản, đã dạy cho con cháu chơi đàn, dù bố mẹ và chúng không xem là quan trọng. Hôm qua ngày bế mạc lớp lá, bỗng dưng thằng cháu ngoại thấy con bé được sơ giới thiệu...
-
Channel: Tâm tình dân kỹ thuật
06-06-2026, 21:58 -
-
bởi ittcChào các anh em, tình hình là mình lo làm ăn không để ý sức khỏe, giờ có chút vấn đề rồi? không biết trên này có anh em nào độ tuổi U35 -> 40 đang có dùng các loại thuốc, thuốc bổ hay thực phẩm chức năng giúp bổ thận tráng dương,...
-
Channel: Tâm tình dân kỹ thuật
05-06-2026, 12:28 -
-
bởi theidiotcatTrong thế giới phần cứng năm 2026, AMD Ryzen 5 7500X3D không chỉ là một cái tên mới, nó là một tuyên ngôn về hiệu suất. Dựa trên các thử nghiệm khắt khe trong môi trường chơi game chuyên nghiệp, con chip này đã chứng minh rằng: bạn không cần...
-
Channel: Đánh giá sản phẩm DTVN
05-06-2026, 10:05 -
-
bởi VinhPham92Chào các bác,
Em vừa dự một cái Odoo Business Show 2026 tuần rồi, ngồi nghe mấy session về tự động hóa sản xuất mà em thấy có vài điểm thấy đáng chia sẻ với mấy anh em làm kỹ thuật ở đây.
Câu hỏi của các doanh nghiệp.
Hôm đấy đi thì các doanh...-
Channel: Lập trình PLC và ứng dụng
05-06-2026, 09:18 -
-
bởi quang4789Mình có cái tay chuyển số chơi game của PXN, hiệu là PXN shifter A7, nó bị lỗi 1 con biến trở chỗ gạt lên xuống dùng để xác định là đang đẩy lên, ở giữa, hay gạt về. Con biến trở này giá trị là 10kOhm, sau khi bị hư thì mình đo chỉ...
-
Channel: Hướng dẫn tìm thông tin linh kiện
03-06-2026, 12:04 -

Comment