PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Tiny Bootloader (http://www.picvietnam.com/forum/forumdisplay.php?f=67)
-   -   Pvn Tiny Bootloader (http://www.picvietnam.com/forum/showthread.php?t=439)

ngohaibac 11-04-2007 08:17 AM

Chính ơi, bài số 5 của cậu có một chút vấn đề nhỏ nhưng quan trọng, cậu viết nhầm cả 2 chân cuối là TX hết rùi.

Thứ tự các chân là:
  • MCLR
  • VDD
  • VSS
  • TX
  • RX

Chúc Chính ở HN thật là vui vẻ nhé. Mặc dù trời hơi lạnh tí :D.

ntc 11-04-2007 12:27 PM

Ờ.

Sửa lại rồi.

:)

ngohaibac 12-04-2007 10:49 PM

Chính ơi, cho mình hỏi về cái này nhé.

Chân RTS (chân 7 RS232) bình thường khi không có giap tiếp truyền nhận thì nó ở mức thấp -12V tức là chân MCLR ở mức cao khoảng 5,24V -> IC hoạt động bình thường. Khi có quá trình truyền dữ liệu thì chân này sẽ lên mức cao +12V -> làm chân MCLR xuống mức thấp xấp xỉ = GND.

Như vậy trong mạch ứng dụng của mình không thể nối cố định chân MCLR với chân 1 của mạch Tiny Bootloader được vì khi giao tiếp UART thì IC không hoạt động.

Thứ nữa, MCLR mình nối với VDD qua một con trở 10k để giảm áp đặt lên chân MCLR. Nếu mà nối thẳng chân 1 của mạch Tiny với chân này thì mình e rằng con trở này chẳng có tác dụng gì. => Nếu mắc thêm trở khoảng 10k vào:

MCLR |----|====|-----------| chân 1 của mạch tiny.

thì nó lại chẳng có tác dụng reset gì cả.

Mình nghĩ rằng trong mạch ứng dụng của mình nên có khóa gạt tức là khi nạp thì chuyển MCLR nối với chân 1 của mạch tiny, còn hoạt động bình thường thì nối với VDD.

Nhưng mà mình làm thế thì nó cũng chẳng detect được chip gì cả. Toàn phải bỏ chân 1 bỏ trôi, và nhấn nút Reset làm thủ công thôi.

Chúc các bạn thành công.

namqn 13-04-2007 07:44 PM

Trích:

Nguyên văn bởi ngohaibac (Post 8214)
Chân RTS (chân 7 RS232) bình thường khi không có giap tiếp truyền nhận thì nó ở mức thấp -12V tức là chân MCLR ở mức cao khoảng 5,24V -> IC hoạt động bình thường. Khi có quá trình truyền dữ liệu thì chân này sẽ lên mức cao +12V -> làm chân MCLR xuống mức thấp xấp xỉ = GND.

Truyền nhận dữ liệu từ Tiny Bootloader hay từ phần mềm khác? Nếu từ Tiny thì không đúng, còn nếu từ phần mềm tự viết thì lý do gì phải thay đổi trạng thái của RTS?

Trích:

Nguyên văn bởi ngohaibac (Post 8214)
Như vậy trong mạch ứng dụng của mình không thể nối cố định chân MCLR với chân 1 của mạch Tiny Bootloader được vì khi giao tiếp UART thì IC không hoạt động.

Giải quyết được rắc rối trên thì không cần phải quan tâm đến chỗ này nữa.

Trích:

Nguyên văn bởi ngohaibac (Post 8214)
Thứ nữa, MCLR mình nối với VDD qua một con trở 10k để giảm áp đặt lên chân MCLR. Nếu mà nối thẳng chân 1 của mạch Tiny với chân này thì mình e rằng con trở này chẳng có tác dụng gì. => Nếu mắc thêm trở khoảng 10k vào:

MCLR |----|====|-----------| chân 1 của mạch tiny.

thì nó lại chẳng có tác dụng reset gì cả.

Đương nhiên rồi, mắc thêm 10k nữa thì thành cầu phân áp, áp đặt vào MCLR nằm khoảng giữa so với điện áp hai đầu. Nếu chân 1 của mạch Tiny là 0V thì MCLR là ~ 2.5 V => làm sao reset được PIC.

Thân,

LeDuc 01-07-2007 07:04 AM

Bác NTC ơi, có thể post cho mọi người xem phiên bản 3.0 mà các anh đã cải tiến ko? cái hình phiên bản 2.0 anh post nhỏ xiu hà nhìn ko biết chân nào nối với chân nào cả...
thanks....
á cho em hỏi .. trong CCS phải viết thế nào mới nạp được vậy??
Thanks

namqn 01-07-2007 09:23 PM

Trích:

Nguyên văn bởi LeDuc (Post 9726)
...
á cho em hỏi .. trong CCS phải viết thế nào mới nạp được vậy??
Thanks

Trong CCS cứ viết như bình thường, không cần thay đổi gì cả.

Thân,

WaveAlpha 06-07-2007 11:47 AM

Trích:

Nguyên văn bởi ntc (Post 3107)

http://i65.photobucket.com/albums/h2..._ntc/hinh5.jpg

Hình 5: Sơ đồ nguyên lí mạch test Tiny Bootloader. Phần mạch giao tiếp với Tiny Bootloader được tô màu xám.

Anh ơi hình nhỏ và mờ quá, e ko thấy được gì. E là người mới học vi điều khiển nên ko biết nhiều đâu , a post hình lại rỏ hơn đi. Thanks

ntc 06-07-2007 05:45 PM

Bạn download cái bản report đầy đủ ở bài viết số 13, trong đó hình rõ hơn.

hungtdh_bk 22-09-2007 12:10 PM

Bac Nam a! Bác có thể cho em filmware Tinybootloader bằng MPLAB (ASM)
con Dspic4012 được ko ạ?
-Em dùng thạch anh ngoai 8MHZ (XT_PLL4),kết nối qua UART.

namqn 22-09-2007 10:59 PM

1 Attachment(s)
Tôi dùng Main IO của UART, tốc độ baud là 38400 bps, các từ cấu hình như dưới đây (thạch anh 8 MHz theo yêu cầu của bạn):
Code:

        config        __FOSC, CSW_FSCM_OFF & XT_PLL4
        config        __FWDT, WDT_OFF
        config        __FBORPOR, MCLR_EN & PBOR_OFF
        config        __FGS, CODE_PROT_OFF

Bạn thử với phần cứng của bạn xem code có chạy đúng hay không nhé.

Thân,

nguyenhuutan 11-04-2008 10:27 PM

Các anh làm ơn tìm giúp em bootloader cho PIC18F4520 với. Em đã down file của pác nqnam về rồi mà không thấy hỗ trợ 18F4520. Em cài đặt như trong source file cho 18F452 rồi nạp cho con 4520 được không? Cảm ơn.

nguyenhuutan 11-04-2008 10:56 PM

Lỗi biên dịch ở chỗ nào
 
Em đã tìm thấy trong file TinyB18F32 có hỗ trợ 18F4520. Em đã chỉnh sửa như sau nhưng khi biên dịch vẫn bị lỗi.
************************************************** ****************
Lỗi như sau: (ai biết chỉ giùm em với)
Clean: Deleting intermediary and output files.
Clean: Done.
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F4520 "TinyB18F32.asm" /l"TinyB18F32.lst" /e"TinyB18F32.err"
Warning[218] C:\DOCUMENTS AND SETTINGS\ADMINISTRATOR\MY DOCUMENTS\PICSOURCE\OTHER\NNQ\TINYB18F32.ASM 1 : Expected DEC, OCT, HEX. Will use HEX
Error[129] C:\DOCUMENTS AND SETTINGS\ADMINISTRATOR\MY DOCUMENTS\PICSOURCE\OTHER\NNQ\TINYB18F32.ASM 2 : Expected (END)
Error[173] C:\DOCUMENTS AND SETTINGS\ADMINISTRATOR\MY DOCUMENTS\PICSOURCE\OTHER\NNQ\TINYB18F32.ASM 2 : Source file path exceeds 62 characters (C:\DOCUMENTS AND SETTINGS\ADMINISTRATOR\MY DOCUMENTS\PICSOURCE\OTHER\NNQ\TINYB18F32.ASM)
Halting build on first failure as requested.
BUILD FAILED: Fri Apr 11 21:53:26 2008
************************************************** ****************************
Chương trình đã chỉnh sửa:

radix DEC
LIST P=18F4520 ; change also: Configure->Select Device from MPLAB
; For 2455, 2550, 4455, and 4550: 4 MHz quartz / 1 * 24 / 4 = 24 MHz
xtal EQU 12000000 ; you may want to change: _XT_OSC_1H _HS_OSC_1H _HSPLL_OSC_1H
baud EQU 19200 ; standard TinyBld baud rates: 115200 or 19200
; The above 3 lines can be changed and built a bootloader for the desired frequency (and PIC type)

;************************************************* *******************
; Tiny Bootloader 18F series Size=100words
; claudiu.chiculita@ugal.ro
; http://www.etc.ugal.ro/cchiculita/so...bootloader.htm
; Modified by Nam Nguyen-Quang for testing different PIC18Fs with tinybldWin.exe v1.9
; namqn@yahoo.com
;************************************************* *******************

; This source file is for PIC18F2420, 2520, 4420, 4520, 2455, 2550, 4455, and 4550

; Copy these include files to your project directory (i.e. they are in the same
; directory with your .asm source file), if necessary

#include "icdpictypes.inc" ; Takes care of: #include "p18fxxx.inc", max_flash, IdTypePIC
#include "spbrgselect.inc" ; RoundResult and baud_rate

#define first_address max_flash-200 ;100 words

; For different PICs, uncomment the appropriate lines of CONFIG directives
; as indicated, and comment out all the other lines, if necessary
; For example, the following configuration is for PIC18F4550, with 4 MHz crystal
; You could find the symbol names for the chip in its include file
; (in the Microchip\MPASM Suite directory)


;----- CONFIG1L Options -----
; For 18F2455, 2550, 4455, and 4550
; CONFIG PLLDIV = 1, CPUDIV = OSC3_PLL4, USBDIV = 2


;----- CONFIG1H Options -----
; For 18F2455, 2550, 4455, and 4550
; CONFIG FOSC = HSPLL_HS, FCMEM = OFF, IESO = OFF

; For 18F2420, 2520, 4420, and 4520
; CONFIG OSC = HS, FCMEN = OFF, IESO = OFF
CONFIG OSC = INTIO67, FCMEN = OFF, IESO = OFF ; Use internal oscilator, xtal = 8000000


;----- CONFIG2L Options -----
; For 18F2455, 2550, 4455, and 4550
; CONFIG PWRT = ON, BOR = OFF, BORV = 21, VREGEN = OFF

; For 18F2420, and 4420
; CONFIG PWRT = ON, BOREN = ON, BORV = 27

; For 18F2520, and 4520
CONFIG PWRT = ON, BOREN = ON, BORV = 28


;----- CONFIG2H Options -----
; For all of the chips associated with this source file
CONFIG WDT = OFF, WDTPS = 128


;----- CONFIG3H Options -----
; For 18F2455, 2550, 4455, and 4550
; CONFIG MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = OFF

; For 18F2420, and 4420
; CONFIG MCLRE = ON, PBADEN = OFF, CCP2MX = PORTC

; For 18F2520, and 4520
CONFIG MCLRE = ON, LPT1OSC = OFF, PBADEN = OFF, CCP2MX = PORTC

;----- CONFIG4L Options -----
; For 18F2455, 2550, 4455, and 4550
; CONFIG STVREN = ON, LVP = OFF, ICPRT = OFF, DEBUG = OFF, XINST = OFF

; For 18F2420, and 4420
; CONFIG STVREN = ON, LVP = OFF, ENHCPU = OFF, DEBUG = OFF

; For 18F2520, and 4520
CONFIG STVREN = ON, LVP = OFF, DEBUG = OFF, XINST = OFF

;----------------------------- PROGRAM ---------------------------------
cblock 0
crc
i
cnt1
cnt2
cnt3
counter_hi
counter_lo
flag
endc
cblock 10
buffer:64
dummy4crc
endc

SendL macro car
movlw car
movwf TXREG
endm

;0000000000000000000000000 RESET 00000000000000000000000000

ORG 0x0000
GOTO IntrareBootloader

;view with TabSize=4
;&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&&&&&&
;---------------------- Bootloader ----------------------
;PC_flash: C1h U H L x ... <64 bytes> ... crc
;PC_eeprom: C1h 40h EEADR EEDATA 0 crc
;PC_cfg C1h U OR 80h H L 1 byte crc
;PIC_response: type `K`

ORG first_address ;space to deposit first 4 instr. of user prog.
nop
nop
nop
nop
org first_address+8
IntrareBootloader
;init IntOSC, added by Nam Nguyen-Quang
movlw 0x70
movwf OSCCON
; the above 2 lines should be commented out for designs not using the internal oscilator
; or for the chips without the internal oscilator
;init serial port
movlw b'00100100'
movwf TXSTA
movlw spbrg_value
movwf SPBRG
movlw b'10010000'
movwf RCSTA
;wait for computer
rcall Receive
sublw 0xC1 ;Expect C1h
bnz way_to_exit
SendL IdTypePIC ;send PIC type
MainLoop
SendL 'K' ; "-Everything OK, ready and waiting."
mainl
clrf crc
rcall Receive ;Upper
movwf TBLPTRU
movwf flag ;(for EEPROM and CFG cases)
rcall Receive ;Hi
movwf TBLPTRH
movwf EEADR ;(for EEPROM case)
rcall Receive ;Lo
movwf TBLPTRL
movwf EEDATA ;(for EEPROM case)

rcall Receive ;count
movwf i
incf i
lfsr FSR0, (buffer-1)
rcvoct ;read 64+1 bytes
movwf TABLAT ;prepare for cfg; => store byte before crc
rcall Receive
movwf PREINC0
decfsz i
bra rcvoct

tstfsz crc ;check crc
bra ziieroare
btfss flag,6 ;is EEPROM data?
bra noeeprom
movlw b'00000100' ;Setup eeprom
rcall Write
bra waitwre
noeeprom
btfss flag,7 ;is CFG data?
bra noconfig
tblwt* ;write TABLAT(byte before crc) to TBLPTR***
movlw b'11000100' ;Setup cfg
rcall Write
bra waitwre
noconfig
;write
eraseloop
movlw b'10010100' ; Setup erase
rcall Write
TBLRD*- ; point to adr-1

writebigloop
movlw 2 ; 2groups
movwf counter_hi
lfsr FSR0,buffer
writesloop
movlw 32 ; 32bytes = 16instr
movwf counter_lo
writebyte
movf POSTINC0,w ; put 1 byte
movwf TABLAT
tblwt+*
decfsz counter_lo
bra writebyte

movlw b'10000100' ; Setup writes
rcall Write
decfsz counter_hi
bra writesloop
waitwre
;btfsc EECON1,WR ;for eeprom writes (wait to finish write)
;bra waitwre ;no need: round trip time with PC bigger than 4ms

bcf EECON1,WREN ;disable writes
bra MainLoop

ziieroare ;CRC failed
SendL 'N'
bra mainl

;******** procedures ******************

Write
movwf EECON1
movlw 0x55
movwf EECON2
movlw 0xAA
movwf EECON2
bsf EECON1,WR ;WRITE
nop
;nop
return


Receive
movlw xtal/2000000+1 ; for 20MHz => 11 => 1second delay
; for 18F2xxx chips, this should be xtal/1000000+1
movwf cnt1
rpt2
clrf cnt2
rpt3
clrf cnt3
rptc
btfss PIR1,RCIF ;test RX
bra notrcv
movf RCREG,w ;return read data in W
addwf crc,f ;compute crc
return
notrcv
decfsz cnt3
bra rptc
decfsz cnt2
bra rpt3
decfsz cnt1
bra rpt2
;timeout:
way_to_exit
bcf RCSTA, SPEN ; deactivate UART
bra first_address
;************************************************* ************
; After reset
; Do not expect the memory to be zero,
; Do not expect registers to be initialised like in catalog.

END

namqn 11-04-2008 11:57 PM

Đường dẫn tuyệt đối của tập tin nguồn quá dài (hơn 62 ký tự), bạn nên giải nén tập tin nguồn vào một thư mục con nào đó của thư mục gốc chẳng hạn.

Bạn cũng chú ý đọc post #20 của luồng này nữa, vì các tập tin nguồn tôi đã gửi cho Claudiu đã bị định dạng lại theo format của Unix.

Thân,

bigtitan 14-05-2008 01:28 AM

Mấy anh cho em hỏi, quy trình tạo 1 file HEX mới nạp vào làm bootloader cho bất kì con PIC nào là sao(nghĩa là mỗi con 1 file riêng , như 4331, 4431, 877, hay con nào đó,chứ ko phải với mọi nhe, đừng hiểu nhầm em). Em thấy cứ phiền bác nam config dùm ngại quá,lủi này đó ko có net sao nhờ được.

namqn 14-05-2008 08:09 AM

Trích:

Nguyên văn bởi bigtitan (Post 16205)
Mấy anh cho em hỏi, quy trình tạo 1 file HEX mới nạp vào làm bootloader cho bất kì con PIC nào là sao(nghĩa là mỗi con 1 file riêng , như 4331, 4431, 877, hay con nào đó,chứ ko phải với mọi nhe, đừng hiểu nhầm em). Em thấy cứ phiền bác nam config dùm ngại quá,lủi này đó ko có net sao nhờ được.

Tôi copy phần chú thích mà tôi đã viết trong các source code của Tiny Bootloader cho PIC18F dưới đây.
Code:

        radix DEC
        LIST      P=18F4331        ; change also: Configure->Select Device from MPLAB
xtal EQU 20000000                ; you may want to change: _XT_OSC_1H  _HS_OSC_1H  _HSPLL_OSC_1H
baud EQU 56000                        ; standard TinyBld baud rates: 115200 or 19200
        ; The above 3 lines can be changed and built a bootloader for the desired frequency (and PIC type)
       
        ;********************************************************************
        ;        Tiny Bootloader                18F series                Size=100words
        ;        claudiu.chiculita@ugal.ro
        ;        http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm
        ;        Modified by Nam Nguyen-Quang for testing different PIC18Fs with tinybldWin.exe v1.9
        ;        namqn@yahoo.com
        ;********************************************************************

;        This source file is for PIC18F242, 252, 442, 452, 248, 258, 448, 458, 2220, 2221, 2320,
;        2321, 4220, 4221, 4320, 4321, 1220, 1320, 2331, 2431, 4331, 4431, 2439, 2539, 4439, and 4539
       
;        Copy these include files to your project directory (i.e. they are in the same
;        directory with your .asm source file), if necessary

        #include "icdpictypes.inc"        ; Takes care of: #include "p18fxxx.inc",  max_flash, IdTypePIC
        #include "spbrgselect.inc"        ; RoundResult and baud_rate

                #define first_address max_flash-200                ;100 words

;        For different PICs, uncomment the appropriate lines of CONFIG directives
;        as indicated, and comment out all the other lines, if necessary
;        For example, the following configuration is for PIC18F4580, with 8 MHz crystal
;        You could find the symbol names for the chip in its include file
;        (in the Microchip\MPASM Suite directory)

Chú thích của Claudiu như sau: 3 dòng trên có thể được thay đổi để dịch bootloader cho cấu hình (và loại PIC) mong muốn. Ngay sau directive LIST có chú thích rằng bạn cũng phải thay đổi loại PIC bằng lệnh menu Configure->Select Device của MPLAB IDE.

Nếu bạn không hiểu phần hướng dẫn của tôi, tôi xin dịch thành tiếng Việt như sau:
Với các loại PIC khác nhau, bỏ chú thích những dòng tương ứng của các directive CONFIG như đã chỉ ra, và chú thích tất cả những dòng khác, nếu cần thiết. Ví dụ, cấu hình sau là cho PIC18F4580, với thạch anh 8 MHz. Bạn có thể tìm thấy các ký hiệu cho chip trong tập tin include của nó (nằm trong thư mục Microchip\MPASM Suite).

Tôi đã chỉ ra tập tin này áp dụng cho những PIC18F nào. Tất cả những từ cấu hình cần thiết đều đã được tôi làm mẫu, việc của bạn là thay thế những mẫu này với cấu hình phù hợp cho yêu cầu của bạn, sau đó biên dịch project. Chỉ cần copy tập tin nguồn .asm cùng với 2 tập tin "icdpictypes.inc" và "spbrgselect.inc" (chú ý, tôi có bổ sung các chip vào trong tập tin "icdpictypes.inc", do đó bạn nên dùng tập tin do tôi cung cấp).

Thân,


Múi giờ GMT. Hiện tại là 10:08 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