- K tn i vi máy tính đ giám sát và ho tđ ngca mô hình thang máy.
11. Ch đ SLEEP
ây là ch đ ho t đ ng c a vi đi u khi n khi l nh SLEEP đ c th c thi. Khi đó n u đ c cho phép ho t đ ng, b đ m c a WDT s b xóa nh ng WDT v n ti p t c ho t đ ng, bit đ c reset v 0, bit đ c set, oscillator ng ng tác đ ng và các PORT gi nguyên tr ng thái nh tr c khi l nh SLEEP đ c th c thi.
Do khi ch đ SLEEP, dòng cung c p cho vi đi u khi n là r t nh nên ta c n th c hi n các b c sau tr c khi vi đi u khi n th c thi l nh SLEEP:
- a t t c các pin v tr ng thái VDD ho c VSS
- C n b o đ m r ng không có m ch ngo i vi nào đ c đi u khi n b i dòng đi n c a vi đi u khi n vì dòng đi n nh không đ kh n ng cung c p cho các m ch ngo i vi ho t đ ng.
- T m ng ng ho t đ ng c a kh i A/D và không cho phép các xung clock t bên ngoài tác đ ng vào vi đi u khi n.
- ý đ n ch c n ng kéo lên đi n tr PORTB. - Pin ph i m c logic cao.
¬ “ ánh th c” vi đi u khi n
Vi đi u khi n có th đ c “đánh th c” d i tác đ ng c a m t trong s các hi n t ng sau: - Tác đ ng c a reset ngo i vi thông qua pin
- Tác đ ng c a WDT khi b tràn.
- Tác đ ng t các ng t ngo i vi t PORTB (PORTB Interrupt on change ho c pin INT).
Các bit và đ c dùng đ th hi n tr ng thái c a vi đi u khi n và đ phát hi n ngu n tác đ ng làm reset vi đi u khi n. Bit đ c set khi vi đi u khi n đ c c p ngu n và đ c reset v 0 khi vi đi u khi n ch đ sleep. Bit đ c reset v 0 khi WDT tác đ ng do b đ m b tràn.
Ngoài ra còn có m t s ngu n tác đ ng khác t các ch c n ng ngo i vi bao g m: 1) c hay ghi d li u thông qua PSP (Parallel Slave Port).
2) Ng t Timer1 khi ho t đ ng ch đ đ m b t đ ng b . 3) Ng t CCP khi ho t đ ng ch đ Capture.
4) Các hi n t ng đ c bi t làm reset Timer1 khi ho t đ ng ch đ đ m b t đ ng 5) b dùng ngu n xung clock bên ngoài).
6) Ng t SSP khi bit Start/Stop đ c phát hi n.
7) SSP ho t đ ng ch đ Slave mode khi truy n ho c nh n d li u.
8) Tác đ ng c a USART t các pin RX hay TX khi ho t đ ng ch đ Slave mode đ ng b .
9) Kh i chuy n đ i A/D khi ngu n xung clock ho t đ ng d ng RC. 10)Hoàn t t quá trình ghi vào EEPROM.
11)Ngõ ra b so sánh thay đ i tr ng thái.
Các tác đ ng ngo i vi khác không có tác d ng đánh th c vi đi u khi n vì khi ch đ sleep các xung clock cung c p cho vi đi u khi n ng ng ho t đ ng. Bên c nh đó c n cho phép các ng t ho t đ ng tr c khi l nh SLEEP đ c th c thi đ b o đ m tác đ ng c a các ng t.
Vi c đánh th c vi đi u khi n t các ng t v n đ c th c thi b t ch p tr ng thái c a bit GIE. N u bit GIE mang giá tr 0, vi đi u khi n s th c thi l nh ti p theo sau l nh SLEEP c a ch ng trình (vì ch ng trình ng t không đ c cho phép th c thi). N u bit GIE đ c set tr c khi l nh SLEEP đ c th c thi, vi đi u khi n s th c thi l nh ti p theo c a ch ng trình và sau đó nh y t i đa ch ch a ch ng trình ng t (0004h). Trong tr ng h p
sau l nh SLEEP đ b qua tác đ ng c a l nh này, đ ng th i giúp ta d dàng h n trong vi c ki m soát ho t đ ng c a ch ng trình ng t. Tuy nhiên c ng có m t s đi m c n l u ý nh sau:
- N u ng t s y ra tr c khi l nh SLEEP đ c th c thi, l nh SLEEP s không đ c th c thi và thay vào đó là l nh NOP, đ ng th i các tác đ ng c a l nh SLEEP c ng s đ c b qua.
- N u ng t s y ra trong khi hay sau khi l nh SLEEP đ c th c thi, vi đi u khi n l p t c đ c đánh th c t ch đ sleep, và l nh SLEEP s đ c th c thi ngay sau khi vi đi u khi n đ c đánh th c.
ki m tra xem l nh SLEEP đã đ c th c thi hay ch a, ta ki m tra bit
N u bit v n mang giá tr 1 t c là l nh SLEEP đã không đ c th c thi và thay vào đó là l nh NOP.
Bên c nh đó ta c n xóa WDT đ ch c ch n r ng WDT đã đ c xóa tr c khi th c thi l nh SLEEP, qua đó cho phép ta xác đnh đ c th i đi m vi đi u khi n đ c đánh th c do tác đ ng c a WDT.