Nguyên văn bởi bbaacc01
Việc truyền nhận nó có ba bên khác nhau:
-bên truyền
-bên nhận
- sợ dây gắn giữa hai bên này.
Quá trình truyền bị mất một bit là chuyện hơi hiếm, chỉ có thể là nó sai một bit, thì nó sẽ nhận được bậy bạ, bây giờ để tìm ra lỗi ở bên nào thì bạn dùng cách loại trừ.
1. Bạn dùng Matlab hoặc dùng Terminal làm đầu nhận, cho pic truyền lên và nhận, mấy chương trình này xem như là đầu nhận tốt rồi, không sai. Nếu OK, lỗi chỉ có thể tại VB, nếu không OK, lỗi chắc chắn có dính liếu đến PIC hoặc sợ dây.
2.- Để chắc là bạn truyền bằng vi xử lí tốt, bạn thử dùng chính PIC để kiểm tra xem. Tuy nhiên các bạn thường hay dùng PROTEUS để mô phỏng đó, bạn cũng có thể mo phỏng để xem code có đúng nguyên lí không. Tớ có cách khác, tớ không thích mô phỏng tí nào cả. Nếu mạch nạp của bạn có tính năng debug thì bạn debug thử. Nếu không bạn đừng dùng Timer1, thử để hàm putc trong hàm main và truyền mỗi lần 3 byte, giữa hai byte có một khoảng delay, sau đó giảm delay dần xem có OK không.
Bạn có thể thử ngắt cọng dây có con MAX232 ra, nối chập hai chân RX và TX của PIC với nhau, truyền ra và đọc về, bạn cứ truyền thử ba chữ 'L', 'A', 'N' chẳng hạn, cứ truyền ra, nhận về, so sánh phần nhận về (bằng code) hoặc xuất ra LCD với phần truyền ra nếu đúng thì CODE ok rồi. Sau đó lại thử với hai đầu bên phần có cọng cáp truyền. Tớ nghĩ cọng cáp của bạn bị nhiễu đó.
Bạn cũng có thể thử cọng cáp bằng cách bỏ pic ra, nói tắt hai phần RX, TX phía TTL của PIC, dùng MATLAB hay chính VB của bạn truyền và nhận, vì nó là ở máy tính nên bạn dễ rồi, nhận về là đọc được, thế là kiểm tra được cọng cáp.
Bạn nên đọc thêm về chuẩn truyền nối tiếp để hiểu qui trình truyền của nó, từ đó đừng có khái niệm với vẩn rằng mất một bit hay một byte nữa, chỉ có thể là nó không chịu truyền cho bạn thôi, còn PIC không có chuyện truyền mất bit hay byte đâu, nếu bạn sợ code của bạn truyền thiếu bạn nên xem thêm về buffer của con truyền nối tiếp của bạn xem nó được mấy mức, để bạn biết bạn có thể truyền liên tục bao nhiêu byte một lần, hoặc đơn giản hơn bạn kiếm xem bộ truyền nối tiếp của bạn có cờ báo truyền hoàn tấc không, hoặc không chắc gì hết thì tru yền 1 chữ, delay một tí để chờ truyền xong chữ đó rồi truyền tiếp.
Thử mày mò xem, bạn sẽ học thêm được nhiều kĩ năng hay lắm đó. Tự tìm được cái sai của mình là vui rồi.
|