![]() |
Trích:
Luồng này bạn hỏi về PWM chứ không hỏi về cách viết chương trình C ra sao, do đó tôi giả thiết là bạn biết cách đặt đoạn chương trình C mẫu vào chương trình của bạn. Nếu bạn chưa biết cách viết chương trình C, đề nghị bạn tìm một tài liệu hướng dẫn về ngôn ngữ C để đọc, sau đó đọc tài liệu hướng dẫn của trình biên dịch mà bạn đang dùng. Sau đó, làm vài bài tập cơ bản để nắm được cách viết chương trình C trong trình biên dịch của bạn. Dưới đây là toàn bộ chương trình tôi dùng để test PIC18F4431, viết cho MPLAB C18. Đừng yêu cầu tôi port code sang CCS C. Code:
#include <p18cxxx.h> Thân, |
Trích:
*thứ nhất CCSC không hỗ trợ tốt cho người dùng. Bạn hãy để ý từ phiên bản đầu tiên đến bản mới nhất, phần Help của CCSC luôn rất khó sử dụng, phần ví dụ trong Help cũng khó tiếp cận. Tôi từng viết ASM cho PIC rất kỹ và hiện đang dùng CCSC nhưng lúc làm luận văn, viết PWM cho con PIC18F4431, dùng hàm của CCSC thì tôi cực kỳ vất vả. Đến lúc tức điên người lên không thèm dùng hàm built in nữa, tôi chuyển sang tự set thanh ghi cho PIC luôn, chạy tốt! * thứ hai, như tôi đã nói, ít ra cũng phải hiểu cấu trúc PIC, hiểu cách hoạt động của các thanh ghi (và viết ASM chính là để hiểu rõ điều này) thì mới viết C tốt. Khi đó nếu gặp vấn đề gì với C, ta có thể troubleshooting rất nhanh, không được nữa thì quay lại ASM. Vì C thật ra cũng là ASM mà ra. Tôi nghĩ nếu bạn chỉ là cần code để cho luận văn hay đề tài gì đó không dài hạn, hoặc bạn chỉ "ghé thăm" PIC trong một thời gian ngắn thì bạn cứ dùng C thoải mái mà không cần hiểu thanh ghi. Nhưng nếu đã quyết định sử dụng PIC cho công việc (dài hạn) thì nên tìm hiểu tường tận. Datasheet tuy khó hiểu nhưng hứa với bạn là chỉ trong thời gian đầu, lần thứ 2,3,4... bạn sẽ thấy dễ dần. Có gì khó hiểu bạn cứ post lên đây là ok thôi. Bye, good luck with PIC! |
Trích:
tôi cũng từng code ASM cho 8051,rùi mới xài PIC.Và tôi nghĩ đa số sv chúng ta cũng thường theo con đường đó nên cũng ko khó khi tìm hiểu cấu trúc PIC.còn C or ASM cũng chỉ là vấn đề về ngôn ngữ thui mà. |
Vẫn lại là những lời văn vẻ. Thôi tới đây em bức xô em chịu không nổi nữa. cái cảm giác chờ một người biết cách dạy cho mình học thật khó chịu. thôi thì tự tìm hiểu lấy vậy. dù biết rằng như thế sẽ mất đến vài tháng thậm chí cả năm. còn nếu có người chỉ thì chỉ mất vài ngày. Các bác làm em thất vọng quá. Các bác giỏi thì giỏi thật nhưng không biết cách dạy người khác. để khi nào em nắm bắt đc vấn đề em sẽ về và trình bày lại chủ đề này. há miệng chờ sung đúng là không phải cách.
|
Trích:
Vấn đề của u chính là ko chịu đọc những cái người khác đã làm,gì chứ ví dụ thì có một đống! Bạn ông bảo học PIC thì chắc chắn hắn đã copy cho ông cả đống tài liệu rùi,đúng ko. PWM,tôi đã post thiết lập của tôi đó.tôi đã dùng pic8f4331 để PWM cho 6 động cơ ,chạy rùi,robot cũng đã cất rùi,nên ko cần phải băn khoăn j cả.ông ko chịu làm đó thui! |
Trích:
thứ nhì,ông ko chịu vận động. Đúng là khi tôi tiếp cận với PIC,con đầu tiên là 4331,mất hơn 2 tháng để đk PWM cái motor đầu tiên.tui biết hoàn cảnh của ông bây giờ.chẳng ai thích dạy đời ông cả và Đừng nói về những người đang muốn giúp ông như vậy. |
Bác nói thế là oan cho em đấy. Mấy ngày nay em đọc đi đọc ại muốn nát cả cái datasheet. xem tới xem lui không biết bao nhiêu ví dụ trong diễn đàn. và cuối cùng là em nhận ra mình chưa biết gì hết , nên em quay về với bài tập xuất led cơ bản đây. và cũng từ giã con 4331 này mà quay về con 16f877a cho nó bền, đơn giản vì nó có mô phỏng trên proteus. Cứ tưởng có thể học đc kinh nghiệm đi trước từ mấy bác cho rút ngắn bớt thời gian nhưng giờ thấy đó là sai lầm. Có thể em không kịp nắm con pic 4331 trước thời gian làm robot sắp tới. nhưng kệ cùng lắm thì quay về con P98v51 của philip đỡ vậy. còn con này cứ nghiên cứu sau. chứ tình trạng vầy chẳng biết đi về đâu.
|
thắc mắc
mình đang làm với con 18f4331. tìm hiếu về PWM,nhưng vẫn chưa rõ lắm. Ban đâu mình định tạo xung ra không đổi của cặp PWM0 và PWM1.Mình làm như sau:
#include <18f4331.h> #fuses NOWDT,PUT,HS,NOPROTECT #use delay(clock=40000000) void main() { setup_power_pwm_pins(PWM_COMPLEMENTARY,PWM_OFF,PWM _OFF,PWM_OFF); setup_power_pwm(PWM_CLOCK_DIV_4|PWM_FREE_RUN,1,0,4 00,0,1,0); set_power_pwm0_duty(100); } mình dùng oscilloscope nhưng thấy chan ra chẳng có gì . Còn có hiện tượng thông báo : Processor is in reset.Ai biết giúp mình với.Thank nhiều |
Đoạn code của bạn có xung nhưng chỉ 1 xung mà thôi,bạn phải dùng lệnh while(1) để tạo vòng lặp,bạn tham khảo thêm nha,^_^
|
Trích:
|
Trích:
|
Pwm pic
Trích:
Có ai biết ko vậy, giúp tớ với. À, với lại 1 vấn đề nữa, đó là cách chọn tụ cho mạch lái cầu IGBT, sử dụng IR2101. Tụ này nằm ở phía các khóa cao (high). Bạn nào đã từng làm chưa vậy. |
Trích:
Cảm ơn anh |
Trích:
Thân, |
pwm cua pic 16f877a
ban nao ranh` ve pwm thi giup minh voi.minh vua tim dc cai code viet ve pwm,nhung ma compile no bao loi!de minh gui len cho cac ban!
Code:
#include <16F877A.h> mog cac pac giup do!thank nhieu! |
Múi giờ GMT. Hiện tại là 01:47 PM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam