Trích:
Nguyên văn bởi xuanhiendk2
Các bạn cho mình hỏi. Ví dụ chương trình viết như sau:
void main()
{ setup_power_pwm(PWM_CLOCK_DIV_4|PWM_FREE_RUN|PWM_D EAD_CLOCK_DIV_4,1,10000,400,0,1,0);
setup_power_pwm_pins(PWM_COMPLEMENTARY,PWM_COMPLEM ENTARY,PWM_COMPLEMENTARY,PWM_OFF);
while(true)
{
set_power_pwm0_duty(200);
//set_power_pwm1_duty(4000);
set_power_pwm2_duty(100);
//set_power_pwm3_duty(4000);
set_power_pwm4_duty(100);
}
}
Theo mình thì chương trình này sẽ tạo ra xung với chu kỳ là 400us và duty(theo mình là chu kỳ xung mức 1) là 200. Tuy nhiên khi mô phỏng mình thấy không phải thế. Giải thích hộ mình các tham số Time base, period, duty
Thanks!
|
bạn dùng phàn mềm nào để mô phỏng?
1.Theo ý kiến chủ quan của mình thì đa số các phần
mềm mô phỏng thường không đúng với thời gian thực,nó còn phụ thuộc vào CPU của máy tính đang sử dụng phần mềm mô phỏng nữa,với các ứng dụng về thời gian(chu kỳ) thì theo lời khuyên hầu hết mọi người trên diễn đàn thì làm mạch thật sẽ kiểm tra chính xác hơn.
2. Giải thích hộ mình các tham số Time base, period, duty . Vấn đề này bạn xem câu trả lời của anh namqn :
Trích:
Nguyên văn bởi namqn
Bạn hiểu sai rồi. 0 đến 16383 là phạm vi giá trị cho phép đối với giá trị của tham số duty trong cú pháp trên.
Duty cycle của tín hiệu PWM là thời gian tín hiệu ở mức tích cực so với thời gian của toàn bộ chu kỳ. Ở đây, hàm chỉ đặt giá trị vào các thanh ghi PDCL và PDCH của module Power Control PWM trong PIC18Fxx31. Bạn cần phải xác định thời gian của toàn bộ chu kỳ nữa, nó được thiết lập thông qua các thanh ghi PTCON và PTPER (thiết lập prescale, postscale và chế độ chạy của timer dành riêng dùng làm time base cho module, và giá trị ngưỡng trong thanh ghi PTPER để quyết định thời gian của 1 chu kỳ).
Thư viện của CCS C cung cấp cho bạn các hàm để thuận tiện hơn trong việc viết code, nhưng bạn vẫn phải nắm rõ module mình đang dùng để có những thiết lập thích hợp. Trình biên dịch không thể thay bạn quyết định những tham số đó. Tôi đề nghị bạn đọc lại phần hướng dẫn của hàm setup_power_pwm, đảm bảo là bạn nắm rõ ý nghĩa của từng tham số trong hàm. Tôi cũng đề nghị bạn đọc lại phần 17 trong datasheet của PIC18F4431, nói về module Power Control PWM (tôi biết là nó dài, nhưng bạn đọc nó sẽ tốt hơn). Sau đó thử xác định xem với những gì bạn đã viết thì thời gian của 1 chu kỳ là bao nhiêu, và duty cycle tương ứng là bao nhiêu, nó có đúng như bạn đã thấy trong thực tế hay không.
Thân,
|