PDA

View Full Version : Lập trình cho Microcontroller voi Matlab hay C


thanh.danghong
15-03-2008, 10:38 PM
Chào các bạn, mình mới tham gia diễn đàn, mong được sự giúp đỡ của mọi người. Mình có một thắc mắc nhỏ nhờ mọi người giải đáp dùm.Theo mình được biết thì cho một số con Microcontroller(dspace,MPC555,...) ta có thể thiết kế trên Matlab rồi dùng chương trình tự động chuyển thành code C , rồi mã máy để chạy cho Microcontroller mà không cần phải viết code C trực tiếp. Các bạn có kinh nghiệm cho hỏi sự khác nhau, điểm mạnh, điểm yếu giữa 2 cách làm này. Theo suy nghĩ của mình thì đó có thể là:

- Dung lượng chương trình, tốc độ chương trình, thời gian trễ (một lần đi nghe thì hội Experte của Matlab nói là độ lớn code của 2 phương pháp là như nhau, không biết có đáng tin không hay chỉ để quảng cáo thế)

- Giá thành(giá Matlab, công lập trình), có phải vì lí do này mà ngoài công nghiệp người ta chủ yếu viết bằng C. Nhưng viết bằng C công lập trình lại lớn hơn.

falleaf
16-03-2008, 02:00 AM
Chào các bạn, mình mới tham gia diễn đàn, mong được sự giúp đỡ của mọi người. Mình có một thắc mắc nhỏ nhờ mọi người giải đáp dùm.Theo mình được biết thì cho một số con Microcontroller(dspace,MPC555,...) ta có thể thiết kế trên Matlab rồi dùng chương trình tự động chuyển thành code C , rồi mã máy để chạy cho Microcontroller mà không cần phải viết code C trực tiếp. Các bạn có kinh nghiệm cho hỏi sự khác nhau, điểm mạnh, điểm yếu giữa 2 cách làm này. Theo suy nghĩ của mình thì đó có thể là:

- Dung lượng chương trình, tốc độ chương trình, thời gian trễ (một lần đi nghe thì hội Experte của Matlab nói là độ lớn code của 2 phương pháp là như nhau, không biết có đáng tin không hay chỉ để quảng cáo thế)

- Giá thành(giá Matlab, công lập trình), có phải vì lí do này mà ngoài công nghiệp người ta chủ yếu viết bằng C. Nhưng viết bằng C công lập trình lại lớn hơn.

Tuỳ bạn làm việc trong môi trường nào. Matlab không chỉ mạnh ở cái công đoạn chuyển từ code Matlab sang C cho MCU mà Matlab họ còn bán cả bộ công cụ và cả hệ thống đi kèm ứng dụng công nghiệp. Việc phát triển phần biên dịch này được thúc đẩy mạnh từ phiên bản 2007a khi họ chính thức giới thiệu mô hình công nghiệp của họ.

Về độ tin cậy thì thực tế nhiều người viết Matlab và đổ sang các chip của TI thì nhìn thấy code rất dài. Có thể với những người lập trình Matlab chuyên nghiệp họ có thể viết được code tối ưu, nhưng chắc chắn C vẫn là cơ sở hiệu quả nhất.

Về giá thành, một bản Matlab nếu tính với chi phí ở nước ngoài thì thực sự không nhiều, thay vì tốn thêm nhân công cho việc lập trình C, tốn thêm thời gian vì viết code C lúc nào cũng dài hơn. Nhưng nói là dài hơn thế thôi, chứ thực ra khi viết code C đã quen, thì Matlab hay C cũng như nhau cả, một số thư viện thuật toán cũng đã có sẵn, chỉ trừ những bài toán quá phức tạp mà C hiện nay chưa có thư viện Opensource.

Điều nghịch lý xảy ra đó là, nếu một người đã hiểu rõ hệ thống thuật toán để tạo dựng nên hệ thống, thì việc viết lại thuật toán đó hoàn toàn không khó. Nhưng ở cấp độ nghiên cứu trước khi đi vào ứng dụng, thì rõ ràng là việc dùng Matlab để thí nghiệm nhanh hơn nhiều.

Matlab mới nhúng chân vào hệ thống công nghiệp chưa lâu, khoảng đầu năm 2007, tất nhiên họ đã có những thành công nhất định cho tới nay, nhưng với số năm kỹ sư đó của họ, liệu có thể nào so sánh với cả cộng đồng kỹ sư sử dụng C?

Vậy tóm lại, bạn có thể dùng, khi nào bạn là chủ một doanh nghiệp, bạn hãy suy nghĩ đến vấn đề này, nếu bạn là một kỹ sư, nhà nghiên cứu, Matlab tốt cho bạn để có những kết quả nhanh, vậy đừng lo ngại gì về nó cả. Tối ưu code hay không tối ưu code thì còn phải tuỳ vào khả năng của người lập trình nữa. Có khi code Matlab dài và thô như vậy, nhưng nếu bạn lập trình C không vững, bạn sẽ viết nên một đám rừng C (F đã từng chứng kiến một giáo sư muốn làm một phần mềm thương mại và giao cho một sinh viên thạc sĩ viết VC++ hỗn loạn tới mức F liên tục từ chối giúp đỡ vì không muốn bị... chập chập cheng cheng với cái mớ hỗn độn đó).

Chúc vui

thanh.danghong
16-03-2008, 07:02 PM
Cảm ơn bài trả lời chi tiết của bạn falleaf. Mình là sinh viên mới ra trường, chỉ vì băn khoăn muốn tìm hiểu thêm một chút. Mình mới lập trình trên Matlab một lần cho MCP555, và hiện tại đang mày mò để lập trình trên C cho dsp tms320f28335. Như bạn falleaf nói trên C có một số thư viện thuật toán có sẵn, vậy các bạn có thể chia sẻ cho mình với.

Mình làm trên MPC555 thì đó là viết bộ điều khiển cho một hệ cơ nhỏ. Đó không phải là hệ Multitasking. Theo những điều mình biết thì khi dùng Multitasking ta có thể biết trước(gần chính xác) đáp ứng của đầu ra so với đầu vào, điều này giúp ước lượng thời gian trễ của hệ ?? Mình muốn tìm hiểu xem ý nghĩa của Multitasking, và khi nào thì nên dùng nó.

Cảm ơn.

svbachkhoa
23-03-2013, 02:58 PM
Nhân tiện cho em hỏi thêm . Matlab có thể xuất ra code c cho dòng pic 18f không? hay có thể dùng matlab điều khiển pic qua cổng com luôn, không cần viết c ?
Cám ơn mọi người .

osc_tech
24-03-2013, 09:42 AM
Mình cũng đang học Matlab, nó rất hữu ích.