![]() |
|
Tài trợ cho PIC Vietnam |
Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển... |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 65
: |
RS232 dùng matlab và proteus!!
Em đang gặp rắc rối khi truyền dữ liệu từ PIC đến PC dùng matlab.
Từ máy tính tới PIC dùng matlab thi đã mô phỏng thành công rồi. Khi tạo cổng com ảo kiểu loopback thì matlab truyền và nhận dữ liệu đều tốt. Nhưng khi tạo 2 cổng ảo (COM1 nối với matlab và COM2 nối với proteus) thi không nhận dữ liệu từ PIC được. Chỉ có PIC nhận từ máy tính được thôi! Có bác nào đã từng mô phỏng bằng Proteus việc truyền dữ liệu từ PIC6f877a đến máy tính dùng matlab chưa ạ? Mong các bác giúp đỡ? Em cảm ơn nhiều! |
![]() |
![]() |
![]() |
#2 | |
Trưởng lão PIC bang
|
Trích:
Truyền từ PIC đến 1 cổng COM ảo, rồi nhận dữ liệu vào MATLAB cũng qua cổng COM ảo đó thì mới hợp lý chứ. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#3 |
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 65
: |
Em xem luông này thì thấy như vậy:http://dientuvietnam.net/forums/showthread.php?t=13005
![]() ![]() Tức là cồng COM4 nối với Proteus, còn COM5 thì nối với Visual. Em hiểu như thế đúng không ạ ? Ở matlab em viết là : Code:
s=serial('com1') Code:
function ngat_Callback(obj,event) data=fscanf(obj) ![]() khi giao tiếp thì matlab phát kí tự thì PIC nhận được,nhưng ngược lại thì không được. đây là sơ đồ mạch của em: ![]() Mong mọi người giúp đỡ. Bên luồng "Thiết kế bộ PID cho động cơ DC" em thấy có phần thiết kế và vẽ đồ thị dùng matlab. Các anh cho em xin chương trinh matlab đó đựoc không ạ? Em cảm ơn nhiều. |
![]() |
![]() |
![]() |
#4 |
Super Moderator
Tham gia ngày: Feb 2006
Bài gửi: 150
: |
Theo mô tả của bạn thì bạn tạo ra 2 cổng ảo là COM1 và COM2, vậy là trên máy bạn không có cổng COM vật lý nào phải không ??
Khi bạn tạo cặp cổng COM ảo thì 2 cổng này được nối "ảo" với nhau, do đó bạn có thể gởi dữ liệu ra cổng COM này và nhần về từ cổng COM kia, thí nghiệm của bạn đã thành công khi gởi dữ liệu từ MATLAB xuống PIC, vậy vấn đề về baudrate.., cài đặt cho truyền nối tiếp chắc là không có vấn đề gì, vấn đề ở đây là chương trình trong MATLAB Code:
s = serial('COM1','BaudRate',9600); fopen(s) s.BytesAvailableFcnMode = 'terminator'; s.BytesAvailableFcn = @mycallback;; %callback như thế này fprintf(s,'*IDN?'); |
![]() |
![]() |
![]() |
#5 |
Đệ tử 4 túi
Tham gia ngày: May 2007
Bài gửi: 65
: |
Cảm ơn gợi ý của bạn, Chương trinh matlab thì chắc chắn là không sai vì mình có lam thử trên desktop. Thử đấu chéo chận 2 và chân 3 cong Com và chương trinh matlab đã truyền nhận dữ liệu rất tốt. Trên laptop cũng đã thử mô phỏng kiểu loopback và chương trình vẫn chạy tốt. Nhưng khi mình xài laptop, mo phỏng bằng proteus giao tiêp với PIC6f877a thì không được. Chỉ truyền dữ liệu từ matlab xuong được thôi. Còn nhận từ PIC thi chịu. Mong mọi người giúp đỡ.
|
![]() |
![]() |
![]() |
#6 |
Đệ tử 1 túi
Tham gia ngày: Jun 2008
Nơi Cư Ngụ: Lê Duẩn - Hà Nội
Bài gửi: 23
: |
![]() Mình đã thử truyền từ Pic lên, mô phỏng = Proteus7.2SP2, mạch bỏ qua ComPim thấy truyền được! Xin hỏi làm thế nào để xuống dòng, về đầu dòng? Tất cả mạch và chương trình CCSC đây: Thanks!
__________________
Sống ở trên đời cần phải có một tấm lòng để gió cuốn đi! xxxxxxxxxxxxxxxxxxx Trịnh Công Sơn xxxxxxxxxxxxxxxxxxx |
![]() |
![]() |
![]() |
|
|