PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Tiny Bootloader (http://www.picvietnam.com/forum/forumdisplay.php?f=67)
-   -   hỏi: cách thiết lập cấu hình cho BLD có vài điều thắc mắc. (http://www.picvietnam.com/forum/showthread.php?t=5842)

hongquyen 21-02-2010 02:33 PM

hỏi: cách thiết lập cấu hình cho BLD có vài điều thắc mắc.
 
em có 2 câu hỏi kính mong anh Nam và mọi người giải thích giúp em.

câu1:
một số bạn hòi cách cấu hình cho 16f887 và anh Nam có chỉ cấu hình như sau:

cấu hình 1:
__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC

cấu hình 2:
__CONFIG _CONFIG1, _HS_OSC & _FCMEN_OFF & _IESO_OFF & _CP_OFF & _WDT_OFF & _LVP_OFF & _DEBUG_OFF

trong cấu hình thứ nhất của anh Nam, lại bỏ đi _INTRC_OSC_NOCLKOUT và thay thế bằng _HS_OSC và trong cấu hình thứ 2(cũng của anh Nam) lại có _DEBUG_OFF mà trong cấu hình 2 và cấu hình gốc của BLD lại kg có. em vẫn kg hiểu cách thêm bớt như thế này nó sẽ có tác dụng gì ? và tại sao phải làm như vậy?, vậy kính mong anh Nam và các anh các chị khác có thể dành chút thời gian để giải thích vấn đề này (cấu hình chung), để sau này bọn em có thể tự cấu hình cho những dòng PIC khác(vd dsPIC30F4012, PIC18F4550...)mặc dù từ cấu hình khác nhau.

câu2:
với mọi tần số của thạch anh(4M,12M,20M...), ta có thể thiết lập 1 trong các tốc độ 115200,57600,38400,19200,9600. trong quá trình nạp ct ứng dụng bằng BLD hay có với tần số này chỉ có thể dùng với tốc độ kia? (vì em trong ở đâu đó trong chủ để này thấy có anh nào đó chỉnh sửa BLD và bảo chỉ được dùng với tốc độ này chô nên em hơi boăn khoăn).

em chân thành cảm ơn.

namqn 21-02-2010 03:37 PM

1 Attachment(s)
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,

hongquyen 21-02-2010 04:37 PM

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.

namqn 21-02-2010 06:14 PM

Trích:

Nguyên văn bởi hongquyen (Post 33651)
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):
Code:

        movlw        spbrg_value
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,

heidy_james 19-04-2010 01:52 PM

Thông qua giao các ý kiến của bạn, bạn có thể đào lên rằng nhận thức mà bạn không thể bắt được từ bất kỳ nguồn lực khác. Tôi như thế này cách chia sẻ kiến thức.


Múi giờ GMT. Hiện tại là 05:25 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam