View Single Post
Old 29-08-2013, 02:06 PM   #1
truongqt
Đệ tử 2 túi
 
truongqt's Avatar
 
Tham gia ngày: Apr 2007
Nơi Cư Ngụ: Quảng Trị - Đà Nẵng
Bài gửi: 43
:
PWM trong PIC16F877A, thay đổi duty.

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)
File Kèm Theo
File Type: rar PIC-PWM.rar (12.4 KB, 68 lần tải)
__________________
Trường.
http://vn.myblog.yahoo.com/nguyenvantruongqt
truongqt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn