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
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
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)