Vấn đề sử dụng 2 UART trong PIC
Chuẩn,
A khuyên em thế này:
- Với ngắt nói chung em nên viết chương trình để xử lý thật nhanh chóng và thoát ra khỏi ngắt ngay. Ví dụ ở code của em, em sử dụng ngắt RDA2 để nhận data từ vệ tinh qua GPS module. Data này là liên tục và tương đối dài(có thể khoảng 70 bytes). Nếu như em xử lý không nhanh chóng có thể sẽ bị mất dữ liệu hay thậm chí làm ảnh hưởng đến chương trình(ví dụ: treo chương trình ...do chưa thoát được ngắt).
- Em gọi chương trình check_gprmc(); trong ngắt RDA2 là rất không nên, vì trong chương trình này chứa lệnh: fprintf(truyền data lên PC) trong khi em vẫn chưa thoát ra ngắt RDA2(nhận data từ PC)
Thêm nữa lệnh strcpy(gps_str,gps_buffer); em cũng sữ dụng ngay trong ngắt RDA2. Em nên sự dụng này bên ngoài ngắt. Em chỉ nên xử lý dữ liệu nhận được từ PC và lưu vào bộ nhớ tạm mà thôi, không làm việc gì khác trong Ngắt.
Anh nhắc lại, việc sử dụng 2 hay nhiều ngắt UART trong PIC không có vấn đề gì hết đâu, chi đơn giãn như vi dụ minh họa trong CCS. Việc còn lại là khéo léo xử lý để chương trình chạy xuông sẻ thôi.
Thân.
__________________
--------------------------------------------------------------------------------------
Phùng Minh Tuân
Email: tuan.phmt@gmail.com
"Cuộc đời sóng gió nuôi ta lớn
Bao lần thất bại dạy ta khôn".
|