Trích:
Nguyên văn bởi hongquyen
chào anh Nam
anh cho em hỏi .như trong hình anh gửi kèm thì như anh nói những ô màu xanh là những ô có sai số nhỏ, vậy giả sử như trong hình với thạch anh là 4M và với tốc độ buad là 19200 thì rõ ràng là em thấy ô màu trắng có sai số nhỏ hơn (2,26) trong khi ô màu xanh có sai số là 12,02 thì mình phải dùng tốc độ baud và thạch anh như trong ô màu trắng chứ phải kg anh??
và trong file *.asm của BLD thì làm sao ta chỉnh dc giá trị của BRGH để đạt được sai số nhỏ nhất??
tốc độ mình sửa trong file asm của BLD phải với giống với tốc độ chọn trong phần mềm tiny BLD (chỉ tvo71i các tốc độ: 115200,57600,38400,19200,9600) phải kg ạ?
em cảm ơn.
|
Giá trị trong các ô là giá trị cần thiết phải đặt vào thanh ghi tạo tốc độ baud (SPBRG), nhưng chỉ có thể đặt phần nguyên vào thanh ghi đó. Do vậy, ô có giá trị 2,26 sẽ có sai số lớn hơn nhiều (vì chỉ có thể đặt 2 trong khi giá trị chính xác là 2,26) so với ô có giá trị 12,02 (vì phần nguyên 12 sai khác rất ít so với giá trị chính xác là 12,02).
Việc tính ra giá trị cần đặt vào SPBRG đã được xử lý tự động bằng các macro trong tập tin "spbrgselect.inc", bạn không cần phải chỉnh lại giá trị này nếu chọn các tổ hợp ứng với các ô màu xanh. Tuy nhiên, nếu bạn chọn một ô màu vàng thì bạn phải chỉnh lại spbrg_value thành số nguyên gần nhất với giá trị của ô màu vàng đó tại dòng lệnh (macro của Claudiu về nguyên tắc là chạy tốt, nhưng với một số ô màu vàng lại cho kết quả không tốt, theo trí nhớ khá mờ nhạt của tôi):
Chú ý: Các macro của Claudiu chỉ dùng cho trường hợp BRGH = 1. Do đó, nếu bạn chọn các tổ hợp ứng với BRGH = 0 (và đã chỉnh lại firmware như đề cập dưới đây), thì bạn phải chỉnh tay giá trị spbrg_value như đã nói ở trên.
Về bit BRGH, nó là bit 2 của thanh ghi TXSTA, bạn có thể tùy nghi điều chỉnh bit này tại hai dòng lệnh:
Code:
movlw b'00100100'
movwf TXSTA
Tốc độ trong firmware phải khớp với tốc độ chọn trong phần mềm (là 1 trong 5 giá trị mà bạn đã mô tả). Giá trị cho 56000 bps là để dùng với các ứng dụng khác có hỗ trợ tốc độ này.
Thân,