View Single Post
Old 26-07-2008, 08:17 PM   #49
dungnt7
Nhập môn đệ tử
 
Tham gia ngày: Aug 2007
Nơi Cư Ngụ: Ho Chi Minh city, Viet Nam
Bài gửi: 9
:
Trích:
Nguyên văn bởi picpen View Post
a ha. ccs ko sai và protues cũng chẳng có vấn đề gì đâu, mà vấn đề nằm ở hai thông số : period ( 124 ) và giá trị value(400) trong lệnh set_pwmx_duty(value)
thứ nhất : 2 giá trị period và value phải nằm trong khoảng : 0..255
thứ hai : khi bạn điều xung như trên thì giá trị : value luôn phải < period ( nếu value = period thì tần số bạn thu được sẽ =0 , nếu value > period thì xung ra là trùm xung ko như bạn tính toán )
Bạn đọc kỹ lại về cấu tạo và hoạt động của bộ tham 2 cũng như khối PWM
***** chúc thành công ********
Theo mình biết thì giá trị value được biểu diễn bằng 10bit, giá trị lớn nhất của value là 1024.

Value không phải lúc nào cũng nhỏ hơn period, theo datasheet thì (pwm_duty/pwm_period)=(value/(4*(tmr2+1))).

Đoạn chương trình sau xuất xung PWM 50%, f=5Khz, ở chân CCP1
void main()
{
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DIV_BY_4,249,1);
setup_ccp1(CCP_PWM);
set_pwm1_duty(512);
set_tris_c(0x00);
}


Vấn đề của bạn ngtdung.nguyen mình cũng chưa hiểu vì sao bị như vậy.

thay đổi nội dung bởi: dungnt7, 26-07-2008 lúc 11:46 PM.
dungnt7 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn