PDA

View Full Version : Hỏi về WDT và Sleep chạy chung


nhanh0112
15-01-2010, 01:41 AM
Các bác cho tui hỏi chút vấn đề về sleep mode và watch dog chạy trong cùng 1 chương trình: (16F877a)
1. WDT có chạy khi sleep ko?
2. Nếu WDT có chạy khi đang sleep vậy nó có đánh thức khi đang sleep ko?
3. Giả sử có đoạn code sau viết trên CSS:

#fuse WDT
#int_EXT
Void isr()
{
………
}
Void main()
setup_wdt(WDT_2304MS);
countdown=200;
while(true)
{
Restart_wdt();
scanLED();
if(countdown==0)
sleep();
else{countdown--;}
}

Quét led chung với quét phím và có kích vào ngắt ngoài khi bấm phím, khi có phím đc bấm thì countdown lại đc set lên 200. Nếu ko có phím đc bấm thì chuyển sang chế độ sleep.
Thuật toán như trên có ổn ko? Hay phải tính toán cho WDT và Sleep như thế nào?
Nhờ các bác hướng dẫn giùm! Cảm ơn các bác.

JackSanji
30-09-2013, 05:21 PM
Các bác cho tui hỏi chút vấn đề về sleep mode và watch dog chạy trong cùng 1 chương trình: (16F877a)
1. WDT có chạy khi sleep ko?
2. Nếu WDT có chạy khi đang sleep vậy nó có đánh thức khi đang sleep ko?
3. Giả sử có đoạn code sau viết trên CSS:

#fuse WDT
#int_EXT
Void isr()
{
………
}
Void main()
setup_wdt(WDT_2304MS);
countdown=200;
while(true)
{
Restart_wdt();
scanLED();
if(countdown==0)
sleep();
else{countdown--;}
}

Quét led chung với quét phím và có kích vào ngắt ngoài khi bấm phím, khi có phím đc bấm thì countdown lại đc set lên 200. Nếu ko có phím đc bấm thì chuyển sang chế độ sleep.
Thuật toán như trên có ổn ko? Hay phải tính toán cho WDT và Sleep như thế nào?
Nhờ các bác hướng dẫn giùm! Cảm ơn các bác.
chắc bác cũng đã giải quyết được rồi, nhưng vẫn mạn phép trả lời câu 1 và 2 của bác
1. WDT là một bộ giao động RC riêng biệt, nên nó vẫn chạy khi PIC SLEEP

"The Watchdog Timer (WDT) is a free running on-chip RC oscillator which does not require any
external components. The block diagram is shown in Figure 26-1. This RC oscillator is separate
from the device RC oscillator of the OSC1/CLKIN pin. This means that the WDT will run, even if
the clock on the OSC1 and OSC2 pins has been stopped, for example, by execution of a SLEEP
instruction. "
2. Khi bộ đếm của WDT tràn, nó sẽ tạo ra tín hiệu Reset để đánh thức PIC dậy từ chế độ sleep, cái này bác đọc trong phần 26.4.1 Wake-up from SLEEP trong file e đính kèm!