Hình 6.10 Sđ khi CCP

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 68 - 70)

- K tn i vi máy tính đ giám sát và ho tđ ngca mô hình thang máy.

Hình 6.10 Sđ khi CCP

C CCP1 và CCP2 v nguyên t c ho t đ ng đ u gi ng nhau và ch c n ng c a t ng kh i là khá đ c l p. Tuy nhiên trong m t s tr ng h p ngo i l CCP1 và CCP2 có kh n ng ph i h p v i nhau đ đ t o ra các hi n t ng đ c bi t (Special event trigger) ho c các tác đ ng lên Timer1 và Timer2. Các tr ng h p này đ c li t kê trong b ng sau:

¬Khi ho t đ ng ch đ Capture thì khi có m t “hi n t ng” s y ra t i pin RC2/CCP1 (ho c RC1/T1OSI/CCP2), giá tr c a thanh ghi TMR1 s đ c đ a vào thanh ghi CCPR1 (CCPR2). Các “hi n t ng” đ c đ nh ngh a b i các bit CCPxM3:CCPxM0 và có th là m t trong các hi n t ng sau:

- M i khi có c nh xu ng t i các pin CCP. - M i khi có c nh lên.

- M i c nh lên th 4. - M i c nh lên th 16.

Sau khi giá tr c a thanh ghi TMR1 đ c đ a vào thanh ghi CCPRx, c ng t CCPIF đ c set và ph i đ c xóa b ng ch ng trình. N u hi n t ng ti p theo s y ra mà giá tr trong thanh ghi CCPRx ch a đ c x lí, giá tr ti p theo nh n đ c s t đ ng đ c ghi đè lên giá tr c .

M t s đi m c n chú ý khi s d ng CCP nh sau:

- Các pin dùng cho kh i CCP ph i đ c n đnh là input (set các bit t ng ng trong thanh ghi TRISC). Khi n đnh các pin dùng cho kh i CCP là output, vi c đ a giá tr vào PORTC c ng có th gây ra các “hi n t ng” tác đ ng lên kh i CCP do tr ng thái c a pin thay đ i.

- Timer1 ph i đ c ho t đ ng ch đ Timer ho c ch đ đ m đ ng b .

- Tránh s d ng ng t CCP b ng cách clear bit CCPxIE (thanh ghi PIE1), c ng t CCPIF nên đ c xóa b ng ph n m m m i khi đ c set đ ti p t c nh n đnh đ c tr ng thái ho t đ ng c a CCP.

CCP còn đ c tích h p b chia t n s prescaler đ c đi u khi n b i các bit CCPxM3:CCPxM0. Vi c thay đ i đ i t ng tác đ ng c a prescaler có th t o ra ho t đ ng ng t. Prescaler đ c xóa khi CCP không ho t đ ng ho c khi reset.

¬ Khi ho t đ ng ch đ Compare: giá tr trong thanh ghi CCPRx s th ng xuyên đ c so sánh v i giá tr trong thanh ghi TMR1. Khi hai thanh ghi ch a giá tr b ng nhau, các chân c a CCP đ c thay đ i tr ng thái (đ c đ i lên m c cao, hay xu ng m c th p, ho c gi nguyên tr ng thái), đ ng th i c ng t CCPIF c ng s đ c cài đ t. S thay đ i tr ng thái c a chân có th đ c đi u khi n b i các bit bit CCPxM3,CCPxM0.

Hình 6.11 – S đ kh i CCP (Compare mode)

T ng t nh ch đ Capture, Timer1 ph i đ c n đ nh ch đ ho t đ ng là timer ho c đ m đ ng b . Ngoài ra, khi ch đ Compare, CCP có kh n ng t o ra hi n t ng đ c bi t (Special Event trigger) làm reset giá tr thanh ghi TMR1 và kh i đ ng b chuy n đ i ADC. i u này cho phép ta đi u khi n giá tr thanh ghi TMR1 m t cách linh đ ng h n.

¬ Khi ho t đ ng ch đ PWM (Pulse Width Modulation - kh i đi u ch đ r ng xung), tín hi u sau khi đi u ch s đ c đ a ra các pin c a kh i CCP (c n n đnh các pin này là output).

s d ng ch c n ng đi u ch này tr c tiên ta c n ti n hành các b c cài đ t sau: 1. Thi t l p th i gian c a 1 chu kì c a xung đi u ch cho PWM (period) b ng cách đ a giá tr thích h p vào thanh ghi PR2.

2. Thi t l p đ r ng xung c n đi u ch (duty cycle) b ng cách đ a giá tr vào thanh ghi CCPRxL và các bit CCP1CON.

3. i u khi n các pin c a CCP là output b ng cách clear các bit t ng ng trong thanh ghi TRISC.

4. Thi t l p giá tr b chia t n s prescaler c a Timer2 và cho phép Timer2 ho t đ ng b ng cách đ a giá tr thích h p vào thanh ghi T2CON.

5. Cho phép CCP ho t đ ng ch đ PWM.

Trong đó giá tr 1 chu kì (period) c a xung đi u ch đ c tính b ng công th c:

B chia t n s prescaler c a Timer2 ch có th nh n các giá tr 1,4 ho c 16 (xem l i Timer2 đ bi t thêm chi ti t). Khi giá tr thanh ghi PR2 b ng v i giá tr thanh ghi TMR2 thì quá trình sau s y ra:

- Thanh ghi TMR2 t đ ng đ c xóa. - Pin c a kh i CCP đ c set.

- Giá tr thanh ghi CCPR1L (ch a giá tr n đnh đ r ng xung đi u ch duty cycle)

- đ c đ a vào thanh ghi CCPRxH.

r ng c a xung đi u ch (duty cycle) đ c tính theo công th c:

Nh v y 2 bit CCPxCON<5:4> s ch a 2 bit LSB. Thanh ghi CCPRxL ch a byte cao c a giá tr quy t đnh đ r ng xung. Thanh ghi CCPRxH đóng vai trò là buffer cho kh i PWM. Khi giá tr trong thanh ghi CCPRxH b ng v i giá tr trong thanh ghi TMR2 và hai bit CCPxCON<5:4> b ng v i giá tr 2 bit c a b chia t n s prescaler, pin c a kh i CCP l i đ c đ a v m c th p, nh v y ta có đ c hình nh c a xung đi u ch t i ngõ ra c a kh i PWM nh hình 3.13.

¬M t s đi m c n chú ý khi s d ng kh i PWM:

Timer2 có hai b chia t n s prescaler và postscaler. Tuy nhiên b postscaler không đ c s d ng trong quá trình đi u ch đ r ng xung c a kh i PWM. N u th i gian duty cycle dài h n th i gian chu kì xung period thì xung ngõ ra ti p t c

đ c gi m c cao sau khi giá tr PR2 b ng v i giá tr TMR2.

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 68 - 70)