![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Feb 2010
Bài gửi: 13
: |
PWM trong PIC, 10bit & 8bit khác nhau chỗ nào ?
Trong con PIC 16F877a. Mình đang cố tìm hiểu về con PWM nhưng không hiểu bộ PWM 10bit & 8bit khác nhau chỗ nào. Mình biết là còn phụ thuộc vào tải của mình thì điều xung ở tần số bao nhiêu là vừa. Nhưng mình có đặt câu hỏi về ảnh hưởng của tần số điều xung đối với tải bên DTVN mà không thấy ai trả lời. Không biết là tần số đó phụ thuộc vào vật liệu đóng ngắt tải hay miễn sao trong dải cho phép thì mình chọn tần số nào cũng được.
Bộ PWM của PIC có phụ thuộc vào Timer 2 hay không, thấy trong các example có dùng đến timer 2. Mà chưa hiểu lắm, tiếng anh bình thường dịch thì tạm, tiếng anh chuyên ngành dịch hơi gà nên chưa hiểu. Mình dùng CCS. |
![]() |
![]() |
![]() |
#2 |
Đệ tử 1 túi
Tham gia ngày: Feb 2010
Bài gửi: 13
: |
Độan code này mình viết y chang trong ebook, nhưng ngõ ra CCP1 không có tín hiệu.
Code:
#include <16f877a.h> #use delay(clock=20000000) #fuses HS, NOWDT int duty_cycle, control_bits, hold_value; void main() { port_b_pullups(TRUE); setup_timer_2(T2_DIV_BY_1, 99, 1); setup_ccp1(CCP_PWM); while(true) { hold_value = (~(input_b()) & 0x7); while ((control_bits = (~(input_b()) & 0x7)) == hold_value); switch (control_bits) { case 0x1: duty_cycle = 35; break; case 0x2: duty_cycle = 59; break; case 0x4: duty_cycle = 94; break; default: duty_cycle = 0; } } } |
![]() |
![]() |
![]() |
#3 |
Đệ tử 2 túi
Tham gia ngày: Oct 2008
Bài gửi: 44
: |
Mình có viết 1 chương trình con về pwm 8 bit nếu coi dùng được không!
PWM_SUBROUTINE MOVWF CCPR1L MOVWF CCPR2L BANKSEL TRISC MOVLW D'0' ;set PORTC as all outputs MOVWF TRISC BANKSEL PORTC MOVLW 0x0C MOVWF CCP1CON MOVLW 0x0C MOVWF CCP2CON MOVLW D'63' ;set highest PWM value BANKSEL PR2 ;over this (63) is permanently on MOVWF PR2 BANKSEL TMR2 MOVLW 0x00 MOVWF T2CON BSF T2CON, TMR2ON ;and start the timer running RETURN |
![]() |
![]() |
![]() |
|
|