Nhận dữ liệu từ máy tính xuống PIC qua Uart chưa chính xác
Em đang làm về giao tiếp máy tính của PIC18f4431 với máy tính thông qua Uart, em gửi lên máy tính thì tốt nhưng không hiểu sao gửi từ máy tính xuống thì đúng chừng 70%, lúc đúng lúc sai. Cái em cần gửi là tốc độ động cơ (khi nhận đc chuối giá trị từ ngắt nhận Uart sẽ được cộng lại) ai có kinh nghiệm gì giúp với.
Đây là code em viết: /*===================== Ngat nhan ki tu qua Uart =====================*/ #INT_RDA void Receive_isr() { if (uart_flag == 0) { c[i]=RCREG; // nhan ki tu tu bo dem RCREG=0x00; // xoa bo dem c[i]=c[i]-0x30; // chuyen ki tu ASCII thanh so int if (c[i] == 53) // ki tu e de bit ket thuc chuoi { uart_flag = 1; // khi co len 1 thi cho phep doc ket qua j = i; i = -1; } i++; // tang i de nhan vao bien ke cua mang } } Mong được sự giúp đỡ, gợi ý của mọi người. Rất cảm ơn. |
code cua bạn chỉ đúng 70% là vì trong quá trình truyền dữ liệu từ máy tính xuống xảy ra hiện tượng lệch khung dữ liệu => dữ liệu bị sai => bạn có thể định địa chỉ đầu khung cho byte truyền trên pc .Còn phần ngắt nhận VDK : kiểm tra nếu byte nhận được đúng là địa chỉ đầu khung đó => xử lý data nhận được từ PC
|
Hình như bạn chưa reset bộ đệm trước khi nhận dữ liệu mới.
|
Em cũng đang làm 1 mạch có giao tiếp Pic 18f26k22 với máy tính qua cáp chuyển đổi UART/USB
|
dữ liệu bị sai => bạn có thể định địa chỉ đầu khung cho byte truyền trên pc .Còn phần ngắt nhận VDK : kiểm tra nếu byte nhận được đúng là địa chỉ đầu khung đó => xử lý data nhận được từ PC
|
Múi giờ GMT. Hiện tại là 10:07 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