Bài giảng Bộ vi xử lí - Chương 6: Capture compare PWM module

MOVLW 0x2C ;Cheá ñoä hoaït ñoäng PWM, 2 bit thấp cuûa Duty cycle CCP1X:CCP1Y = 10 MOVWF CCP1CON BSF T2CON, TMR2ON ; Timer2 baét ñaàu taêng ; Ngaét CCP1 khoâng ñöôïc cho pheùp ; Chaïy voøng laäp ñeå ñôïi côø traøn. ; Chaïy voøng laäp ñeå ñôïi côø traøn. PWM_Period_Match BTFSS PIR1, TMR2IF GOTO PWM_Period_Match ; Caäp nhaät chu kyø vaø duty cycle cuûa PWM BCF PIR1, TMR2I

pdf31 trang | Chia sẻ: tuanhd28 | Lượt xem: 2473 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng Bộ vi xử lí - Chương 6: Capture compare PWM module, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 6 CAPTURE COMPARE PWM module CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE 1. Giới thiệu Module CCP hỗ trợ việc đo lường và điều khiển thời gian hoạt động của các xung tín hiệu.  Đo chu kỳ hoạt động của tín hiệu (Capture)  Đo độ rộng xung, tạo ra một tín hiệu so sánh (Compare)  Tạo xung với tần số khác nhau để điều khiển tốc độ động cơ (Pulse Width Modulation – PWM) CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE - Mỗi Module CCP bao gồm thanh ghi 16bit có vai trò là thanh ghi Capture 16bit hoặc thanh ghi Compare 16bit hoặc thanh ghi Chu kỳ của PWM. - PIC16F877A có 2 Module CCP: CCP1 và CCP2 (Phần trình bày sau cụ thể cho CCP1) - TIMER1 và TIMER2 được dùng cho Module CCP. Bảng 1: Các thanh ghi của Module CCP CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE - Mỗi Module CCP bao gồm thanh ghi 16bit có vai trò là thanh ghi Capture 16bit hoặc thanh ghi Compare 16bit hoặc thanh ghi Chu kỳ của PWM. - PIC16F877A có 2 Module CCP: CCP1 và CCP2 - TIMER1 và TIMER2 được dùng cho Module CCP. Bảng 2: Loại TIMER được sử dụng trong CCP CCP MODE Timer Resource Capture Timer 1 Compare Timer 1 PWM Timer 2 CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE 2. Thanh ghi CCP1CON - Bit 7, 6: không dùng - Bit 5, 4_CCP1X - CCP1Y: dùng cho Module PWM CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 Trong chế độ PWM có 10bit để định thời gian cho trạng thái mức cao của xung điều biến ngõ ra. Ngoài 2 bit trên, 8 bit còn lại nằm trong thanh ghi CCPR1L (2 thanh ghi 8bit CCPR1L và CCPR1H). CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE - Bit 3 - 0: được cấu hình như bảng sau: CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 CCPxM3 CCPxM2 CCPxM1 CCPxM0 CCP Mode Selected 0 0 0 0 Resets CCP module 0 0 0 1 0 0 1 0 Compare, đảo ngõ ra khi Đ.K cân bằng 0 0 1 1 0 1 0 0 Capture, chế độ mỗi xung cạnh xuống 0 1 0 1 Capture, chế độ mỗi xung cạnh lên 0 1 1 0 Capture, chế độ 4 xung cạnh lên 0 1 1 1 Capture, chế độ mỗi 16 xung cạnh lên 1 0 0 0 Compare, CCP=cao khi ĐKiện cân bằng 1 0 0 1 Compare, CCP=thấp khi ĐKiện cân bằng 1 0 1 0 Compare, tạo ra Ngắt khi ĐK cân bằng 1 0 1 1 Compare, trigger special event 1 1 x x PWM mode CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE 3. Các chế độ hoạt động 3.1Chế độ CAPTURE - Hai thanh ghi CCPR1H : CCPR1L sẽ lưu lại giá trị 16bit của bộ đếm TIMER1 khi có 1 sự kiện xuất hiện tại chân CCP1 (RC2) ở một trong 4 trường hợp sau: + Bất kỳ 1 xung cạnh xuống + Bất kỳ 1 xung cạnh lên + Cứ mỗi 4 xung cạnh lên + Cứ mỗi 16 xung cạnh lên CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE - Và khi 1 sự kiện được xác định tại chân CCP1 thì cờ CCP1IF=1. Lu ý: + Trong chế độ Capture, TIMER1 phải hoạt động ở chế độ đếm đồng bộ. (Sync. Counter) + Khi 1 sự kiện xảy ra, TIMER1 không bị Reset. + Khi thay đổi chế độ hoạt động của module Capture sẽ gây ra một Ngắt. + Chân CCP1 phải được mặc định phải là Input. CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE I Edge Detect CCP1 TMR1H TMR1L Prescaler 1, 4, 16 CCP1IF in PIR1 Single Buffered Hình 1: Hoạt động chế độ Capture CCPRxH CCPRxL System Clock (Fosc) P1M1 P1M0 CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 CCP1CON CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE a. Bộ Prescaler trong chế độ Capture -Giá trị tỉ lệ được lựa chọn bởi 2 bit CCP1M1:CCP1M0 CCPxM3 CCPxM2 CCPxM1 CCPxM0 CCP Mode Selected 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 Capture, chế độ mỗi xung cạnh xuống 0 1 0 1 Capture, chế độ mỗi xung cạnh lên 0 1 1 0 Capture, chế độ 4 xung cạnh lên 0 1 1 1 Capture, chế độ mỗi 16 xung cạnh lên 1 0 0 0 1 0 0 1 1 0 1 0 1 0 1 1 1 1 x x CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE - Khi Module CCP ngưng hoạt động, bộ Prescaler sẽ bị Reset. - Khi ta thay đổi giá trị tỉ lệ của Prescaler, sẽ xảy ra một Ngắt. Do đó, nếu muốn thay đổi giá trị tỉ lệ hay chế độ hoạt động thì ta phải cấm tất cả các Ngắt. CLRF CCP1CON ; tắt Module CCP MOVLW NEW_VALUE ; chuẩn bị giá trị nạp MOVWF CCP1CON ;vào CCP1CON CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE b. Hoạt động Capture trong chế độ SLEEP -Trong chế độ Ngủ, TIMER1 không tăng, nhưng bộ định tỉ lệ vẫn tiếp tục đếm khi có sự kiện. Do đó, cờ CCP1IF vẫn bằng 1 khi Prescaler bị tràn, tuy nhiên giá trị của CCPR1H: CCPR1L sẽ không được cập nhập. -Ngắt CCP làm PIC thoát khỏi chế độ Ngủ nhưng giá trị của TIMER1 vẫn không được cập nhập. Điều này cho phép sử dụng CCP như là Ngắt ngoài thứ 2. CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE c. Chương trình khởi tạo Capture CLRF CCP1CON ; Tắt Module CCP CLRF TMR1H ; Xoaù byte cao Timer1 CLRF TMR1L ; Xoaù byte thaáp Timer1 CLRF INTCON ; Khoâng cho pheùp caùc ngaét vaø xoùa côø T0IF BSF STATUS, RP0 ; Choïn Bank1 BSF TRISC, CCP1 ; Chaân CCP laø ngoõ vaøo CLRF PIE1 ; Caám caùc ngaét ngoaïi vi BCF STATUS, RP0 ; Choïn Bank0 CLRF PIR1 ; Xoùa caùc côø ngaét ngoaïi vi MOVLW 0x06 ; Choïn cheá ñoä Capture, moãi 4 xung ngoõ vaøo MOVWF CCP1CON BSF T1CON, TMR1ON ; Timer1 baét ñaàu hoaït ñoäng CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE BTFSS PIR1, CCP1IF GOTO Capture_Event nội dung chương trình Capture được thực thi BCF PIR1, CCP1IF ; xóa cờ CCP1IF .. CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE 3.2 Chế độ COMPARE -Trong chế độ So sánh, giá trị 16bit đặt trước trong CCPR1 sẽ được so sánh với giá trị tức thời ở 2 thanh ghi TMR1L : TMR1H. Khi 2 giá trị bằng nhau, 1 trong 4 hoạt động sau được thực thi: + Chân CCP1 lên mức cao + Chân CCP1 xuống mức thấp + Tạo ra Ngắt CCP + Tạo ra một sự kiện đặc biệt CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE YES CCPx CCPxIF in PIRx OUTPUT LOGIC TMR1H TMR1L COMPARATOR TMR1H:TMR1L = CCPRxH:CCPRxL? NO Hình 2: Hoạt động chế độ Capture Special Event Trigger CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 CCPRxH CCPRxL CCP1CON CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE a. Hoạt động của chân CCP1 - Phải mặc định chân CCP1 trong chế độ Compare là ngõ ra, bằng cách xóa bit trong thanh ghi TRIS. - Việc xóa thanh ghi CCP1CON sẽ đưa chân CCP xuống mức thấp. - Trạng thái tại chân CCP1 phụ thuộc vào việc chọn các bit CCP1M3 : CCP1M0. CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE -Trạng thái ngõ ra CCP1: CCPxM3 CCPxM2 CCPxM1 CCPxM0 CCP Mode Selected 0 0 0 0 0 0 0 1 0 0 1 0 Compare, đảo ngõ ra khi Đ.K cân bằng 1 0 0 0 Compare, CCP=cao khi ĐKiện cân bằng 1 0 0 1 Compare, CCP=thấp khi ĐKiện cân bằng 1 0 1 0 Compare, tạo ra Ngắt khi ĐK cân bằng 1 0 1 1 Compare, Trigger special event CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE b. Tín hiệu tạo ra sự kiện đặc biệt - Tín hiệu xung này được tạo ra khi có sự cân bằng giá trị nằm ở 2 thanh ghi TMR1 và CCPRx. - Xung này sẽ reset cặp thanh ghi TMR1H:TMR1L. Điều này cho phép thanh ghi 16bit CCPRx hoạt động giống như thanh ghi chu kỳ cho TIMER1. - Xung này không Set cờ tràn TMR1IF lên 1. CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE Lu ý: Trong chế độ Compare, TIMER1 phải được thiết lập ở chế độ định thời hay đếm đồng bộ. - Ở chế độ Sự kiện đặc biệt, các hoạt động diễn ra:  Xóa b đm TIMER1 và bt đu chuyn đi ADC nu module A/D đ c cho phép.  Module CCP s không đi u khin chân CCPx.  Xung kích s đ c t o ra ngay khi có đi u ki n cân bng t i ngõ ra b Special Event Trigger. CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE c. Hoạt động Compare trong chế độ SLEEP - Trong chế độ ngủ, TIMER1 không tăng và trạng thái của Module Compare cũng không thay đổi. - Nếu trước khi vào chế độ ngủ, TIMER1 được ghi một giá trị nào đó thì sau khi thoát chế độ này nó sẽ tiếp tục đếm từ giá trị đó trở đi. CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE c. Chương trình khởi tạo chế độ Compare CLRF CCP1CON ; Taét Module CCP CLRF TMR1H ; Xoùa byte cao Timer1 CLRF TMR1L ; Xoùa byte thaáp Timer1 CLRF INTCON ; Caám caùc ngaét vaø xoùa cô T0IF. BSF STATUS, RP0 ; Choïn Bank1 BCF TRISC, CCP1 ; Chaân CCP ñuôïc maëc ñònh ôû ngoõ ra. CLRF PIE1 ;Caám taát caû caùc ngaét ngoaïi vi BCF STATUS, RP0 ;Choïn Bank0 CLRF PIR1 ;Xoùa caùc côø ngaét ngoaïi vi. MOVLW 0x08 ; Neáu ñieàu kieän caân baèng xaûy MOVWF CCP1CON ; ra, ngoõ ra set leân cao. CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE BSF T1CON, TMR1ON ;Timer1 baét ñaàu hoaït ñoäng COMPARE_Event nội dung module Compare .. BTFSS PIR1, CCP1IF GOTO COMPARE_Event BCF PIR1, CCP1IF ; Xóa cờ CCP CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE 3.3 Chế độ PWM (Pules Width Modulation) - Trong chế độ điều biến xung (PWM), chân CCP1 tạo ra tín hiệu điều biến có độ phân giải 10 bit. - Tín hiệu điều biến có Chu kỳ, độ rộng xung và hệ số D (Duty Cycle – chu kỳ trách nhiệm) thay đổi được. Lu ý: Chân CCP1 phải mặc định là ngõ ra. Việc xóa thanh ghi CCP1CON sẽ đưa chân này xuống mức thấp. CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE CCPR1H LATCH R10 10 10 DUTY CYCLE VALUE TMR2 = CCPR1H CCP1 Output Pin Period 1 Start Period 2 CCP1 pin PR2 Latch S 8 8 TMR2 reset to 0’s 0 TMR2 = PR2 Hình 3: Hoạt động chế độ PWM CCP1X CCP1Y CCP1M3 CCP1M2 CCP1M1 CCP1M0 CCPxCON CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE CCP 1 pin CCPR1H LATCH Latch R S TMR2 reset to 0 DUTY CYCLE VALUE TMR2 = CCPR1H 0 TMR2 = PR2 Hoạt động điều biến xung - Khi TMR2 = PR2 thì: + TMR2 bị xóa + Chân CCP1 = 1 (Start) + Giá trị Duty Cycle trong thanh PR2 CCP1 Output Pin TMR2=PR2+1 Start TMR2=Duty Cycle ghi CCPR1L được chốt vào thanh ghi CCPR1H. - 8bit CCPR1H + 2bit trong bộ Chốt tạo ra giá trị 10bit. - 8bit CCPR1L + 2bit CCP1X-CCP1Y (nằm trong CCP1CON) tạo ra giá trị 10bit. CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE - Khi giá trị thanh ghi TMR2 = 10bit Duty Cycle (chứa trong CCPR1H), chân CCP1 = 0. + 8bit TMR2 + 2bit bởi nguồn xung dao động bên trong tạo thành giá trị 10bit (nếu tỉ lệ Prescaler 1:1) + 8bit TMR2 + 2bit từ bộ Prescaler tạo thành giá trị 10bit (nếu tỉ lệ Prescaler khác 1:1) CCP1 Output Pin TMR2=PR2+1 Start TMR2=Duty Cycle CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE a. Chu kỳ - Chu kỳ tín hiệu PWM được qui định bởi thanh ghi PR2, theo công thức sau: TPWM = [ PR2 + 1] x 4 xTOSC x (Prescaler Timer2) fPWM = 1/TPWM b. Chu kỳ trách nhiệm D (Duty Cycle) D = [ DCxB9:DCxB0 ] x TOSC x (Prescaler Timer2) CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE c. Khởi tạo chế độ PWM - Thiết lập Chu kỳ PWM bởi thanh ghi PR2. - Thiết lập Duty Cycle bởi các 10bit DCxB9:DCxB0. - Định chân CCPx là ngõ ra bởi thanh ghi TRISC. - Đinh giá trị tỉ lệ bộ PreScaler và cho Timer2 hoạt động bằng thanh ghi T2CON. - Cấu hình Module CCP hoạt động ở chế độ PWM. CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE CLRF CCP1CON ; Taét Module CCP CLRF TMR2 ; Xoùa Timer2 MOVLW 0x7F ;Ñònh chu kyø hoaït ñoäng (127) MOVWF PR2 ; MOVLW 0x1F ; MOVWF CCPR1L ; Duty Cycle(31)= 25% cuûa chu kỳ PWM CLRF INTCON ; Caám taât caû caùc ngaét BSF STATUS, RP0 ; Choïn Bank1 BCF TRISC, PWM1 ; Cho chaân CCPx laø Output CLRF PIE1 ; Caám taát caû caùc ngaét ngoaïi vi BCF STATUS, RP0 ; Choïn Bank0 CLRF PIR1 ; Xoùa taát caû caùc côø ngaét ngoaïi vi CHƯƠNG 6: CAPTURE/COMPARE/PWM MODULE MOVLW 0x2C ;Cheá ñoä hoaït ñoäng PWM, 2 bit thấp cuûa Duty cycle CCP1X:CCP1Y = 10 MOVWF CCP1CON BSF T2CON, TMR2ON ; Timer2 baét ñaàu taêng ; Ngaét CCP1 khoâng ñöôïc cho pheùp ; Chaïy voøng laäp ñeå ñôïi côø traøn. PWM_Period_Match BTFSS PIR1, TMR2IF GOTO PWM_Period_Match ; Caäp nhaät chu kyø vaø duty cycle cuûa PWM BCF PIR1, TMR2IF

Các file đính kèm theo tài liệu này:

  • pdfchuong_6_pic_ccp_2361.pdf
Tài liệu liên quan