Professional Documents
Culture Documents
I. Cơ chế
a) Sơ lược
- PWM là một chức năng quan trọng trong nhiều ứng dụng, và đã được hãng Microchip
tích hợp vào trong vi điều khiển PIC (cụ thể là PIC16F887).
- Trong module này, PIC16F887 dùng phương pháp timer để tạo ra xung PWM.
- Timer 2 được dùng làm bộ đếm cho module PWM để định ra chu kỳ cũng như độ rộng
xung PWM.
- Khi bắt đầu, timer 2 sẽ bắt đầu đếm(dùng xung clock từ OSC), thanh ghi đếm TMR2
đóng vai trò 8 bit cao sẽ được kết hợp với 2 bit của của đồng hồ hệ thống để tạo thanh
ghi 10 bit (để so sánh được với 10 bit CCPRxL,CCPxCON<5,4>). Lưu ý rằng khi này bộ
đếm dùng trưc tiếp xung clock từ OSC (Focs) thay vì Focs/4 và qua bộ prescaler của timer
2.
- Ngoài ra, mỗi khi bắt đầu chu kỳ PWM mới, Giá trị của CCPRxL và CPPxCON<5,4>
được đưa vào thanh CCPRxH và 2 bit chốt. Từ đó, giá trị đếm được từ timer sẽ được
so sánh với 10 bit này, nếu bằng thì tín hiệu PWM sẽ lật từ cao xuống thấp (do được
điều khiển bằng bộ Flip Flop RS như hình). Hơn nữa, do timer 2 chỉ so sánh với giá trị
của thanh CCPRxH và 2 bit chốt, nên việc thay đỏi độ rộng xung(thay đổi
CCPRxL,CCPxCON<5,4>) chỉ xảy ra sau khi chu kỳ PWM cũ đã kết thúc.
- Tiếp theo, bộ timer vẫn tiếp tục đếm cho đếm khi 8 bit cao(thanh ghi TMR2) bằng với 8
bit của thanh PR2 thì có 3 việc sẽ xảy ra:
- Lưu ý: khi so sánh với PR2, chỉ có 8 bit cao là thanh TMR2 được so sánh, việc bỏ đi 2
bit cuối tương ứng việc giảm tẩn số Focs đi 4 lần (xem như timer hoạt động bình thường
với xung clock Focs/4).
- Lưu ý: chân CCPx ở chế độ này hoạt động như đầu phát nên bit TRIS tương ứng phải
được clear trước khi hoạt động.
- Tóm lại, tín hiệu PWM thu được như sau:
- Lưu ý: nếu độ rộng xung lớn hơn chu kỳ thì tín PWM sẽ giữ nguyên không đổi (luôn ở
mức cao).
- Được điều khiển bởi các bit P1M<1:0> và CCP1M<3:0> của thanh ghi CCP1CON.
- Các chân không dùng chức năng Enhanced
PWM thì có thể dung chức năng khác.
a) Half-Bridge
- Có 2 chân được điều xung dùng để kéo tải kiểu push-pull (chân P1A và chân
phụ P1B).
- Trong chế độ này, dead-band delay dung để chống dòng shoot-through trong
thiết bị khi có 2 công tắt cùng on(Vd: 2 MOSFET). Delay có thể điều khiển được bởi giá
trị PDC<6:0> của thanh PWM1CON. Nếu giá trị này lớn hơn độ rộng xung thì tín hiệu ra
sẽ ở mức thụ động trong toàn bộ chu kỳ.
Delay=4*Tocs*PDC<6:0>
- Lưu ý: phải clear bit TRIS tương úng cho cả 2 chân P1A và P1B.
-
IV.
-
Ở chế độ Sleep, timer 2 sẽ không đếm nữa, giá trị chân CCPx giữ nguyên. Khi được đánh
thức, timer2 tiếp tục đếm từ giá trị cũ.
- Khi reset: các port trở về trang thái Input (tắt PWM) và các thanh ghi CCP trở về trang
thái Reset.