Ch đ SLEEP

Một phần của tài liệu Thiết kế và điều khiển mô hình thang máy bằng vi xử lý PIC 16F877A (Trang 74)

- 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.

Một phần của tài liệu Thiết kế và điều khiển mô hình thang máy bằng vi xử lý PIC 16F877A (Trang 74)