Câu 1:
Cấu hình thực sự trong mã nguồn Tiny Bootloader của tôi như sau:
Code:
__CONFIG _CONFIG1, _HS_OSC & _FCMEN_OFF & _IESO_OFF & _CP_OFF & _WDT_OFF & _BOR_ON & _PWRTE_ON & _LVP_OFF & _DEBUG_OFF
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
Tôi chỉ thay đổi phần liên quan đến bộ dao động (_HS_OSC) để phù hợp với cấu hình dao động thực tế và tần số của thạch anh (nếu có dùng) mà thôi.
Phần _DEBUG_OFF (và một số phần khác như _CP_OFF và _WRT_OFF) thực tế là trùng với giá trị mặc định, nên có thể không cần thiết lập. Tuy nhiên, có vài trường hợp các giá trị này được thiết lập ngầm khác với mặc định (chủ yếu do người dùng thiết lập qua lệnh Configure>Configuration Bits ... của MPLAB IDE, rồi quên chỉnh lại), do đó nên thiết lập tường minh các giá trị này trong code.
Câu 2:
Ứng với mỗi tần số thạch anh, chỉ có một số tốc độ baud là thích hợp, vì giá trị đặt vào thanh ghi tạo tốc độ baud là một số nguyên, nên có khả năng gây ra sai số quá lớn ở một số tốc độ. Tôi thường dùng một bảng tính để đánh giá sai số cho các tốc độ baud khác nhau ở một tần số xung nhịp cụ thể, và chỉ dùng những tốc độ baud nào có sai số nhỏ (xem hình đính kèm, những ô màu xanh là những tổ hợp có sai số nhỏ).
Thân,