Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
0,96 MB
Nội dung
Bài 4: CCP
Nội dung
Capture
Compare
PWM
Ứng dụng của bộ CCP
Giới thiệu
PIC16F877A có 2 modul CCP(Capture/Compare/PWM )
giống hệt nhau về hoạt động
Các module này có nguồn là các Timer
Giới thiệu
Sự ảnh hưởng qua lại giữa 2 CCP
Các thanh ghi
Giới thiệu
Thanh ghi CCP1CON /CCP2CON (ADDRESS 17h/1Dh):
Bit 5,4 CCPxX:CCPxY: PWM least Significant bits (chỉ
tác dụng ở chế độ PWM)
2 bit MSB chứa giá trị tính độ rộng xung (duty
cycle) của khối PWM ( 8 bit còn lại được chứa trong
thanh ghi CCPRxL).
Bit 3-0 CCPxM3:CCPxM0 CCPx Mode Select bit
Các bit dùng để xác lập các chế độ hoạt động
của khối CCPx
Chế độ Capture
Khi có một “hiện tượng” xả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).
“Hiện tượng”:
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
Capture
Chân CCPx phải cấu hình là đầu vào
Sau khi giá trị của thanh ghi TMR1 được đưa vào
thanh ghi CCPRx, cờ ngắt CCPxIF được set
Cờ ngắt CCPxIF nên được xóa bằng phần mềm mỗi
khi được set
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
Chế độ Compare
Khi hai thanh ghi chứa giá trị bằng nhau, các pin của
CCP được thay đổi trạng thái (được đưa lên mức cao,
đưa xuống mức thấp hoặc giữ nguyên trạng thái)
Cờ ngắt CCPIF cũng sẽ được set
Sự thay đổi trạng thái của pin có thể được điều khiển
bởi các bit CCPxM3:CCPxM0 (CCPxCON <3:0>)
Compare
Cấu hình chân CCPx là đầu ra
Sự kiện đặc biệt làm reset giá trị cặp thanh ghi TMR1
Chế độ PWM
PWM
chu kỳ(period):
PWM Period = [(PR2) + 1] .4 . TOSC .( TMR2 Prescale Value-
1,4,16)
Khi giá trị thanh ghi PR2 bằng với giá trị thanh ghi TMR2 thì :
Thanh ghi TMR2 tự động được xóa.
Pin của khối CCP được set.
Giá trị thanh ghi CCPRxL được đưa vào thanh ghi CCPRxH.
[...]... 1.25e-5 sec + CCPR1= (1.25e-5) / (2.5e-7 * 1) = 50 00001100 10 PWM void InitPWM(void) { PR2 = 24; //Set TIMER2 frequency CCPR1L = 0b00001100; //Set TIMER2 duty cycle CCP1 CON = 0B00101111; //Set x,y CCP1 CON / /CCP1 CON = 11xx = PWM mode TMR2 = 0; //Clear TMR2 first T2CON = 0b01111000; } PWM CCS CCS -setup _ccp1 (mode) hay setup _ccp2 (mode) Mode có thể là: Cấm CCP: CCP_ OFF Chế độ PWM: CCP_ PWM Chế...PWM duty: PWM Duty Cycle =(CCPRxL:CCPxCON) TOSC (TMR2 Prescale Value) Duty Cycle được xác đinh bởi thanh ghi CCPRxL và 2 bit CCPxCON 2 bit CCPxCON sẽ chứa 2 bit LSB Khi giá trị trong thanh ghi CCPRxH bằng với giá trị trong thanh ghi TMR2 và hai bit CCPxCON 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 PWM Xác định... trong mỗi chu kỳ là : value*(1/clock)*t2div -Ngắt INT _CCP1 , INT _CCP2 -Các lệnh về Timer1 và Timer2 hỗ trợ cho khối CCP Ví dụ // For a 20 mhz clock, 1.2 khz frequency, // t2DIV set to 16 // the following sets the duty to 50% (or 416 us) long duty; duty = 512; // 000416/(16*(1/20000000)) set_pwm1_duty(duty); Bài toán Thực hiện băm xung trên chân RC2/ CCP1 Bài toán • • • • • • • • #include #include... { • • • • • • • • • • • • • • • • trisc=0;//output portc=0xff;//dau tien led sang setup _ccp1 (CCP_ PWM); // che do PWM setup_timer_2(T2_DIV_BY_16, 255, 1); //chu ky PWM se la: //(1/20.000.000)*4*16*(255+1)=819.2(us) //t2div=4 while(1) { for(j=1023;j>=0;j ) { delay_ms(10); SET_PWM1_DUTY(j );//dat duty cycle } } } Bài toán Sử dụng Compare, viết chương trình cứ sau 1s giá trị của portd lại được tăng lên .
Bài 4: CCP
Nội dung
Capture
Compare
PWM
Ứng dụng của bộ CCP
Giới thiệu
PIC16F877A có 2 modul CCP( Capture/Compare/PWM. ảnh hưởng qua lại giữa 2 CCP
Các thanh ghi
Giới thiệu
Thanh ghi CCP1 CON /CCP2 CON (ADDRESS 17h/1Dh):
Bit 5,4 CCPxX:CCPxY: PWM least Significant