![]() |
pwm của 16F877A
Trích:
ko biết tại sao nữa.mong các bác chỉ dùm cái???? thank!!!!! |
Đề nghị bạn đọc mục 8.3.3 - SETUP FOR PWM OPERATION trong datasheet của PIC16F877A. Bạn sẽ thấy rằng CCP1 và CCP2 ở chế độ PWM sẽ dùng chung Timer2 làm bộ đếm thời gian chu kỳ. Bạn cũng dựa vào bảng 8-3 để xác định phạm vi cho phép của duty cycle, khi đã chọn giá trị cho PR2. Ngay cả khi dùng độ phân giải 10-bit cho duty cycle, bạn cũng không thể đặt duty cycle = 1024 (như bạn đã thực hiện trong code của bạn), vì 1024 không thể chứa trong 10 bit.
Thân, |
1 Attachment(s)
Bạn phải kích hoạt T2 bằng cách dùng hàm setup_timer_2(T2_DIV_BY_16,255,1) thì module PWM mới hoạt động. Các thông số trong hàm này bạn có thể thay đổi có tần số mong muốn.
Bạn nên dùng PWM 8 bit trước sau đó mới nghĩ đến 10bit. Theo tôi sử dụng 8 bit là đủ rồi. Đoạn Code sửa lại như sau: Code:
#include "16F877a.h" Mạch mô phỏng dưới đây: Chúc thành công! |
Trích:
hóa ra pải dùng timer2 cho pwm,lại còn quên số bít nũa.hic.....mình GÀ thật !! thank! tối mình về làm có gì hỏi tiếp nha... |
Em làm đoạn code như sau. Mặc định PWM là 8bit. Làm thế nào để khai báo PWM 10 bit?
setup_ccp1(CCP_PWM); setup_ccp2(CCP_PWM); setup_timer_2(T2_DIV_BY_1,254,1); set_pwm1_duty(100); set_pwm2_duty(200); |
Múi giờ GMT. Hiện tại là 07:29 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam