PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Tiny Bootloader (http://www.picvietnam.com/forum/forumdisplay.php?f=67)
-   -   Cơ bản về bootloader & tiny bootloader (http://www.picvietnam.com/forum/showthread.php?t=130)

namqn 27-08-2008 06:32 PM

Trích:

Nguyên văn bởi kebitmat_f (Post 18412)
Em mới tìm hiểu về Pic. Định sử dụng nạp chương trình cho Pic6F877A bằng tiny bootloader. Nhưng vẫn lơ tơ mơ về cái cách này. Theo em hiểu : Ngoài mạch ứng dụng của Pic thì thiết kế thêm 2 module : mạch tinybootloader và RS232. Cái thằng RS232 em đọc tài liệu về nó thì bảo đó là một cách giao tiếp PC với thiết bị ngoại vi. Như thế nếu em có mạch tinybootloader rồi muốn nối với PC thì cần làm những gì? Nối vào các chân của tiny bootloader vào đâu của PC? hay là fai làm một mạch cứng nữa?
hic hic. Thấy bối rối quá.
Mong các bác chỉ giáo tận tình. Nếu có hướng dẫn cụ thể, chi tiết (từ cứng đến mềm)từng bước nạp cho Pic bằng tiny bootloader thì tốt quá.
Thanks !

Bạn đã đọc báo cáo của ntc trong luồng này chưa:
http://www.picvietnam.com/forum//showthread.php?t=439

Module cung cấp chức năng nạp qua Tiny Bootloader cũng có thể dùng để giao tiếp thông qua RS-232. Không nhất thiết RS-232 dùng để giao tiếp PC với thiết bị ngoại vi, vẫn có thể giao tiếp giữa các ngoại vi bằng RS-232.

Thân,

bean984 25-03-2009 04:14 PM

cho mình xin file hex của con 877a chạy TA 8Mhz.
mình cũng đã thử viết nhưng khi dùng tinyBld search Pic thì nó không nhận đc và có thông báo lỗi như thế này:

Connected to \\.\COM1 at 9600
Searching for PIC ...
pic sending unknown data: "K" <> 1h=
Check baudrate & Start Write while PIC is not sending serial data (e.g. in reset)
ERROR!
cho mình hỏi đây là lỗi gì vậy?

namqn 25-03-2009 05:30 PM

Trích:

Nguyên văn bởi bean984 (Post 23978)
cho mình xin file hex của con 877a chạy TA 8Mhz.
mình cũng đã thử viết nhưng khi dùng tinyBld search Pic thì nó không nhận đc và có thông báo lỗi như thế này:

Connected to \\.\COM1 at 9600
Searching for PIC ...
pic sending unknown data: "K" <> 1h=
Check baudrate & Start Write while PIC is not sending serial data (e.g. in reset)
ERROR!
cho mình hỏi đây là lỗi gì vậy?

Xin hỏi là bạn đã dùng Tiny Bootloader phiên bản bao nhiêu trên máy tính, và bạn đã dùng firmware nào để nạp cho PIC?

Như bạn có thể thấy, trong luồng này, những thành viên cần firmware Tiny Bootloader cho một PIC cụ thể với một cấu hình cụ thể (nên giống với cấu hình của chương trình ứng dụng) có thể gửi yêu cầu lên, và tôi hay một thành viên nào đó sẽ cung cấp firmware đó.

Thân,

bean984 26-03-2009 08:19 AM

mình dùng tinybld198.
cho mình xin firmware cho con 16f877a.cấu hình như sau:
#fuses HS, NOWDT,PUT, NOPROTECT, NOLVP, NODEBUG, BROWNOUT
#use delay(clock=8000000)
thanks.

bean984 26-03-2009 08:20 AM

nếu có thể đc cho mình xin luôn file .asm nha.
thanks

namqn 26-03-2009 03:50 PM

1 Attachment(s)
Trích:

Nguyên văn bởi bean984 (Post 24018)
mình dùng tinybld198.
cho mình xin firmware cho con 16f877a.cấu hình như sau:
#fuses HS, NOWDT,PUT, NOPROTECT, NOLVP, NODEBUG, BROWNOUT
#use delay(clock=8000000)
thanks.

Firmware như bạn đã yêu cầu được đính kèm dưới đây.

Thân,

namqn 26-03-2009 03:52 PM

Trích:

Nguyên văn bởi bean984 (Post 24019)
nếu có thể đc cho mình xin luôn file .asm nha.
thanks

Tập tin nguồn đã có sẵn trong thư mục "picsource\pic16" của tập tin "tinybld198.zip". Bạn chỉ cần sửa 3 dòng đầu tiên cho phù hợp với loại PIC, tốc độ thạch anh, và tốc độ baud của bạn, và chỉnh dòng cấu hình cho phù hợp với cấu hình trong chương trình ứng dụng của bạn.

Tôi cũng chỉ làm đúng những động tác trên khi biên dịch firmware vừa gửi lên.

Thân,

bean984 27-03-2009 08:23 AM

cảm ơn anh. cho e hỏi câu lệnh này fai chỉnh như thế nào với các TA khác nhau?
movlw xtal/2000000+1
e thấy trong picsource có thay đổi giá trị này nhưng e vẫn k hiểu cách tính.
e cảm ơn!.

namqn 27-03-2009 05:06 PM

Trích:

Nguyên văn bởi bean984 (Post 24056)
cảm ơn anh. cho e hỏi câu lệnh này fai chỉnh như thế nào với các TA khác nhau?
movlw xtal/2000000+1
e thấy trong picsource có thay đổi giá trị này nhưng e vẫn k hiểu cách tính.
e cảm ơn!.

Câu lệnh đó không cần phải chỉnh lại, vì giá trị xtal dùng để xác định tần số thạch anh.

Thân,

bean984 30-03-2009 12:56 PM

cac a xem giup e cai firmware này co van de j k?sao e dich ma no k nhận đc chip
Code:

        radix DECLIST      P=16F877A, F=INHX8M        ; change also: Configure->SelectDevice from Mplab
        include        <p16f877a.inc>

xtal EQU 8000000                ; you may also want to change: _HS_OSC _XT_OSC
baud EQU 9600                        ; standard TinyBld baud rates: 115200 or 19200
        ; The above 3 lines can be changed and buid a bootloader for the desired frequency (and PIC type)

        ;********************************************************************
        ;        Tiny Bootloader                16FxxxA series                Size=100words
        ;        claudiu.chiculita@ugal.ro
        ;        http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm
        ;********************************************************************

        #include        "D:\tinybld198\picsource\icdpictypes.inc"
            #include            "D:\tinybld198\picsource\spbrgselect.inc"
            #include        "D:\tinybld198\picsource\bankswitch.inc"
        #define first_address max_flash-100 ; 100 word in size

        __CONFIG  _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF

        errorlevel 1, -305                        ; suppress warning msg that takes f as default

       
        cblock 0x20
        buffer:80
        endc
       
        cblock 0x78
        crc
        contor
        i
        cnt1
        cnt2
        cnt3
        flag       
        endc
       

SendL macro car
        movlw        car
        movwf        TXREG
        endm

;0000000000000000000000000 RESET 00000000000000000000000000

                ORG    0x0000
                PAGESEL IntrareBootloader
                GOTO    IntrareBootloader

;view with TabSize=4
;&&&&&&&&&&&&&&&&&&&&&&&  START    &&&&&&&&&&&&&&&&&
;----------------------  Bootloader  ----------------------
;             
;PC_flash:    C1h          AddrH  AddrL  nr  ...(DataLo DataHi)...  crc
;PIC_response:  id  K                                                K

       
        ORG first_address
        nop
        nop
        nop
        nop
        org first_address+4
IntrareBootloader
                        ;init serial port
        clrf        STATUS
        bsf                STATUS,RP0                        ;BANK1_
        movlw        b'00100100'
        movwf        TXSTA
        movlw        spbrg_value
        movwf        SPBRG
        BANK0_
        movlw        b'10010000'
        movwf        RCSTA
                        ;wait for computer
        call        Receive                       
        sublw        0xC1                                ;Expect C1
        skpz
        goto        way_to_exit
        SendL IdTypePIC                                ;PIC type
        ;SendL IdSoftVer                        ;firmware ver x
MainLoop
        clrf        STATUS                                ;bank0
        SendL 'K'
mainl
        clrf        crc
        call        Receive                                ;H
                bsf STATUS,RP1                        ;bank2
        movwf        EEADRH
        movwf        flag                                ;used to detect if is eeprom
        call        Receive                                ;L
                bsf STATUS,RP1                        ;bank2
        movwf        EEADR

        call        Receive                                ;count
        movwf        contor
        movwf        i
        incf        i
        movlw        buffer-1
        movwf        FSR
rcvoct
        call        Receive
        incf        FSR
        movwf        INDF
        decfsz        i
        goto        rcvoct
       
        movf        crc,f                                ;check checksum
        skpz
        goto        ziieroare
                                ;write
                bsf STATUS,RP1                        ;bank switch 0->2
        movlw        buffer
        movwf        FSR
writeloop                                                ; write 2 bytes = 1 instruction
        clrwdt
        movf        INDF,w
        movwf        EEDATA
        incf        FSR
        movf        INDF,w
        movwf        EEDATH
        incf        FSR       
                BANK3_                                        ;bank  2->3
        bcf                EECON1,EEPGD
        btfss        flag,6                                ;is eeprom (or flash)
        bsf                EECON1,EEPGD
        bsf                EECON1,WREN
        movlw        0x55
        movwf        EECON2
        movlw        0xaa
        movwf        EECON2       
        bsf                EECON1,WR
        nop
        nop
waitwre       
        btfsc        EECON1,WR                        ;for eeprom writes (wait to finish write)
        goto        waitwre
        bcf                EECON1,WREN
                BANK2_                                        ;bank2
        incf        EEADR                                ;does not cross zones
        btfss        flag,6                                ; if writing to EEPROM, skip first counter dec.
        decf        contor
        decfsz        contor
        goto        writeloop
       
        goto        MainLoop
ziieroare
        SendL 'N'
        goto        mainl
         

Receive
        clrf        STATUS
        movlw        xtal/1000000+1                ; for 20MHz => 11 => 1second
        movwf        cnt1
rpt2                                               
        clrf        cnt2
rpt3
        clrf        cnt3
rptc
                btfss PIR1,RCIF                        ;test RX
                goto $+4
                movf RCREG,w                        ;return in W
                addwf crc,f                                ;compute checksum
                return
        clrwdt
        decfsz        cnt3
        goto        rptc
        decfsz        cnt2
        goto        rpt3
        decfsz        cnt1
        goto        rpt2
                                ;timeout:
way_to_exit                        ;exit in all other cases; must be BANK0/1
        ;BANK0_
        bcf        RCSTA,        SPEN        ; deactivate UART
        goto        first_address
;*************************************************************
; After reset
; Do not expect the memory to be zero,
; Do not expect registers to be initialised like in catalog.

            END

e cung đã thử để nguyên dòng lệnh này
movlw xtal/2000000+1
như anh chính nói nhưng vẫn k đc.
anh chính cho e xin firmware cho con 16f877a.cấu hình như sau:
#fuses XT, NOWDT,PUT, NOPROTECT, NOLVP, NODEBUG, BROWNOUT
#use delay(clock=3579545)
e cảm ơn anh.

namqn 31-03-2009 03:55 AM

Trích:

Nguyên văn bởi bean984 (Post 24148)
cac a xem giup e cai firmware này co van de j k?sao e dich ma no k nhận đc chip
...
e cung đã thử để nguyên dòng lệnh này
movlw xtal/2000000+1
như anh chính nói nhưng vẫn k đc.
anh chính cho e xin firmware cho con 16f877a.cấu hình như sau:
#fuses XT, NOWDT,PUT, NOPROTECT, NOLVP, NODEBUG, BROWNOUT
#use delay(clock=3579545)
e cảm ơn anh.

Bạn đã thử firmware mà bạn đã yêu cầu tôi dịch chưa? Kết quả như thế nào mà bạn phải dịch lại firmware?

Thân,

bean984 31-03-2009 09:54 AM

e muốn dịch lại để biết cách tự dịch các firmware với các TA khác nhau cho con 877A.cái firmware của a chạy tốt a.vì e có mấy cái mạch làm dùng mấy loại TA khác nhau.hỏi xin hoài cũng hơi ngại

namqn 31-03-2009 05:58 PM

1 Attachment(s)
Trích:

Nguyên văn bởi bean984 (Post 24186)
e muốn dịch lại để biết cách tự dịch các firmware với các TA khác nhau cho con 877A.cái firmware của a chạy tốt a.vì e có mấy cái mạch làm dùng mấy loại TA khác nhau.hỏi xin hoài cũng hơi ngại

Bạn thử firmware sau nhé, cấu hình như bạn đã nêu ở trên. Không phải là tôi muốn dấu điều gì, nhưng tôi không hiểu sao source code đã có sẵn mà nhiều người vẫn không cấu hình được firmware, cho nên mới phải ngồi dịch giúp các bạn. Bạn đừng ngại khi yêu cầu dịch giúp firmware cho Tiny Bootloader (tôi nhận được yêu cầu này khá thường xuyên, từ cả những người dùng nước ngoài).

Thân,

bean984 03-04-2009 05:08 PM

anh nam dịch giúp em cái firmware cua con 18f4550 với cấu hình :
#fuses HS, NOWDT,PUT, NOPROTECT, NOLVP // for debug mode
#use delay(clock=8000000)
// e k dùng usb

e cảm ơn anh!

namqn 04-04-2009 04:37 AM

1 Attachment(s)
Trích:

Nguyên văn bởi bean984 (Post 24295)
anh nam dịch giúp em cái firmware cua con 18f4550 với cấu hình :
#fuses HS, NOWDT,PUT, NOPROTECT, NOLVP // for debug mode
#use delay(clock=8000000)
// e k dùng usb

e cảm ơn anh!

PIC18F4550 có nhiều từ cấu hình, trong đó có nhiều cấu hình chưa được bạn mô tả. Do đó, tôi dịch firmware với cấu hình dưới đây:
Code:

        CONFIG        PLLDIV = 2, CPUDIV = OSC1_PLL2, USBDIV = 2
        CONFIG        FOSC = HS, FCMEM = OFF, IESO = OFF
        CONFIG        PWRT = ON, BOR = OFF, BORV = 21, VREGEN = OFF
        CONFIG        WDT = OFF, WDTPS = 128
        CONFIG        MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = OFF
        CONFIG        STVREN = ON, LVP = OFF, ICPRT = OFF, DEBUG = OFF, XINST = OFF

Thân,


Múi giờ GMT. Hiện tại là 08:40 PM.

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