PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   PWM trong PIC16F877A, thay đổi duty. (http://www.picvietnam.com/forum/showthread.php?t=32736)

truongqt 29-08-2013 02:06 PM

PWM trong PIC16F877A, thay đổi duty.
 
1 Attachment(s)
Code PWM không thể thay đổi duty được nếu viết thế này:
Code:

setup_timer_2(T2_div_by_16,200,1);
set_pwm1_duty(a);

hoặc
Code:

set_pwm1_duty(a);
Nhưng nếu viết thế này thì OK:
Code:

set_pwm1_duty(a);
setup_timer_2(T2_div_by_16,200,1);

Tức là sau mỗi lần thay đổi duty, ta phải có dòng lệnh
Code:

setup_timer_2(T2_div_by_16,200,1);
Hoặc là dòng setup_timer_2(T2_div_by_16,200,1); phải được đưa vào sau dòng set_pwm1_duty(a);
------------------------------
Trong khi đó, mình xem hầu hết trên các bài viết trong diễn đàn, thì chỉ cần câu lệnh
Code:

set_pwm1_duty(a);
là đã có thể thay đổi duty của PWM! Chính vì thế đã làm mình mất mấy ngày vọc mà không chạy được. Sau đó mình thêm dòng setup_timer_2(T2_div_by_16,200,1); ngay sau mỗi lần thay đổi duty thì mới OK. Vậy thì sẽ khó khăn cho những người học khác, khi mà họ cũng áp dụng theo đúng câu lệnh này mà PWM nó không chạy.
Ai có thể giải thích giùm mình được không?
Mình gửi kèm code và mô phỏng (code CCS-PIC, mô phỏng Protues7.5)

binhbk247 18-09-2013 11:30 AM

1 Attachment(s)
Bạn xem lại thử, mình thay đổi duty bình thường mà, đâu cầu setup lại timer2 đâu


Múi giờ GMT. Hiện tại là 09:38 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam