View Single Post
Old 18-08-2007, 01:55 AM   #2
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi batbatdieu View Post
Nhận tiện cho em hỏi về cái này luôn :
Code :
#include <uart.h> // Module function for uart
//#define Fcy 29491200 // 7.3728 Mhz Crystal XTLxPLL 16
//#define Fcy 14746000 // 7.3728 Mhz Crystal XTLxPLL 8
//#define Fcy 16000000 // 8 Mhz Crystal XTLxPLL 8
#define Fcy 20000000 // 10 Mhz Crystal XTLxPLL 8
#define BAUDRATE 115200 // UART2
.....
.....
OpenUART2(0x8000, 0x400,((Fcy/BAUDRATE)/16) - 1);

với cùng 1 phần cứng và chương trình như trên khi sử dụng TA ngoài 7.3728 và 8Mhz thì UART truyền nhận tốt ,nhưng khi dùng TA 10Mhz thì UART lại không chạy ???
Thạch anh 10 MHz không thích hợp để tạo ra baud rate 115200 bps. Công thức tổng quát trên sẽ cho ra giá trị đặt vào U2BRG là 9, trong khi giá trị cần thiết là 9.85. Do đó sẽ dẫn đến sai số khoảng 7.8%, dứt khoát không thể chấp nhận ngay cả cho trường hợp 7 bit dữ liệu.

Bạn chọn baud rate khác thấp hơn thì mới có thể dùng được thạch anh 10 MHz, chẳng hạn 19200 bps hay 38400 bps.

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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn