![]() |
|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 1 túi
Tham gia ngày: Mar 2009
Bài gửi: 20
: |
Em cũng gặp vấn đề với PWM rất cần dc mọi người giúp đỡ. Em định dùng 1 biến trở để điều khiển lối ra độ rộng xung, ko hiểu chương trình bị sai ở đâu hay phải mô phỏng ntn? Mà em ko thấy có tín hiệu gì ở lối ra (chân 17 của PIC, tức RC2) nối vào dao động ký và trực tiếp vào 1 mô tơ, mô tơ ko thấy chạy cũng ko quan sát thấy gì trên dao động ký. Mọi người xem giúp em với, em cảm ơn trc!
Đây là chương trình của em: #include <16f877.h> #fuses HS,noPROTECT,noWDT,noPUT,noBROWNOUT,nolvp,nowrt #use delay(clock=20000000) main() { int8 value; setup_port_a(ALL_ANALOG); setup_adc(adc_clock_internal); set_adc_channel( 0 ); setup_ccp1(CCP_PWM); // Configure CCP1 as a PWM setup_timer_2(T2_DIV_BY_1, 255, 1); while( TRUE ) { value=read_adc(); set_pwm1_duty(value); } } thay đổi nội dung bởi: chiene, 27-01-2010 lúc 12:11 AM. |
![]() |
![]() |
![]() |
#2 |
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 81
: |
Có mất vẫn đề như thế này. Trước khi bạn làm kết hợp với ADC (sử dụng biến trở như bạn nói) thì bạn nên làm thử với 1 giá trị cố định (với đoạn code mà mọi người đã làm đc ở trên), và chắc chắn rằng "mô tơ" của bạn chạy (nghĩa là code chạy ổn). Sau đó mới viết thêm phần ADC.
Về phần ADC của bạn thì bạn nên khai báo cấu hình bạn đâu là sử dụng 8bit hay 10 bit. ví dụ. Code:
#include <12F683.h> #device adc=10 //#device adc=8 Nếu là 10 bit (0-1023). các giá trị của bạn chỉ nhận từ 0-255 các giá trị còn lại tương ứng với đầu ra là 1 hết (nghĩa là biến trở chỉ có tác dụng trong 1 khoảng nhỏ). |
![]() |
![]() |
![]() |
|
|