PDA

View Full Version : Cơ bản về bootloader & tiny bootloader


ntdung
03-09-2005, 09:51 PM
Chào tất cả mọi người!
Tôi là một người mới tham gia diễn đàn này. Tôi rất muốn tìm hiểu một số khái niệm căn bản, VD như BOOTLOADER, SECTOR, DEVICE ID....
Rất mong nhận được sự hướng dẫn của tất cả mọi người.
Mong tin. :(

falleaf
13-10-2005, 05:47 PM
Đây là bootloader cho các vi điều khiển Microchip PIC

* Nó là bootloader có kích thước nhỏ nhất, ít hơn 100 word bộ nhớ chương trình
* Nó là bootloader duy nhất hỗ trợ tất cả các dòng PIC: 16F, 18F, dsPIC (những dòng có hỗ trợ chế độ self-programming - tự nạp lại).

Đặc điểm của firmware:

* Kích thước chỉ có khoảng 100word (cho tất cả các dòng 16F, 18F, dsPIC, thực ra là nó ít hơn 100 word);
* Có thể ghi vào flash, eeprom, và có thể ghi vào các bytes cài đăt (configuration bytes) của dòng 18F
* Khi reset, đợi 1 giây để nhận chương trình nạp, nếu không nhận được thì chuyển qua chạy chương trình
* File .asm của bootloader rất dễ để chỉnh sửa lại, cho phù hợp với từng loại chip, từng tốc độ truyền nhận.


Đặc điểm của phần mềm trên máy tính

* Có thể tải chương trình vào flash (trong phiên bản này của bootloader, cho phép cài đặt các byte cài đặt (configuration bytes) và có thể thay đổi dễ dàng theo từng loại PIC)
* Làm việc với tất cả các dòng PIC đã nêu trên; tự động nhận ra nội dung file HEX và dòng PIC
* Ghi nhớ cài đặt cuối (thuận tiện cho người dùng khi thao tác với một loại PIC)
* Trong trường hợp lỗi, nó sẽ truyền một tín hiệu ngược lại cho máy tính để tái đồng bộ giữa máy tính và PIC;
* Chế độ giao tiếp có thể được thay đổi, có thể dùng bất kỳ cổng COM nào với tốc độ baud nào

Khái niệm chung về bootloader


Một bootloader là một chương trình nằm trong vi điều khiển, và giao tiếp với máy tính (thông qua giao tiếp nối tiếp). Bootloader nhận một chương trình (đã được dịch ra thành file HEX) từ máy tính và ghi nó vào bộ nhớ flash của vi điều khiển thông qua một phần mềm trên máy tính, sau đó chạy chương trình đó trên vi điều khiển. Bootloader chỉ có thể được dùng với những vi điều khiển nào cho phép ghi vào bộ nhớ flash thông qua phần mềm trên máy tính. Bản thân bootloader phải được ghi vào trong bộ nhớ flash bằng một mạch nạp khác. Để bootloader hoạt động, sau khi nhấn reset, một lệnh "goto bootloader" phải nằm ở địa chỉ đầu tiên của chương trình vi điều khiển. Có 2 loại bootloader, một số loại đôi khi cần người dùng đặt lại địa chỉ các dòng lệnh đầu, một số khác thì tự bản thân nó đặt những dòng lệnh đầu của người dùng vào một địa chỉ khác khi mà bootloader đã nằm sẵn ở đó, và quay trở lại chương trình của người dùng khi kết thúc đoạn chương trình bootloader.

http://www.etc.ugal.ro/cchiculita/software/bootloader.png

Trong trường hợp này, tiny bootloader tự động đem các vị trí đầu của chương trình người viết, và đặt ở phía dưới cùng với chương trình bootloader (thực ra đoạn chương trình này chỉ tối đa có 4 dòng lệnh). Các bạn lưu ý rằng địa chỉ 0x0004 đã là địa chỉ bắt đầu ngắt. Chính vì vậy, nếu các bạn lập trình từ vị trí 0x0000 thì cũng chỉ viết được tối đa 4 dòng lệnh, sau đó phải nhảy đến chương trình chính.

Như vậy, tiny bootloader sẽ thực hiện thao tác, cắt 4 dòng đầu tiên từ 0x0000 đến 0x0003 của các bạn, thay bằng dòng lệnh GOTO BOOTLOADER. Và nó tự động đặt 4 dòng lệnh của các bạn nằm ngay phía trên chương trình bootloader (xem hình trên).Sau đó, chạy chương trình tinybootloader phía bên dưới. Rồi nó quay lên chạy 4 dòng lệnh của các bạn.

Kết thúc 4 dòng này, nó lại trở về vị trí chương trình chạy bình thường của các bạn ở bên trên.

Trong bài viết sau, tôi sẽ đề cập tới việc cài đặt và sử dụng tiny bootloader.

Thú thực với các bạn rằng, tôi dùng tiny bootloader từ lâu, nhưng một năm trở lại đây, thấy tính năng của nó quá tốt, cũng ngỡ ngàng. Nó nạp được cho cả dsPIC luôn rồi thì không vấn đề gì mà không dùng nó.

Nội việc viết đoạn chương trình giao tiếp RS232 mà tôi nghĩ lúc nào cũng cần thiết, thôi thì dùng bootloader luôn cho tiện.

2 đoạn cuối là nhận xét cá nhân, các bạn không cần quan tâm chi tiết.

Chúc vui.

falleaf
13-10-2005, 06:12 PM
Phần cứng của tiny bootloader các bạn làm theo sơ đồ sau:

http://www.etc.ugal.ro/cchiculita/software/max232.png

http://www.etc.ugal.ro/cchiculita/software/resetpic.gif

Phần mềm, các bạn có thể down load tại đây:

http://www.etc.ugal.ro/cchiculita/software/tinybld19.zip

Đây là phiên bản tinybld19

falleaf
05-12-2005, 03:32 AM
http://i3.photobucket.com/albums/y64/falleafd/tinybootloader1.jpg

Trên đây là danh sách những chip đã được kiểm tra là nạp được với tiny bootloader.

Những chip được đánh dấu màu xanh đậm là những chip đã được tác giả test và dùng thường xuyên. Những chip màu xanh là những chip đã được test và verify. Còn những chip màu xanh tối là những chip đã được phản hồi là nạp được.

Riêng cá nhân tôi, đã sử dụng tiny bootloader nạp cho các dòng PIC sau:

16F876, 16F876A, 16F88, 16F877, 16F877A

Tất cả đều hoạt động tốt, và chưa bị một lỗi nào, ngoại trừ quên bấm nút reset. Nhưng nay, phiên bản mới này đã cho phép reset bằng chương trình, vì thế, tôi tin rằng phiên bản mới này sẽ không gây bất kỳ trở ngại nào cho người dùng.

Chúc vui.

falleaf
05-12-2005, 03:37 AM
Các bạn lưu ý nút reset bằng phần mềm, nếu đường dây các bạn nối quá dài, cần nối một con điện trở kéo lên 1K và một diode (trong hình màu xanh mờ). Nhưng điện trở 4K7 nối vào chân MCLR và VDD thực chất khi thiết kế mạch reset bằng tay các bạn đã có rồi. Chính vì vậy không cần thêm vào.

Còn lại tất cả mạch đều đơn giản giống như mạch giao tiếp RS232 bình thường. Các bạn vẫn có thể dùng bootloader để giao tiếp RS232 rất tốt, không cần làm bất kỳ điều gì khác.

Chúc vui.

4MD
25-02-2006, 08:20 PM
Em đã test và chạy tốt cho dsPIC4012, bản này còn có thêm tính năng kiểm tra: Check PIC hay hơn so với các phiên bản trước đó. -> Bản tinybootloader này rất tuyệt.

tinhthanthep
28-02-2006, 08:31 AM
Từ trước tới giờ tớ dùng MPLAP để viết chương trình rồi dùng winpic800 để nạp vào chip. Có thấy chỗ nào động đến khái niệm bootloader đâu? Các bác giải thích xem sao lại không gặp khái niệm này thế, và nó là gì?

batbatdieu
28-02-2006, 09:32 PM
Em đã test và chạy tốt cho dsPIC4012, bản này còn có thêm tính năng kiểm tra: Check PIC hay hơn so với các phiên bản trước đó. -> Bản tinybootloader này rất tuyệt.
Bạn đã thử với 4011 chưa , mình cũng thử nhưng chỉ ghi đc 1 lần rùi đơ luôn ,

voduychau
09-03-2006, 10:27 AM
tui đang dùng 89c51,mạch nạp gồm có 1 con master nạp sẵn chương trình giao tiếp máy tính gọi là firmware,nay lại có khái niệm bootloader nữa,vậy cái này có giống như cái firmware của 89 ko?ko cần nó có được ko?
Đối với người biết rồi thì câu này hỏi hơi bị ..ngu 1 tí,nhưng tui mới học,mong giúp đỡ cho

namqn
09-03-2006, 05:33 PM
tui đang dùng 89c51,mạch nạp gồm có 1 con master nạp sẵn chương trình giao tiếp máy tính gọi là firmware,nay lại có khái niệm bootloader nữa,vậy cái này có giống như cái firmware của 89 ko?ko cần nó có được ko?
Đối với người biết rồi thì câu này hỏi hơi bị ..ngu 1 tí,nhưng tui mới học,mong giúp đỡ cho

Bootloader là một khái niệm khác, nghĩa là bản thân chip cần được lập trình sẽ chạy một chương trình nhỏ và tự nạp chương trình mới vào bộ nhớ của nó, sau đó nó sẽ tự động thực thi chương trình vừa được nạp. Không phải chỉ có chip của Microchip mới có bootloader, một số vi điều khiển tương thích 8051 của Analog Devices, Dallas, Philips, và cả Atmel cũng có bootloader, nhưng đó là những bootloader của nhà sản xuất, được mã hóa cứng trong chip, còn bootloader của Microchip là do người dùng tự phát triển.

Bootloader cũng là một dạng firmware, nhưng chạy trên target chip, thay vì chạy trên một master chip, do vậy bạn không cần phải có mạch nạp nếu bạn đã có bootloader. Lẽ đương nhiên không có bootloader thì bạn vẫn dùng tốt được vi điều khiển, nhưng bạn đã được giải thích những thuận lợi của bootloader trong luồng này rồi đó.

Thân,

namqn
09-03-2006, 05:38 PM
Bạn đã thử với 4011 chưa , mình cũng thử nhưng chỉ ghi đc 1 lần rùi đơ luôn ,

Tôi vừa thử nghiệm Tiny Bootloader với các dsPIC từ 201x đến 401x, tất cả đều chạy tốt, không có chuyện chỉ ghi được một lần duy nhất. Bạn có thể cho biết bạn đã làm như thế nào không?

voduychau
10-03-2006, 07:58 PM
à há,như vậy là chỉ cần làm 1 cái mạch tẹo teo như thế rồi cắm vào computer là nó nạp,ko cần master gì ráo,vụ này rất hay.
89c51 có botloader ko vậy? nếu ko có thì có thể dùng mạch nạp mater/slave rồi nạp cái botloader cho nó ko?
hic hic,càng học càng phát sinh....

namqn
10-03-2006, 11:09 PM
89c51 có botloader ko vậy? nếu ko có thì có thể dùng mạch nạp mater/slave rồi nạp cái botloader cho nó ko?
Điều quan trọng là chip phải có khả năng tự nạp chương trình thì mới có thể tạo bootloader cho nó. 89C51 của Atmel không có khả năng này, nên không thể viết bootloader cho 89C51 được. Tuy nhiên, Atmel có một số chip tương thích 8051, chẳng hạn như AT89C5115 có khả năng tự nạp chương trình (bạn vào trang web của Atmel và dùng link sau:
http://www.atmel.com/dyn/products/param_table.asp?family_id=604&OrderBy=part_no&Direction=ASC
để xem bảng lựa chọn các chip theo kiến trúc 8051, chú ý cột "Self Program Memory".) Atmel cũng cung cấp sẵn phần mềm chạy trên máy tính để kết nối với bootloader (họ gọi là Serial Loader) có sẵn trong chip.

Thân,

phamthaihoa
21-03-2006, 06:51 PM
Tôi vừa thử nghiệm Tiny Bootloader với các dsPIC từ 201x đến 401x, tất cả đều chạy tốt, không có chuyện chỉ ghi được một lần duy nhất. Bạn có thể cho biết bạn đã làm như thế nào không?
Ơ, lạ nhỉ, em nạp cho 4013, nó không chạy.

Tiny Bootloader có nhược điểm là nó cần lệnh goto trong 4 word đầu tiên của file hex. Vì vậy nó không làm việc với một số trình dịch. Đáng tiếc nhất trong đó có hai phiên bản mới nhất của HTPIC là HTPICC9.50 PL3 và HTPICC18 9.50.
Nhưng với phiên bản 8.05PL2 và 8.35PL3 lại chạy rất tốt.
Em hỏi trên forum của bọn HTPIC thì mod trả lời, em làm theo cũng chẳng chạy. Trên diễn đàn Microchipc.com có một chú người nhật đưa ra giải pháp khác phục nhưng chỉ chạy với bản 9.50Lite còn bản "xịn" thì không chạy :(

batbatdieu
22-03-2006, 06:50 PM
Tôi vừa thử nghiệm Tiny Bootloader với các dsPIC từ 201x đến 401x, tất cả đều chạy tốt, không có chuyện chỉ ghi được một lần duy nhất. Bạn có thể cho biết bạn đã làm như thế nào không?

1 - You can use one of the provided .hex files or
2 - Modify tinybld.asm and assemble it using MPASM IDE (or Mpasmwin.exe)
Modify "xtal", "baud", "_??_OSC" to what you need; assemble it (for example with .\MPLAB\MCHIP_Tools\Mpasmwin.exe); write the HEX it with a PIC programmer; put the PIC on you board and connect it to the PC serial port.
3 - Requirements for your program:
The program must meet this requirement: it must have in the first 4 words of memory a GOTO to the start of the main program. (this is what the majority of the bootloaders require). So in assembler it should look something like this:PIC16F PIC16F PIC18F
org 0
;clrf STATUS
clrf PCLATH
goto Main org 0
;clrf STATUS
pagesel Main
goto Main org 0
goto Main

If you use a compiler, search the help for a directive that allows coexistence with a bootloader;

Tôi đã làm theo bước 2 , modify lại file tinybld_ds4012.s rồi dịch và nạp vào 4011 , kết quả là tiny bootloader nhận đc là dspic4011/4012 . Nhưng sau khi nạp chương trình thì tiny bootloader ko nhận ra dspic đc nữa , tôi buộc phải nạp lại bootloader.
Có lẽ do bước 3 tôi đã làm sai , anh có thể cho 1 chương trình mẫu tham khảo đc ko , tôi dùng C30

namqn
22-03-2006, 07:32 PM
Tôi đã làm theo bước 2 , modify lại file tinybld_ds4012.s rồi dịch và nạp vào 4011 , kết quả là tiny bootloader nhận đc là dspic4011/4012 . Nhưng sau khi nạp chương trình thì tiny bootloader ko nhận ra dspic đc nữa , tôi buộc phải nạp lại bootloader.
Có lẽ do bước 3 tôi đã làm sai , anh có thể cho 1 chương trình mẫu tham khảo đc ko , tôi dùng C30
Bạn có thể kiểm tra giả thiết về bước 3 của bạn bằng cách thử dùng file .hex mà tôi đã cung cấp trong luồng sau:
http://www.picvietnam.com/forum//showthread.php?t=333
Nếu đúng là bước 3 bạn làm không tốt thì tôi sẽ bàn tiếp về việc viết code trong C30 cho tiny bootloader.

Thân,

hanspkt
16-11-2006, 03:54 PM
Các anh cho em hỏi thêm điều này: sao tiny bootloader em làm và nó đã hoạt động rồi, nó báo có tìm thấy pic6f877a rồi và nhấn nút writeflash thì cũng ghi chương trình được rồi (hoạt động đúng yêu cầu) nhưng các lần sau thì lại báo lỗi không tìm thấy chip (mặc dù em có nhấn nút reset nhiều lần) và cũng không ghi chương trình mới được (nhấn writeflash), xin các anh chỉ cho em cách khắc phục.
(em dùng tinybld191)
cám ơn nhiều!

namqn
16-11-2006, 06:32 PM
Nếu Tiny Bootloader được viết không cẩn thận, nó chỉ có khả năng nạp chương trình vào chip một lần duy nhất. Điều đang diễn ra là đoạn code của bootloader trong những lần hoạt động tiếp theo của chip không thể thực thi được. Có nhiều nguyên nhân dẫn đến hiện tượng này, do đó bạn cần cho biết thêm thông tin thì mới giúp bạn được (nếu bạn tự biên dịch bootloader thì cho biết phần mã nguồn của bootloader, nếu không phải là trường hợp đó thì bạn cho biết mã nguồn của chương trình ứng dụng).

Thân,

hanspkt
23-11-2006, 03:30 PM
em đã tìm ra nguyên nhân rồi, cám ơn anh nhiều

namqn
19-12-2006, 10:49 PM
Anh Falleaf ơi, giúp em với....
Nếu dùng CSSC hoặc BASIC( của Oshonsoft) để viết thì đoạn lệnh đầu tiên của 1 chương trình để biên dịch và nạp đựoc bằng bootloader la gì...Cho em 1 đoạn mã mẫu đi.
Cảm ơn nhiều
Với CCS C thì không cần làm gì hết, C compiler tự thêm các lệnh cần thiết ở phần đầu của Flash. Còn với Basic compiler của Oshonsoft thì có thể cần thêm một số lệnh ở phía đầu, ví dụ như sau:

ASM: org 0x00
ASM: clrf 0x03
ASM: movlw 0x00 'Create a long jump
ASM: movwf 0x0A 'compatible with
Goto l1 'the bootloader
l1:

Sau l1 là chương trình của bạn.

Thân,

anhquangngai
21-12-2006, 05:18 PM
bác nào cho em hỏi em đang làm mạch Tinybootloader để nạp cho con PIC6F877A nhưng khi em kiểm tra thì nó báo lỗi là ko tìm ra PIC
phần cứng thì em kiểm tra rồi ---> Ok
phần firmware (file kèm theo) thì em làm như trên forum đã hướng dẫn nhưng khi kiểm tra thì nó báo lỗi
Bác nào có firmware mà đã nạp OK rồi thì gởi lên forum cho em với (cả file ÁM và HEX nữa)
các bác cứu em với!!!

hanspkt
23-12-2006, 12:57 PM
bạn kiểm tra phần kết nối chân reset lại thử xem. Mình cũng bị lỗi tương tự, cứ nghĩ dây cổng com mình mua là đã kết nối đủ các chân nhưng sau khi đo lại thì mới biết chân reset chưa được kết nối. Không biết là dây bị đứt hay là nó không nối hay sao ấy.

anhquangngai
23-12-2006, 05:44 PM
cảm ơn bạn mình đã kiểm tra rồi, mình cũng đã kết nối nhưng nó vẫn ko chịu nạp (?)
có bác nào có mạch đã chạy rồi thì kiểm tra thử phần firmware của mình thử chạy ko?
Xin cảmv ơn!

anhquangngai
23-12-2006, 05:58 PM
mạch của mình giống như mạch của bác ntc hướng dẫn

giaosucan
27-12-2006, 10:54 PM
tui cung dung bootloader nap kha tot ,nhung ko hiu sao dang nap dc may lan thi chip nong ran ,sau do ko nhan dc chip nua :-?

namqn
28-12-2006, 08:58 PM
tui cung dung bootloader nap kha tot ,nhung ko hiu sao dang nap dc may lan thi chip nong ran ,sau do ko nhan dc chip nua :-?
Có khả năng chip bị ngắn mạch nguồn (do I/O kết nối không chuẩn, do chạm chập của đường mạch, ...) và đã hỏng. Kiểm tra bằng các mạch nạp thông thường xem có nhận dạng được chip hay không.

Thân,

khangcodt
29-01-2007, 09:53 PM
Chào bác falleaf, bác namqn và các huynh đài PIC bang.

Đệ cũng đang nghiên cứu về PIC và đặc biệt là Bootloader. Hiện tại đệ đang "mò mẫm" cách dùng Bootloader của CCSC nhưng chưa thành công. Có bậc huynh đài nào rành xin chỉ giáo giúp với. Cám ơn trước luôn.!!!
Thấy trong bộ phần mềm CCSC có các EXAMPLE và DRIVER như ex_bootloader.c, ex_bootload.c, loader.c , bootloader.h, bootloader.c ...etc, đệ đã chỉnh sửa ex_bootloader.c để tạo một application đơn giản (nhấp nháy chân RB0 của P16f877) và cho dịch bằng MPLAB. Tuy dịch và mô phỏng (bằng Proteus) nhưng chẳng biết làm thế nào để dùng với Bootloader. Dùng TinyBld19 của bác F bày cho cũng không nhận được gì hết. (Các bác thông cảm, vẫn còn hơi 'silly' một tẹo)

Bác cao thủ nào sành điệu về món này xin chỉ bảo giùm. Nếu có thời gian rảnh thì Pốt cụ thể (càng tỉ mỉ càng tốt... Hì hì.!!!) các vấn đề như ráp mạch như thế nào, dùng Bld19 hay phần mềm nào, nạp chương trình nào... Tóm lại là từ A đến Z.
Mong sớm hồi âm từ các bác.
Thanks for thousand times.!!!
__________________________
PS: May be contact with me at Email: khangcodt@yahoo.com

namqn
30-01-2007, 05:18 AM
Chào bác falleaf, bác namqn và các huynh đài PIC bang.

Đệ cũng đang nghiên cứu về PIC và đặc biệt là Bootloader. Hiện tại đệ đang "mò mẫm" cách dùng Bootloader của CCSC nhưng chưa thành công. Có bậc huynh đài nào rành xin chỉ giáo giúp với. Cám ơn trước luôn.!!!
Thấy trong bộ phần mềm CCSC có các EXAMPLE và DRIVER như ex_bootloader.c, ex_bootload.c, loader.c , bootloader.h, bootloader.c ...etc, đệ đã chỉnh sửa ex_bootloader.c để tạo một application đơn giản (nhấp nháy chân RB0 của P16f877) và cho dịch bằng MPLAB. Tuy dịch và mô phỏng (bằng Proteus) nhưng chẳng biết làm thế nào để dùng với Bootloader. Dùng TinyBld19 của bác F bày cho cũng không nhận được gì hết. (Các bác thông cảm, vẫn còn hơi 'silly' một tẹo)

Bác cao thủ nào sành điệu về món này xin chỉ bảo giùm. Nếu có thời gian rảnh thì Pốt cụ thể (càng tỉ mỉ càng tốt... Hì hì.!!!) các vấn đề như ráp mạch như thế nào, dùng Bld19 hay phần mềm nào, nạp chương trình nào... Tóm lại là từ A đến Z.
Mong sớm hồi âm từ các bác.
Thanks for thousand times.!!!

Nên dùng Tiny Bootloader, vì kích thước nhỏ gọn. Phần cứng thì đã có sơ đồ của F ngay trong luồng này, ở trang 1. Bootloader sẽ được nạp vào chip bằng 1 mạch nạp bình thường chỉ 1 lần đầu tiên, sau đó sẽ dùng phần mềm tương thích với firmware (bootloader) trong chip để nạp những chương trình ứng dụng. Nếu dùng bootloader của CCS C thì tất nhiên phải dùng phần mềm giao tiếp trên PC của nó, gần như chắc chắn là firmware của CCS C không làm việc với phần mềm giao tiếp của Tiny Bootloader.

Bạn có thể cho biết chip cụ thể, tôi sẽ dịch cho bạn một firmware với cấu hình mà bạn muốn, sau đó bạn nạp firmware đó vào chip bằng một mạch nạp bình thường nào đó.

Như tôi đã có lần trả lời, CCS C tương thích với các bootloader, do đó không cần thao tác gì thêm đối với chương trình ứng dụng.

Bạn cũng nên phân biệt bootloader và chương trình ứng dụng, không nhất thiết phải ghép code của bootloader và trình ứng dụng với nhau.

Thân,

khangcodt
04-02-2007, 09:29 PM
Trước hết xin cảm ơn bác namqn đã dành thời gian "tiếp" em.

Điều đầu tiên mà em muốn nói là em bắt đầu thấy 'hơi bị ngại' làm việc với Asm. Trước khi tìm hiểu về PIC, em đã sử dụng họ 8051 (AT89C52) có thể nói là khá thạo, nhưng hoàn toàn bằng Asm. Từ khi sử dụng CCSC của MC PIC, em thấy công việc lập trình mà đặc biệt là gỡ rối chương trình trở nên dễ dàng hơn rất nhiều. Nếu dùng Asm thì việc gỡ rối rất phức tạp và đau đầu. Vả lại, trong CCSC có rất nhiều những hàm dựng sẵn (Built-In function) sử dụng rất hữu ích (riêng điều này hình như trong C của AT89 không có, còn với Asm thì phải tự mình làm lấy). Thêm vào đó, khi cụ thể hóa một giải thuật có độ phức tạp cao thì việc sử dụng ngôn ngữ bậc cao rõ ràng ưu thế hơn nhiều so với bậc thấp. (Nói phét vậy thôi chứ em cũng chưa làm chương trình nào quá phức tạp).
Theo em hiểu như bác nói thì chỉ cần làm một Bootloader bình thường (nạp firmware vào chip, gắn vào mạch cứng của bác F rồi giao tiếp với TinyBld...), sau đó có thể dùng CCSC để xây dựng App, không cần khai báo gì thêm, dịch ra file HEX rồi lấy file đó nạp vào chíp qua Tinybld.(chíp em đang dùng là P16F887A).

Còn nếu em hiểu không đúng thì em xin trình bày một số vấn đề sau để nếu có thể bác cố vấn cho em luôn.

Em đọc trong direction của các ví dụ liên quan đến Bootloader trong phần EXAMPLE, thấy giao tiếp giữa PIC với PC sử dụng chương trình SIOW.exe (trong thư mục của CCSC). Nhưng một điều rất đáng tiếc là trong Help của CCSC lại không hề nói sử dụng như thế nào, và bản thân chương trình SIOW.exe thì không có Help.

Nếu bác giúp em được vụ này thì không những em mà cả các đệ tử của PIC bang cũng được nhờ rất nhiều.

Xin đa tạ.!!!
_________________
PS: Maybe contact with me at Email: khangcodt@yahoo.com

namqn
04-02-2007, 11:01 PM
...
Theo em hiểu như bác nói thì chỉ cần làm một Bootloader bình thường (nạp firmware vào chip, gắn vào mạch cứng của bác F rồi giao tiếp với TinyBld...), sau đó có thể dùng CCSC để xây dựng App, không cần khai báo gì thêm, dịch ra file HEX rồi lấy file đó nạp vào chíp qua Tinybld.(chíp em đang dùng là P16F887A).

Còn nếu em hiểu không đúng thì em xin trình bày một số vấn đề sau để nếu có thể bác cố vấn cho em luôn.

...
Bạn đã hiểu đúng ý của tôi rồi đấy, chỉ cần có bootloader thích hợp cho chip và tương thích với Tiny Bootloader thì có thể nạp chip bằng Tiny Bootloader. Có lẽ bạn đang muốn nói tới PIC16F877A (vì Microchip không có PIC16F887A, nhưng có chip PIC16F887)? Với các chương trình dịch cho ngôn ngữ cấp cao thì thanh ghi PCLATH của dòng PIC16 đã được xử lý theo cách tương thích với các bootloader rồi.

Thân,

khangcodt
05-02-2007, 12:12 PM
Cảm ơn bác vì những thông tin và sự trả lời rất nhanh chóng.

Nhưng em thắc mắc một điều là tại sao Microchip lại không có P16F887A. Chính em nghiên cứu con này bằng Datasheet viết về 16F87XA của Microchip (download của Microchip). Bản thân những con của em cũng là 16F87XA theo đúng logo và seri của Microchip.

Bác thử xem lại xem Tinybld có sử dụng cho 16F877A (nói chung là 16F87XA) được không?

Cảm ơn bác.!!!
_______________________
PS: Maybe contact with me at Email: khangcodt@yahoo.com

namqn
05-02-2007, 06:25 PM
Cảm ơn bác vì những thông tin và sự trả lời rất nhanh chóng.

Nhưng em thắc mắc một điều là tại sao Microchip lại không có P16F887A. Chính em nghiên cứu con này bằng Datasheet viết về 16F87XA của Microchip (download của Microchip). Bản thân những con của em cũng là 16F87XA theo đúng logo và seri của Microchip.

Bác thử xem lại xem Tinybld có sử dụng cho 16F877A (nói chung là 16F87XA) được không?

Cảm ơn bác.!!!

Vì PIC16F877 cần có sự cải tiến nên phiên bản sau này được đặt tên là PIC16F877A. Còn PIC16F887 ra đời khi những cải tiến đã được thực hiện, nên không có phiên bản 887A cho chip này. Chỉ có một vài dòng chip có các phiên bản ...A, đó là những dòng chip đầu tiên ở các bước ngoặt công nghệ của Microchip.

PIC16F87xA chạy tốt với Tiny Bootloader.

Thân,

khangcodt
05-02-2007, 08:13 PM
Cảm ơn bác namqn rất nhiều

bigtitan
26-04-2007, 03:43 PM
Em hỏi câu hơi ngớ ngẩn tí:theo như các pác đã nói trên vậy túm lại 1 câu gọn nhất là tiny bootloader là 1 phần cứng nhỏ cho phép ta vừa nạp vừa test được PIC mà không cần tháo ra cắm vào gì phải không ạ.Chỉ cần hết nối với PIC,PC;nạp và chạy thôi(đã thiết lập các thông số trước rồi).Chỉ vậy thôi phải không ??
Rổi còn phần cứng chỉ đơn giản như hình mà bác F đã đưa lên!!
Xin hết

namqn
26-04-2007, 06:16 PM
Em hỏi câu hơi ngớ ngẩn tí:theo như các pác đã nói trên vậy túm lại 1 câu gọn nhất là tiny bootloader là 1 phần cứng nhỏ cho phép ta vừa nạp vừa test được PIC mà không cần tháo ra cắm vào gì phải không ạ.Chỉ cần hết nối với PIC,PC;nạp và chạy thôi(đã thiết lập các thông số trước rồi).Chỉ vậy thôi phải không ??
Rổi còn phần cứng chỉ đơn giản như hình mà bác F đã đưa lên!!
Xin hết
Như tôi đã nói (ở đâu đấy, có thể ngay trong luồng này), để dùng bootloader thì chúng ta cần có 2 phần: phần cứng cho phép giao tiếp qua RS-232 (có thể đặc biệt hơn một chút như thiết kế của Tiny Bootloader, hay chỉ bình thường là một giao tiếp RS-232) đi kèm với firmware trong PIC, và phần mềm để truyền tập tin .hex chứa chương trình ứng dụng từ host PC đến PIC.

Phần cứng đó có thể là mạch thử nghiệm, mạch phát triển, hay mạch điều khiển thực của bạn. Vì firmware hơi thông minh một chút (nó chạy trên PIC mà), nên phần mềm chạy trên host PC cũng phải thông minh như nó (chính xác hơn là hiểu những gì firmware hiểu) để có thể giao tiếp với nhau.

Đảm bảo được những yêu cầu đó thì có thể nói như bạn: chỉ cần kết nối mạch với host PC, dùng phần mềm giao tiếp để chuyển chương trình ứng dụng cần nạp vào PIC, và sau đó là chạy thử chương trình ứng dụng.

Thân,

lamdangkhoa
06-05-2007, 03:38 PM
Bạn có thể kiểm tra giả thiết về bước 3 của bạn bằng cách thử dùng file .hex mà tôi đã cung cấp trong luồng sau:
http://www.picvietnam.com/forum//showthread.php?t=333
Nếu đúng là bước 3 bạn làm không tốt thì tôi sẽ bàn tiếp về việc viết code trong C30 cho tiny bootloader.

Thân,


HICCC!!!
LINK DIE RÙI ANH OI!!

namqn
06-05-2007, 09:11 PM
HICCC!!!
LINK DIE RÙI ANH OI!!
Bạn muốn nói link nào? Link để download tập tin ví dụ của dsPIC tutorial 1?

Thân,

omlun
08-05-2007, 08:55 PM
Bạn có thể kiểm tra giả thiết về bước 3 của bạn bằng cách thử dùng file .hex mà tôi đã cung cấp trong luồng sau:
http://www.picvietnam.com/forum//showthread.php?t=333
Nếu đúng là bước 3 bạn làm không tốt thì tôi sẽ bàn tiếp về việc viết code trong C30 cho tiny bootloader.

Thân,

link bi die!!

namqn
08-05-2007, 09:04 PM
Các bài viết trong box đó sẽ bị ẩn đối với những người chưa đăng nhập. Bạn đăng nhập thì sẽ mở được bài viết bằng link đó. Đôi khi bạn phải đăng nhập lại vì một lý do nào đó. Trước khi thông báo lỗi kiểu như vậy bạn hãy kiểm tra lại xem bạn đang còn log in hay đã log out rồi. Tôi vừa kiểm tra link đó xong, nếu tôi chưa đăng nhập thì cũng nhận được thông báo lỗi, nhưng đăng nhập xong thì đọc được bài viết bình thường. Nó chỉ là cái link đến dsPIC tutorial 1 nằm trong box 'dsPIC'.

Thân,

omlun
08-05-2007, 09:10 PM
hiccc em ko biết tại sao nữa! đã đăng nhập rùi nhưng click vào link
http://www.picvietnam.com/forum//showthread.php?t=333
hay những link tương tự điều bị báo lỗi:

Invalid Ðề tài specified. If you followed a valid link, please notify the administrator

namqn
09-05-2007, 02:01 AM
Tôi cũng vẫn bị vậy, dù đã đăng nhập rồi. Tôi dùng Mozilla, khi nhấp vào link đó thì nó mở thêm một tab nữa, và xuất hiện thông báo đó. Tôi đăng nhập thêm một lần nữa từ tab đó, và đã có thể xem được bài viết.

Thân,

bigtitan
17-06-2007, 02:32 PM
Có ai có sơ đồ cụ thể ko ạ.Về cả mạch bootloader này ko ạ.Em vẫn chưa hiểu rõ lắm.Theo bác F nói thì chỉ có mạch con MAX232 thui.Còn con PIC mình quăng chỗ nào,,,hình như theo em theo dõi là mạch gồm 2 phần phải ko ạ.Bác nào đã làm rồi giúp em cái nha!!(thứ lỗi tiểu đệ ngu muội)

namqn
17-06-2007, 09:04 PM
Có ai có sơ đồ cụ thể ko ạ.Về cả mạch bootloader này ko ạ.Em vẫn chưa hiểu rõ lắm.Theo bác F nói thì chỉ có mạch con MAX232 thui.Còn con PIC mình quăng chỗ nào,,,hình như theo em theo dõi là mạch gồm 2 phần phải ko ạ.Bác nào đã làm rồi giúp em cái nha!!(thứ lỗi tiểu đệ ngu muội)
Bạn vào trang web http://www.etc.ugal.ro/cchiculita/software/tinyblddownload.htm để download phiên bản mới nhất của Tiny PIC Bootloader. Bạn mở tập tin .zip đó, đến thư mục 'picsource/other', trong đó sẽ có 2 tập tin .pdf vẽ phần cứng cho bootloader, có hiện thực chức năng reset PIC bằng chân 7/8 của cổng COM. (thư mục con 'nnq' trong đó chứa source code của firmware dành cho các PIC18, do tôi viết ra, và gửi cho Claudiu).

Thân,

thongtr
18-07-2007, 01:01 AM
ôi mình chẳng hiểu gì cả! câu lênh bên lập trình cho Pic khác hoàn toan bên 89c!!
bạn hãy cho mình những tài liệu về các câu lệnh và sơ đồ tổ chức bộ nhớ cũng như sơ đồ và nhiệm vụ các chân luôn nhé!!
mình mới học mong bạn thông cảm!!

namqn
18-07-2007, 02:06 AM
ôi mình chẳng hiểu gì cả! câu lênh bên lập trình cho Pic khác hoàn toan bên 89c!!
bạn hãy cho mình những tài liệu về các câu lệnh và sơ đồ tổ chức bộ nhớ cũng như sơ đồ và nhiệm vụ các chân luôn nhé!!
mình mới học mong bạn thông cảm!!
Đề nghị bạn đọc luồng 'Dành cho người mới học', link nằm ở khung bên trái của trang chính của diễn đàn. Nếu bạn không tìm thấy thì link dưới đây:

http://www.picvietnam.com/forum//showthread.php?t=4

Thân,

anhphuong23
18-07-2007, 03:14 PM
Vậy thật ra nạp theo bootloader và nạp theo ICSP có gì khác nhau không ?

Cũng dùng 2 chân RB6-RB7 , cũng có nối chân Reset . Vẫn không cần tháo chip ra , vẫn Detec được chip .

Chắc khác nhau ở chổ là ICSP cần có thêm 1 mạch nạp riêng biệt . Nạp xong lại phải nhớ reset lại PIC .

namqn
18-07-2007, 07:01 PM
Vậy thật ra nạp theo bootloader và nạp theo ICSP có gì khác nhau không ?

Cũng dùng 2 chân RB6-RB7 , cũng có nối chân Reset . Vẫn không cần tháo chip ra , vẫn Detec được chip .

Chắc khác nhau ở chổ là ICSP cần có thêm 1 mạch nạp riêng biệt . Nạp xong lại phải nhớ reset lại PIC .
Nạp bằng bootloader và nạp bằng ICSP khác nhau:

- Mọi chip đều hỗ trợ nạp bằng ICSP, trong khi chỉ có 1 số chip có khả năng tự ghi vào flash mới có thể nạp bằng bootloader.
- Nạp bằng bootloader thì cần có 1 firmware nho nhỏ nằm trong chip để giao tiếp với host nhằm lấy các thông tin cần nạp vào chip.
- Nạp bằng ICSP thì nhất định phải dùng các chân dành riêng cho giao tiếp đó (thường là RB6, RB7, MCLR, và có thể là PGM), còn nạp bằng bootloader thì có thể dùng hầu như bất kỳ chân nào, và có thể dùng nhiều giao tiếp khác nhau (RS-232, I2C, hay USB) tùy theo firmware.

Thân,

plain
28-07-2007, 08:45 AM
tôi vừa mới ráp thử một bộ tiny bootloader theo bài hướng dẫn của bạn Nguyễn Trung Chính và phát hiện ra một chuyện lạ:
Khi dùng reset bằng đường RST, lẽ ra đường reset này phải xuống thấp rồi trở lên cao, sau đó mới tiến hành check PIC thì nó lại giữ luôn đường này ở mức thấp trong suốt quá trình check PIC, điều này gây ra lỗi không tìm thấy PIC. Chuyển sang reset bằng tay thì hắn chạy tốt. Tôi nghĩ đây chắc chắn là lỗi của chương trình trên máy tính rồi.
Không biết có bạn nào biết cách khắc phục không?

pictai
25-09-2007, 10:26 PM
cai nay cung kha hay so voi tiny

PSman
08-11-2007, 12:02 PM
Em làm theo hướng dẫn với 16F877A, sửa asm và biên dịch bằng MPLAB OK, nạp source .hex vào 16F877A cũng OK. Build mạch phần cứng cũng OK, đã kiểm tra lại tất cả. Vậy mà vẫn gặp tình trạng k detect được PIC.

Baud 115200 / 19200 đều không được. Bỏ Reset bằng phần cứng đi dùng Reset tay cũng không đc.

Có bác nào gặp như em không xin chỉ giáo kinh nghiệm với.

À, đoạn code mẫu trong TUT của bác NTC up lên đây, copy vào MPLAB dịch báo lỗi. Xài asm trong zip load về từ TinyBootLd thì OK.

Bác Nam có hex mẫu cho 16F877A đang chạy tốt up lên cho em với, để em chắc chắn rằng k phải do asm -> hex bị sai.

Em dùng thạch anh 20MHz, baud 115200 cho nhanh. Cám ơn bác trước !

namqn
08-11-2007, 05:08 PM
Với thạch anh 20 MHz, không nên dùng baud rate 115200 bps. Tôi đã chọn baud rate tốt nhất có thể có là 38400 bps. Từ cấu hình trong bootloader của tôi:

__CONFIG _HS_OSC & _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _LVP_OFF & _DEBUG_OFF


Thân,

PSman
09-11-2007, 12:03 PM
Hic, em load của bác Nam về rồi mà vẫn k chạy được. Bác Nam và mọi người check dùm em xem mạch nguyên lí và mạch in có lỗi gì không ? Vd thừa thiếu chân nào, chứ board thì em đã test kĩ, k dính chân nào cả.

namqn
09-11-2007, 04:43 PM
Hic, em load của bác Nam về rồi mà vẫn k chạy được. Bác Nam và mọi người check dùm em xem mạch nguyên lí và mạch in có lỗi gì không ? Vd thừa thiếu chân nào, chứ board thì em đã test kĩ, k dính chân nào cả.
Trong sơ đồ nguyên lý của bạn, chân 9 của MAX232 không nối vào chân 1 của PIC (tên các net khác nhau). Bạn cũng nên cho biết bạn thiết lập phần mềm trên host PC ra sao (đã có trường hợp thiết lập không tốt trên host PC dẫn đến bootloader không làm việc tốt).

Thân,

PSman
09-11-2007, 10:42 PM
Cám ơn bác Nam đã trả lời sớm. ;)
Em đánh nhầm net thôi, đó là 2 mạch xuất 2 layout khác nhau. Em dùng cáp để nối. Mạch Max232 gắn dính vào COM nhỏ xíu, qua cáp nối vào J18 BootLoader của mạch PIC, nên chân 9 Max vẫn nối chân 1 PIC. Mà em thử gỡ bỏ chân 1 để Reset bằng tay cũng không ăn thua.

Cổng COM 1 này em nạp firmware hex Bootloader cho PIC bằng JDM đã OK, sau đó chuyển PIC sang board test, chuyển cáp COM tương ứng.

Thiết lập Tiny của em đây. SearchDelay em để thử 11 vẫn k xong.
Bác Nam chẩn bệnh tiếp giúp em với.

namqn
09-11-2007, 11:03 PM
...
Thiết lập Tiny của em đây. SearchDelay em để thử 11 vẫn k xong.
Bác Nam chẩn bệnh tiếp giúp em với.
Bạn thử làm như sau:

- Đặt Timeout(ms) là 100
- Đặt SearchDelay là 10
- Nhấn nút CheckPIC trên host PC, nhanh chóng nhấn nút reset trên mạch thử nghiệm của bạn.

Bạn kiểm tra khả năng làm việc của nút reset trên mạch thử nghiệm một cách độc lập trước nhé (để đảm bảo là bạn có thể reset mạch).

Thân,

PSman
10-11-2007, 09:00 AM
Em đã làm như bác Nam chỉ.
Mạch test em sure là không có vấn đề gì. Nguồn/mass đã nối đủ vào 4 chân. Mạch Reset OK, test nút Reset thì nó chập chân 1 xuống mass. TX, RX thì nối vào TX/RX tương ứng của PIC.

Đo áp cũng như các dây tương ứng từ Max232 xuống board cũng thông tốt.

Vậy mà cũng không xong.

Chắc phải làm mạch Max232 mới, dù thấy nó chẳng có vấn đề gì cả.

Vạn sự khởi đầu nan
Gian nan bắt đầu nản ... ;)

PSman
10-11-2007, 02:22 PM
Bác Nam,
Mạch chạy rồi bác ơi. Gặp phải cái lỗi thật buồn cười. Tất cả là do em và cả bác ... NTC nữa ;) khi làm mạch nguyên lý thì OK, nhưng chọn footprint cho đầu Dsub 9 chân có lẽ em chọn nhầm cổng đực, trong khi PCB muốn làm là cổng cái. 2 cái này chân đối xứng nhau. Làm mạch xong cứ thế cắm DSub vào. Thế là ngược mất. Chân 2/3/5/7 có đúng đâu mà đòi mạch chạy.

Em gỡ đầu COM ra, hàn ngược mặt mạch in. OK rồi bác ạ. Bây giờ thì nạp source 115200@20MHz, SearchDelay 5 lần nó cũng chạy tất.
Và phải bỏ chọn "RTS,DTR ON after open" thì mới nhận PIC được.

Cám ơn bác Nam nhiều.

Đây, mạch in của bác NTC post trong pdf của bác ấy. Em tự chạy layout xong thấy cũng gần giống thế này, so đi so lại yên tâm. Làm xong cắm đầu COM CÁI vào là thua ;)
Bạn nào đang làm gặp vấn đề này chú ý.

vuhoang8x
04-12-2007, 08:14 AM
Hi,
Minh mới làm quen vớp PIC. Mình vừa ráp xong cái bootloader nhưng sao nó lại không nhận ra PIC. giúp mình xem cái mạch chính xác không. Mình làm giống với mạch của bootloader nhưng bỏ đi phần reset manual không biết có ảnh hưởng gì không. Và phần giao tiếp MAX232 thấy hơi lạ với mạch của F. Chân số 2 , 6 nối với GND còn mạch của F thì chân 2 nối với Vcc và 6 nối GND. Ai giải thích giùm mình chỗ này với.

namqn
04-12-2007, 07:43 PM
Hi,
Minh mới làm quen vớp PIC. Mình vừa ráp xong cái bootloader nhưng sao nó lại không nhận ra PIC. giúp mình xem cái mạch chính xác không. Mình làm giống với mạch của bootloader nhưng bỏ đi phần reset manual không biết có ảnh hưởng gì không. Và phần giao tiếp MAX232 thấy hơi lạ với mạch của F. Chân số 2 , 6 nối với GND còn mạch của F thì chân 2 nối với Vcc và 6 nối GND. Ai giải thích giùm mình chỗ này với.
Vì bạn mới làm quen với PIC nên tôi muốn làm rõ điều này: Bạn đã nắm được nguyên tắc làm việc và các yêu cầu đối với bootloader chưa?

Bạn nói làm giống với mạch bootloader, nhưng đó là bootloader của ai mới được (cho biết link đến mạch đó chẳng hạn)? Mạch của F mà bạn nói là mạch nào (cho biết link đến mạch đó chẳng hạn)?

Bạn có thể tham khảo cách dùng Tiny Bootloader, và một mạch reset mềm được Claudiu đề xuất ở đây:

http://www.etc.ugal.ro/cchiculita/software/tinybldusage.htm

Thân,

KnowMore
25-12-2007, 02:42 AM
Em hỏi câu này có thể hơi củ chuối:
Có trường hợp nào không thể xóa vùng Protected ROM?

Em định làm một mạch nạp để setup bootloader; sau đó chỉ cần cấp phát cho anh em TinyBld để nạp chíp. (Giải pháp kinh tế!?).
Thế nên em quan tâm việc sau khi protect vùng bootloader thì có thể xóa đi khi cần thiết không.
Tiện thể cho em hỏi luôn: tại sao thiên hạ ít dùng transistor thay MAX232 trong giao tiếp COM? Em thấy trong Tinybld vẫn thừa 1 chân ra của PC COM mà! Giá MAX232 là 11k thì phải, đắt cắt cổ!!! Nếu dùng transistor thì có thể lắp trong một số mạch lowcost.
Thanks!

namqn
25-12-2007, 08:26 PM
Em hỏi câu này có thể hơi củ chuối:
Có trường hợp nào không thể xóa vùng Protected ROM?

Em định làm một mạch nạp để setup bootloader; sau đó chỉ cần cấp phát cho anh em TinyBld để nạp chíp. (Giải pháp kinh tế!?).
Thế nên em quan tâm việc sau khi protect vùng bootloader thì có thể xóa đi khi cần thiết không.
Tiện thể cho em hỏi luôn: tại sao thiên hạ ít dùng transistor thay MAX232 trong giao tiếp COM? Em thấy trong Tinybld vẫn thừa 1 chân ra của PC COM mà! Giá MAX232 là 11k thì phải, đắt cắt cổ!!! Nếu dùng transistor thì có thể lắp trong một số mạch lowcost.
Thanks!
Nếu không thể xóa ROM chương trình, hay flash thì chip sẽ trở thành vô dụng sau khi được bật tính năng bảo vệ. Do đó, luôn luôn có khả năng xóa được ROM chương trình, hay flash. Điều quan trọng là bảo vệ tài sản trí tuệ của người dùng. Do đó, chỉ cần bảo vệ theo cách nếu người ta muốn nạp chương trình mới vào chip thì phải xóa sạch nội dung cũ.

Mạch nạp đơn giản đã có nhiều, những người thích dùng bootloader đã có đủ công cụ để dùng. Như tôi đã nói ở trên, bạn có thể xóa bootloader bằng cách xóa chip. Dùng transistor thay các chip giao tiếp vẫn tốt, tuy nhiên bạn sẽ phải tự hiện thực bộ bơm điện tích nếu muốn tuân theo chuẩn RS-232, hoặc chấp nhận mức tín hiệu của bạn không thể cao hơn Vdd của mạch.

Thân,

minhdt10
16-07-2008, 05:16 PM
Chào các anh, e mới tập viết cho PIC, e xài 16F877A, TA 20M, e làm theo sơ đồ của anh Nguyễn Trung Chính trong tài liệu REP01.06, e dùng Tinybootloader cải tiến, nhưng khi chạy tiny để nạp chương trinh cho Pic thì thấy báo không tìm thấy chip, e kiểm tra các chân của max232 thì thấy các chân 8,9,13,12 của max232 có tín hiệu, còn chân 11,14 không có tín hiệu gì. Kiểm tra chân dao dộng của Pic thi không thấy có dao động, (cả chân 13 và 14). Trước e có làm với 89xx rồi, giờ mới tập với pic nên còn ngỡ ngàng, mong các anh giúp đỡ ạ.
Em gửi kèm file .asm, các anh có thể kiểm tra giúp e được không ạ, hoặc nếu anh nào có sẵn file hex gửi dùm e thì tốt quá, en định dùng PIC6F877A, thạch anh 20M, giao tiếp 232 tốc độ 38400 (e nghe nói ở tốc này thì tốt nhất)

namqn
17-07-2008, 12:10 AM
Chào các anh, e mới tập viết cho PIC, e xài 16F877A, TA 20M, e làm theo sơ đồ của anh Nguyễn Trung Chính trong tài liệu REP01.06, e dùng Tinybootloader cải tiến, nhưng khi chạy tiny để nạp chương trinh cho Pic thì thấy báo không tìm thấy chip, e kiểm tra các chân của max232 thì thấy các chân 8,9,13,12 của max232 có tín hiệu, còn chân 11,14 không có tín hiệu gì. Kiểm tra chân dao dộng của Pic thi không thấy có dao động, (cả chân 13 và 14). Trước e có làm với 89xx rồi, giờ mới tập với pic nên còn ngỡ ngàng, mong các anh giúp đỡ ạ.
Em gửi kèm file .asm, các anh có thể kiểm tra giúp e được không ạ, hoặc nếu anh nào có sẵn file hex gửi dùm e thì tốt quá, en định dùng PIC6F877A, thạch anh 20M, giao tiếp 232 tốc độ 38400 (e nghe nói ở tốc này thì tốt nhất)
Ngay trong luồng này, post #52 đã có firmware đúng theo yêu cầu của bạn (20 MHz, 38400 bps). Chú ý post #58 để tránh lặp lại lỗi đó.

Thân,

minhdt10
17-07-2008, 10:06 AM
Chào anh namqn.
Em đang loay hoay mãi mà không nạp cho pic16f887a, em làm theo sơ đồ của bác Chinh trong rep01.06, em đã sửa file .asm để npj cho 16f877a, thạch anh 20M, tốc độ 38400, dùng tinybld19 của anh falleaf nhưng không được, em nối chân 7 của máy tính với chân 8 của max232, chân 9 của max232 với chân 1 của pic (chân 1 của pic có trở 10k kéo lên). khi chạy tiny, chọn checkpic thấy chan 1 của pic xuống thấp, em đã thay đổi các giá trị Searchdelay và timeout nhưng vẫn báo lỗi không thấy chip, em phải làm thế nào ạ, mong anh chỉ dẫn ạ. Cám ơn anh nhiều

minhdt10
17-07-2008, 10:09 AM
Cám ơn anh đã trả lời sớm ạ, e đã down file đó về, nạp cho pic nhưng vẫn thấy báo lỗi không tìm thấy chip,sơ đồ e kiểm tra lại không có gì sai nhưng vẫn không được

minhdt10
17-07-2008, 03:18 PM
Chào anh namqn. An cho e hỏi, nếu nối đủ 2 chân nguồn và 2 chân đất, 2 chân dao động, chân 1 của 16F877a nối trở 10k kéo lên thì soi 2 chân dao động của pic có dao động không ạ? PIC e mua mới tinh ạ. Cám ơn anh ạ

namqn
17-07-2008, 07:34 PM
Chào anh namqn.
Em đang loay hoay mãi mà không nạp cho pic16f887a, em làm theo sơ đồ của bác Chinh trong rep01.06, em đã sửa file .asm để npj cho 16f877a, thạch anh 20M, tốc độ 38400, dùng tinybld19 của anh falleaf nhưng không được, em nối chân 7 của máy tính với chân 8 của max232, chân 9 của max232 với chân 1 của pic (chân 1 của pic có trở 10k kéo lên). khi chạy tiny, chọn checkpic thấy chan 1 của pic xuống thấp, em đã thay đổi các giá trị Searchdelay và timeout nhưng vẫn báo lỗi không thấy chip, em phải làm thế nào ạ, mong anh chỉ dẫn ạ. Cám ơn anh nhiều
Giá trị search delay mang ý nghĩa thông thường, bạn dùng giá trị quanh quẩn 10 là ổn. Giá trị timeout dễ bị hiểu lầm, ngay cả người dùng PIC có kinh nghiệm vẫn hiểu lầm. Timeout nhất thiết phải nhỏ hơn 1000 ms, giá trị mặc định 300 ms là đủ tốt, nhưng nếu bạn gặp rắc rối trong việc nhận diện chip, thì có thể giảm nó xuống 200 ms hay 100 ms chẳng hạn.

Tôi không có thời gian để diễn dịch sơ đồ mạch được bạn mô tả bằng văn bản (tôi đang viết luận án), do đó bạn nên vẽ sơ đồ mạch mà bạn đang dùng thì tốt hơn.

Cám ơn anh đã trả lời sớm ạ, e đã down file đó về, nạp cho pic nhưng vẫn thấy báo lỗi không tìm thấy chip,sơ đồ e kiểm tra lại không có gì sai nhưng vẫn không được
Bạn là người duy nhất cho rằng sơ đồ của bạn không có gì sai. Code của tôi đã được nhiều người kiểm tra (và tôi thường kiểm tra rồi mới post code lên diễn đàn), do đó khả năng lớn hơn là mạch của bạn có vấn đề. Có thể là sơ đồ nguyên lý không có vấn đề, mà mạch thực của bạn có vấn đề.

Chào anh namqn. An cho e hỏi, nếu nối đủ 2 chân nguồn và 2 chân đất, 2 chân dao động, chân 1 của 16F877a nối trở 10k kéo lên thì soi 2 chân dao động của pic có dao động không ạ? PIC e mua mới tinh ạ. Cám ơn anh ạ
Việc các chân dao động của PIC có dạng sóng hay không tùy thuộc vào cấu hình của bộ dao động mà bạn đã đặt. Do đó câu hỏi của bạn không có câu trả lời chính xác.

Nếu code của bạn bật bit LVP thì bạn cần phải nối chân RB3/PGM xuống GND qua một điện trở khoảng vài k mới có thể chạy chương trình.

Tôi cũng muốn nói thêm là mã nguồn mà bạn đã post lên không thể đọc được (bị lỗi giải nén, ít ra là tôi không giải nén được).

Thân,

minhdt10
17-07-2008, 10:06 PM
Cám ơn anh namqn, mặc dù rất bận nhưng vẫn giành thời gian cho em. Em xin lỗi anh vì file nén em dùng peaZIP nên anh không giải nén được, lần này e nén bằng WINRAR chắc chắn a sẽ giải nén được, e gửi anh sơ đồ em làm, file .asmem sửa, anh xem giúp em xem lỗi chỗ nào.
Mạch thực tế em không làm đầy đủ như trong sơ đồ của anh NCT, phần kết nối max232 e làm giống hệt, phần vi xử lý e mới đấu thạch anh 20M, tụ 33p vào chân 13, 14 của VXL, nguồn +5V vào 2 chân 11, 32, GND vào chân 12 và 31, chân 1 e nối trở 10k lên +5V, e đã thử cả reset bằng chương trình và cả bằng tay, em đã làm 3 mạch để thử, có mạch e chỉ đấu 2nguồn, 2đất, chân 1---10K---+5V, thạch anh 20M, tụ 33p, như trong sơ đồ, e đã kiểm tra rất cẩn thận, soi ôxilô thì không thấy có dao động,
Kiểm tra max232 với mạch khác e dùng 89Cxx thì ok (trước e làm với 89Cxx rồi).
Em cũng đã down file hex cho P16F877A, 20M, 38400 về nhưng chạy tinybld19 vẫn báo lỗi không tìm thấy chip.
Con chip này mới tinh, nhưng liệu em có nên mua con khác về thử không anh nhỉ.
Em cám ơn anh nhiều.
Chúc anh làm đồ án thật tốt(Chắc chắn là như vậy rồi nhỉ).

namqn
17-07-2008, 10:28 PM
Cám ơn anh namqn, mặc dù rất bận nhưng vẫn giành thời gian cho em. Em xin lỗi anh vì file nén em dùng peaZIP nên anh không giải nén được, lần này e nén bằng WINRAR chắc chắn a sẽ giải nén được, e gửi anh sơ đồ em làm, file .asmem sửa, anh xem giúp em xem lỗi chỗ nào.
Mạch thực tế em không làm đầy đủ như trong sơ đồ của anh NCT, phần kết nối max232 e làm giống hệt, phần vi xử lý e mới đấu thạch anh 20M, tụ 33p vào chân 13, 14 của VXL, nguồn +5V vào 2 chân 11, 32, GND vào chân 12 và 31, chân 1 e nối trở 10k lên +5V, e đã thử cả reset bằng chương trình và cả bằng tay, em đã làm 3 mạch để thử, có mạch e chỉ đấu 2nguồn, 2đất, chân 1---10K---+5V, thạch anh 20M, tụ 33p, như trong sơ đồ, e đã kiểm tra rất cẩn thận, soi ôxilô thì không thấy có dao động,
Kiểm tra max232 với mạch khác e dùng 89Cxx thì ok (trước e làm với 89Cxx rồi).
Em cũng đã down file hex cho P16F877A, 20M, 38400 về nhưng chạy tinybld19 vẫn báo lỗi không tìm thấy chip.
Con chip này mới tinh, nhưng liệu em có nên mua con khác về thử không anh nhỉ.
Em cám ơn anh nhiều.
Chúc anh làm đồ án thật tốt(Chắc chắn là như vậy rồi nhỉ).
Bạn dùng tập tin nguồn của Claudiu thì không cần phải post lại. Không rõ bạn biên dịch có lỗi gì không?

Bạn đã đọc post #58 của luồng này chưa? Đã có bạn dùng sai kiểu đầu nối dẫn đến không kết nối vào cổng COM được, bạn kiểm tra lại xem có rơi vào trường hợp của bạn hay không.

Nếu cấu hình bộ dao động ở chế độ HS, bạn có thể dùng dao động ký (máy hiện sóng) để xem dạng sóng ở chân 14 (không nên dùng probe đo chân 13). Nếu không có dạng sóng dao động thì PIC chưa có xung clock.

PIC hiếm khi bị hỏng khi còn mới, bạn cứ thử lại mạch của bạn. Nếu cần thì bạn cho biết khu vực bạn đang ở, có lẽ ai đó ở gần đó sẽ có thể giúp bạn kiểm tra xem PIC của bạn còn hoạt động được hay không.

Tôi đang viết luận án tiến sĩ, chứ không phải làm đồ án, hay luận văn tốt nghiệp đại học. Viết luận án mất vài tháng là việc bình thường.

Thân,

minhdt10
18-07-2008, 03:15 PM
Cám ơn anh Nam, e biên dịch bằng MPASM không thấy có lỗi.
Em đang ở Hà nội, anh có địa chỉ nào bán mạch nạp cho con này không a chỉ cho e với,để em thử xem thế nào, còn bộ tiny này e sẽ tìm hiểu sau ạ

namqn
18-07-2008, 08:41 PM
Cám ơn anh Nam, e biên dịch bằng MPASM không thấy có lỗi.
Em đang ở Hà nội, anh có địa chỉ nào bán mạch nạp cho con này không a chỉ cho e với,để em thử xem thế nào, còn bộ tiny này e sẽ tìm hiểu sau ạ
Bạn vào box "Quảng cáo và bán sản phẩm" để tìm những mạch nạp có bán ở VN, hoặc post yêu cầu ở box "Tìm mua sản phẩm". Bạn cũng có thể tìm thấy những box tương tự ở www.dientuvietnam.net.

Về những sản phẩm mạch nạp ở VN thì tôi không nắm gì hơn ngoài những quảng cáo trên và các sản phẩm của R&P, vì hiện tại tôi không có mặt ở VN.

Thân,

bean984
31-07-2008, 03:21 PM
ai có firmware cho con 16f877a viết bằng ccs c k?cho mình xin với. mình dùng TA 8M, tốc độ 9600. Mình dùng ccs c nên đọc mấy cái firmware viết bằng asem k hiểu gì cả. Mình muốn xin cái firmware viết bằng ccs c để hiểu và có thể tự chỉnh xửa sau này.
THANK'S tất cả mọi người!

namqn
01-08-2008, 12:14 AM
ai có firmware cho con 16f877a viết bằng ccs c k?cho mình xin với. mình dùng TA 8M, tốc độ 9600. Mình dùng ccs c nên đọc mấy cái firmware viết bằng asem k hiểu gì cả. Mình muốn xin cái firmware viết bằng ccs c để hiểu và có thể tự chỉnh xửa sau này.
THANK'S tất cả mọi người!
Nếu bạn muốn dùng giao diện trên host PC của Tiny Bootloader, firmware cần phải đảm bảo không vượt quá 100 word. Điều này rất khó đạt được nếu bạn viết bằng CCS C.

Với một số bootloader khác, bạn có thể viết firmware một cách khá tự do, và có nhiều firmware được viết bằng ngôn ngữ cấp cao (chủ yếu là C).

Bạn tự chọn cách tiếp cận cho mình trước đã.

Thân,

bean984
01-08-2008, 03:38 PM
cho mình hỏi câu này hơi chuối.
mình có cái mạch tiny bootloader dùng TA 8M. mình muốn nạp môt chương trình cho một mạch ứng dụng khác (không có mạch rs232) chạy TA 11M liệu có được không?mình không rõ khi đưa sang mạch ứng dụng có TA khác có ảnh hưởng gì k?
với cùng một trương trình mình nạp với PG2C thì chạy ngon lành còn khi nạp theo tiny bootloader như cách ở trên thì nó lại không chạy.
thank!

namqn
01-08-2008, 07:15 PM
cho mình hỏi câu này hơi chuối.
mình có cái mạch tiny bootloader dùng TA 8M. mình muốn nạp môt chương trình cho một mạch ứng dụng khác (không có mạch rs232) chạy TA 11M liệu có được không?mình không rõ khi đưa sang mạch ứng dụng có TA khác có ảnh hưởng gì k?
với cùng một trương trình mình nạp với PG2C thì chạy ngon lành còn khi nạp theo tiny bootloader như cách ở trên thì nó lại không chạy.
thank!
Code dành cho bootloader và code cho ứng dụng có thể viết tương ứng với các tốc độ clock khác nhau. Do đó về nguyên tắc là bạn có thể dùng một mạch để nạp code cho PIC qua bootloader, sau đó chạy ứng dụng trên một mạch khác.

Bạn có đảm bảo chương trình ứng dụng của bạn không ghi đè lên bootloader hay không? Cấu hình của PIC trong mạch ứng dụng có khác với cấu hình của PIC trong mạch dùng để nạp qua bootloader hay không?

Nếu câu trả lời của bạn là "có" cho ít nhất 1 trong 2 câu hỏi trên thì bạn sẽ gặp vấn đề khi chạy chương trình ứng dụng.

Thân,

thaithienanh
03-08-2008, 01:29 AM
Thầy Namq cho em xin file hex của PIC 18f4550 chạy thạch anh 20 MHz và baurate 57600 nhé :), em cảm ơn thầy.

namqn
03-08-2008, 03:29 AM
Thầy Namq cho em xin file hex của PIC 18f4550 chạy thạch anh 20 MHz và baurate 57600 nhé :), em cảm ơn thầy.
Bạn có ý định dùng module USB hay không? Những từ cấu hình khác cũng nên được mô tả, nếu không tôi sẽ phỏng đoán để đặt cấu hình khi dịch bootloader.

Thân,

thaithienanh
03-08-2008, 09:13 AM
Bạn có ý định dùng module USB hay không? Những từ cấu hình khác cũng nên được mô tả, nếu không tôi sẽ phỏng đoán để đặt cấu hình khi dịch bootloader.

Thân,

Dạ cái này em nạp theo chuẩn 232 ^^ tại dùng chung kit với 16F877a , còn những cấu hình khác không có gì đặc biệt cả :)

bean984
04-08-2008, 10:32 AM
đây là code bootloader của mình
radix DEC
LIST P=16F877A, F=INHX8M ; change also: Configure->SelectDevice from Mplab
xtal EQU 8000000 ; you may also want to change: _HS_OSC _XT_OSC
baud EQU 9600 ; standard TinyBld baud rates: 115200 or 19200

mình lấy bootloader của con 16f873A và sử lại như vậy không biết có vấn đề gì không?
còn đây là code thử pic của mình

#include "16F877A.h" // PIC16F877A header file
#device 16F877A*=16 ADC=10
#include <defs_16F877A.h>
#include <stdlib.h>
#include <string.h>
#fuses HS, NOWDT,PUT, NOPROTECT, NOLVP, NODEBUG, BROWNOUT // for debug mode
#use delay(clock=8000000) // for 8Mhz crystal
#use fast_io(a)

void main(void)
{
set_tris_a(0);

while(true)
{
porta=255;
delay_ms(2000);
porta=85;
delay_ms(2000);
porta=170;
delay_ms(2000);
}
}
không biết cái boot loader của mình có vấn đề? hay code pic có vấn đề? mà khi nạp bằng tiny bootloader thấy thông báo ok rồi mà chương trình không chạy?.
nếu có thể thì cho mình xin file bootloader với cấu hình như trên(cả file .asm và .hex)
cảm ơn mọi người!

bean984
04-08-2008, 10:50 AM
mình đã thử dùng PG2C và ICProg đọc lại con pic thì thấy phần code thử pic lại được ghi vào Eeprom? còn phần mã chương trình chỉ có bootloader?

namqn
04-08-2008, 05:03 PM
đây là code bootloader của mình
radix DEC
LIST P=16F877A, F=INHX8M ; change also: Configure->SelectDevice from Mplab
xtal EQU 8000000 ; you may also want to change: _HS_OSC _XT_OSC
baud EQU 9600 ; standard TinyBld baud rates: 115200 or 19200

mình lấy bootloader của con 16f873A và sử lại như vậy không biết có vấn đề gì không?
...
không biết cái boot loader của mình có vấn đề? hay code pic có vấn đề? mà khi nạp bằng tiny bootloader thấy thông báo ok rồi mà chương trình không chạy?.
...
Bạn chỉ đưa có vài dòng đầu tiên của code cho bootloader, ngay cả cấu hình của bootloader cũng không rõ, do đó không thể nhận xét bootloader của bạn là có vấn đề hay không.

Thân,

namqn
04-08-2008, 05:05 PM
mình đã thử dùng PG2C và ICProg đọc lại con pic thì thấy phần code thử pic lại được ghi vào Eeprom? còn phần mã chương trình chỉ có bootloader?
Bạn cho biết đã dùng Tiny Bootloader phiên bản nào, và như post trên tôi đã nêu, code đầy đủ của bootloader, để xem liệu bootloader có chạy đúng như "thiết kế" của bạn hay không.

Thân,

namqn
05-08-2008, 07:42 AM
Thầy Namq cho em xin file hex của PIC 18f4550 chạy thạch anh 20 MHz và baurate 57600 nhé :), em cảm ơn thầy.
Các từ cấu hình sau đã được dùng để dịch firmware cho bootloader:
CONFIG PLLDIV = 5, CPUDIV = OSC1_PLL2, USBDIV = 2
CONFIG FOSC = HSPLL_HS, FCMEN = OFF, IESO = OFF
CONFIG PWRT = ON, BOR = OFF, BORV = 2, 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

Tập tin .hex được đính kèm. Chú ý: tần số làm việc của CPU là 48 MHz (96 MHz của khối PLL được chia cho 2).

Thân,

thaithienanh
06-08-2008, 12:47 AM
Thân,

Em vừa test fimware thầy cho, nhưng không thành công, tiny nó không nhận ra PIC, thầy cho em hỏi có cần phải chú ý điều gì về phần cứng khi sử dụng fimware này không :). Về phần cứng của em em nghĩ đáng chú ý ở điểm chân 23 (chân D- của USB) em đã sử dụng cho giao tiếp I2C, vậy có ảnh hưởng gì đến cấu hình của PIC không ?

namqn
06-08-2008, 06:26 AM
Em vừa test fimware thầy cho, nhưng không thành công, tiny nó không nhận ra PIC, thầy cho em hỏi có cần phải chú ý điều gì về phần cứng khi sử dụng fimware này không :). Về phần cứng của em em nghĩ đáng chú ý ở điểm chân 23 (chân D- của USB) em đã sử dụng cho giao tiếp I2C, vậy có ảnh hưởng gì đến cấu hình của PIC không ?
Tôi đã thử Tiny Bootloader v1.9.1 với firmware đã post lên, cho thấy bootloader làm việc tốt (xem hình chụp đính kèm).

Về phần cứng thử nghiệm, ngoài hai chân RX và TX của module EUSART, tôi còn một tụ điện 470 nF nối vào chân Vusb (chân 18) của PIC (bạn không nên nối gì khác vào chân này).

Tôi cho rằng việc dùng chân 23 của PIC cho giao tiếp I2C không ảnh hưởng đến bootloader.

Thân,

namqn
06-08-2008, 06:51 AM
Tôi vừa kiểm tra lại tập tin .hex mà tôi đã upload ở bài viết #84, một dấu hiệu đáng ngờ là tập tin có ngày tháng được cập nhật là 04/8/2006, mặc dù tôi biên dịch hôm qua. Thông tin cấu hình trong tập tin đó bị thiếu (tôi cũng không rõ vì lý do gì, vì firmware được tôi biên dịch lại hôm nay cũng sử dụng cùng tập tin nguồn, trên cùng một máy tính).

Vì lý do trên, tôi upload lại firmware mà tôi vừa biên dịch và thử nghiệm vào hôm nay. Bạn thử lại xem bootloader có làm việc tốt hay không.

Thân,

thaithienanh
06-08-2008, 07:08 PM
Tôi vừa kiểm tra lại tập tin .hex mà tôi đã upload ở bài viết #84, một dấu hiệu đáng ngờ là tập tin có ngày tháng được cập nhật là 04/8/2006, mặc dù tôi biên dịch hôm qua. Thông tin cấu hình trong tập tin đó bị thiếu (tôi cũng không rõ vì lý do gì, vì firmware được tôi biên dịch lại hôm nay cũng sử dụng cùng tập tin nguồn, trên cùng một máy tính).

Vì lý do trên, tôi upload lại firmware mà tôi vừa biên dịch và thử nghiệm vào hôm nay. Bạn thử lại xem bootloader có làm việc tốt hay không.

Thân,

Hi cảm ơn thầy, với fimware mới này PIC chạy tốt rồi, àh chân 18 em sử dụng cho giao tiếp I2C (có treo một điện trở), nhưng mạch vẫn chạy tốt vậy là không ảnh hưởng ^^ vui rùi, em chúc thầy luôn khỏe để dành thời gian cho công việc giảng dạy thất tốt ạh :)

minhsondaklak
11-08-2008, 08:00 PM
Đọc xong phần bootloader, mình chợt nghĩ: Nó giống như là "hệ điều hành" của chip VĐK, tuỳ chọn cho VĐK nạp chương trình mới hay là chạy chương trình cũ đã nạp trước đó.
Việc hình dung nôm na như nhế có thể giúp bạn dể nắm bắt và dể nhớ về Bootloader.

namqn
11-08-2008, 10:43 PM
Đọc xong phần bootloader, mình chợt nghĩ: Nó chính là "hệ điều hành" của chip VĐK, tuỳ chọn cho VĐK nạp chương trình mới hay là chạy chương trình cũ đã nạp trước đó.
Việc hình dung nôm na như nhế có thể giúp bạn dể nắm bắt và dể nhớ về Bootloader.
Nếu hình dung theo kiểu này thì bootloader trong PIC giống như bootloader của MBR hay của partition trong ổ đĩa của máy tính, cho phép bạn khởi động một trong những hệ điều hành trên đĩa, với ổ đĩa có nhiều hệ điều hành (vì vậy nên firmware loại này của PIC cũng được gọi là bootloader). Nếu gọi là hệ điều hành thì nó phải thường xuyên chạy và điều phối các ứng dụng trên PIC, bootloader không làm việc đó đâu.

Thân,

kebitmat_f
27-08-2008, 05:54 PM
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 !

namqn
27-08-2008, 06:32 PM
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
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
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
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
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

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
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
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
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:
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,

manhha1987
16-04-2009, 11:53 AM
Mình mới gia nhập vào chủ đề này. Mình thấy mạch Tiny Bootloader rất hay, phù hợp với bài toán mà yêu cầu nạp chương trình ngay trên mạch ứng dụng. Hơn nữa còn tận dụng việc giao tiếp với máy tính qua cổng Com. Mình định tiến hành làm mạch này. Mình hiểu các bước thực hiện ntn có đug ko?
-1: Nạp cho PIC phần firmware (có đc nhở sửa code phần "xtal" và "baud" , hoặc hỏi thầy namqn ) bằng một mạch nạp
-2: Lẳ́p ráp mạch cứng gồm Max232 , RB9 (female hay male nhỉ), PIC http://picvietnam.com/forum/showthread.php?t=130
-3: Test mạch và nạp chương trình ứng dụng (dạng file hex) bằng Tiny Bootloader
Mình nói như vậy có sai gì không, Mọi người chỉ giúp để mình bắt tay vào thực hiện

namqn
16-04-2009, 05:37 PM
Mình mới gia nhập vào chủ đề này. Mình thấy mạch Tiny Bootloader rất hay, phù hợp với bài toán mà yêu cầu nạp chương trình ngay trên mạch ứng dụng. Hơn nữa còn tận dụng việc giao tiếp với máy tính qua cổng Com. Mình định tiến hành làm mạch này. Mình hiểu các bước thực hiện ntn có đug ko?
-1: Nạp cho PIC phần firmware (có đc nhở sửa code phần "xtal" và "baud" , hoặc hỏi thầy namqn ) bằng một mạch nạp
-2: Lẳ́p ráp mạch cứng gồm Max232 , RB9 (female hay male nhỉ), PIC http://picvietnam.com/forum/showthread.php?t=130
-3: Test mạch và nạp chương trình ứng dụng (dạng file hex) bằng Tiny Bootloader
Mình nói như vậy có sai gì không, Mọi người chỉ giúp để mình bắt tay vào thực hiện
Những bước của bạn như vậy là ổn. Ở bước 2, việc dùng đầu nối 9 chân loại nào không quan trọng, quan trọng là nối chân TX của PIC đến chân 2 của cổng COM máy tính (thông qua MAX232 hoặc tương đương), và nối chân RX của PIC đến chân 3 của cổng COM máy tính (thông qua MAX232 hoặc tương đương).

Thân,

enti
21-04-2009, 03:31 PM
Mình mới sử dụng thử bootloader. Mình bị vướng vấn đề như sau.
Mình sử dụng 18F4550, có thiết kế phần USB (nhưng chưa sử dụng), SPI (2 thiết bị, 1 là SD card), RS232 (giao tiếp PC), RS485, XTAL 20Mhz.
- Mình sử dụng bản tiny bootloader198, ko dùng RTS mềm (pin 9), do lúc thiết kế board chưa biết đến bootloader.
1. Mình sửa file asm của 18F2550 (trong thư mục đi kèm của tiny bootloader):
xtal 24000000
baud 115200
phần config mình bỏ_FCMEM_OFF_1H đi vì compile báo lỗi chưa khai báo.
Sau khi compile xong thì nạp lên pic, có thể detect được pic, nhưng phải nhấn reset trên board và nhấn vào write flash (trong khỏang 1s, nếu không thì sẽ error), chương trình laod thành công, nhưng khi chạy thì không thể gửi data về pc qua RS232 được, chương trình của mình có chức năng giao tiếp PC, ngoài ra SPI họat động không đúng chức năng, mình đã kiềm tra code rồi, chắc chắn không vấn đề (khi nạp trực tiếp và chạy).
2. Mình download bootloader của namqn post trên đây về và nạp vào pic, thì spi gần như không họat động, do mình co phần init SD card, init báo lỗi ngay từ đầu.
Bạn có thể hướng dẫn mình sửa bootloader được không?

Mình post phần mình sửa để bạn xem

xtal EQU 24000000 ; 'xtal' here is resulted frequency (is no longer quartz frequency)
baud EQU 115200 ; the desired baud rate

...
__CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC3_PLL4_1L & _USBDIV_2_1L
__CONFIG _CONFIG1H, _FOSC_HSPLL_HS_1H & _IESO_OFF_1H
__CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_OFF_2L ; _VREGEN_OFF_2L
__CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_1_2H
__CONFIG _CONFIG3H, _MCLRE_ON_3H & _PBADEN_OFF_3H & _CCP2MX_OFF_3H
__CONFIG _CONFIG4L, _DEBUG_OFF_4L & _LVP_OFF_4L & _STVREN_OFF_4L & _XINST_OFF_4L
__CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L & _CP2_OFF_5L
__CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
__CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L & _WRT2_OFF_6L & _WRT3_OFF_6L
__CONFIG _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H & _WRTD_OFF_6H
__CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L & _EBTR2_OFF_7L & _EBTR3_OFF_7L
__CONFIG _CONFIG7H, _EBTRB_OFF_7H

namqn
21-04-2009, 07:48 PM
Mình mới sử dụng thử bootloader. Mình bị vướng vấn đề như sau.
Mình sử dụng 18F4550, có thiết kế phần USB (nhưng chưa sử dụng), SPI (2 thiết bị, 1 là SD card), RS232 (giao tiếp PC), RS485, XTAL 20Mhz.
- Mình sử dụng bản tiny bootloader198, ko dùng RTS mềm (pin 9), do lúc thiết kế board chưa biết đến bootloader.
1. Mình sửa file asm của 18F2550 (trong thư mục đi kèm của tiny bootloader):
xtal 24000000
baud 115200
phần config mình bỏ_FCMEM_OFF_1H đi vì compile báo lỗi chưa khai báo.
Sau khi compile xong thì nạp lên pic, có thể detect được pic, nhưng phải nhấn reset trên board và nhấn vào write flash (trong khỏang 1s, nếu không thì sẽ error), chương trình laod thành công, nhưng khi chạy thì không thể gửi data về pc qua RS232 được, chương trình của mình có chức năng giao tiếp PC, ngoài ra SPI họat động không đúng chức năng, mình đã kiềm tra code rồi, chắc chắn không vấn đề (khi nạp trực tiếp và chạy).
2. Mình download bootloader của namqn post trên đây về và nạp vào pic, thì spi gần như không họat động, do mình co phần init SD card, init báo lỗi ngay từ đầu.
Bạn có thể hướng dẫn mình sửa bootloader được không?

Mình post phần mình sửa để bạn xem
...
1. Bạn có nắm được ý nghĩa của đoạn ghi chú sau trong mã nguồn firmware của Claudiu không:
;************************************************* ************
; After reset
; Do not expect the memory to be zero,
; Do not expect registers to be initialised like in catalog.

Nếu code của bạn chạy tốt khi nạp trực tiếp, nó vẫn có thể gặp trục trặc khi được nạp từ bootloader. Vì khi nạp xong code ứng dụng (hoặc hết time out mà không có code ứng dụng mới để nạp), bootloader sẽ nhảy đến đoạn code ứng dụng, chứ không thực hiện hard reset như khi bạn thử code được nạp trực tiếp. Đây mới chỉ là một khả năng, vì bạn chưa cho biết đoạn code khởi tạo trong chương trình ứng dụng của bạn.

2. Tôi không nhớ đã post firmware bootloader nào cho dòng PIC18F mà có hỗ trợ luôn cả USB, theo cấu hình của bạn ở trên. Do đó, việc làm của bạn rất nhiều khả năng là không thành công, vì bạn đang dùng "râu ông nọ cắm cằm bà kia".

Thân,

bean984
12-05-2009, 04:17 PM
e cũng bị trường hợp tương tự. nếu nạp trực tiếp thì phần truyền thông của e chạy nhưng khi nạp qua bootloader thì phần truyền thông lại không chạy nữa.
vậy cho e hỏi có cách nào để sửa lỗi này k?

bean984
13-05-2009, 10:48 AM
hôm nay e lại gặp vấn đề với cái bootloader.dạo trước check pic, nạp ngon lành nên không để ý.
vấn đề e gặp phải là:
khi nạp mới firmware cho con pic sau đó dùng tinybld check và nạp ngon lành. nhưng sau đó e nạp lại phần mềm thì lại không check được nữa.
sau đó e thử nạp lại fireware rồi check thì lại ok.
e không biết nó bị làm sao nữa????????
phần mền e viết bằng ccs c

bean984
19-05-2009, 04:39 PM
không ai giúp e sửa lỗi bootloader ở trên ạ?
các cao thủ đâu rồi? giúp e với!!!!!!!!!!!!!

popeye_ts22
26-06-2009, 12:28 AM
Cho em xin firmware của 16F877A TA 20Mhz baud 9600 với ạ.Em vào source của tiny để thay đổi nhưng nó là file asm,mà em dùng CCS.

quilong
06-09-2009, 04:21 PM
Hic đọc xong cả 8 trang hoa cả mắt cuối cùng củng hiểu tí chút về cái bootloader này. Có thể nói là rất hay, đơn giản gọn nhẹ và ứng dụng tốt. Tuy nhiên, mình vẫn còn thắc mắc 1 vẫn đề đó là dùng bootloader có thể vừa nạp vừa giao tiếp với máy tính bằng 1 số ngôn ngữ như VB,C#.. nhưng có ai đã kiểm tra được tính chính xác của mạch chưa. Có thể nạp được nhưng giao tiếp với máy tính đã được. Mong bạn namqn giải thích giùm mình cái nghen. Nếu có thể cho mình 1 ví dụ minh họa nhé.

namqn
07-09-2009, 03:28 PM
Cho em xin firmware của 16F877A TA 20Mhz baud 9600 với ạ.Em vào source của tiny để thay đổi nhưng nó là file asm,mà em dùng CCS.
Bạn hoàn toàn có thể dùng firmware của PIC16F876A, với thạch anh 20 MHz ở tốc độ baud 9600 bps (đã dịch sẵn trong tập tin download từ trang web của Tiny Bootloader).

Thân,

namqn
07-09-2009, 03:31 PM
Hic đọc xong cả 8 trang hoa cả mắt cuối cùng củng hiểu tí chút về cái bootloader này. Có thể nói là rất hay, đơn giản gọn nhẹ và ứng dụng tốt. Tuy nhiên, mình vẫn còn thắc mắc 1 vẫn đề đó là dùng bootloader có thể vừa nạp vừa giao tiếp với máy tính bằng 1 số ngôn ngữ như VB,C#.. nhưng có ai đã kiểm tra được tính chính xác của mạch chưa. Có thể nạp được nhưng giao tiếp với máy tính đã được. Mong bạn namqn giải thích giùm mình cái nghen. Nếu có thể cho mình 1 ví dụ minh họa nhé.
Bootloader dùng giao tiếp RS-232 với máy tính để truyền/nhận dữ liệu cho việc nạp chương trình ứng dụng. Việc giao tiếp với máy tính của chương trình ứng dụng hoàn toàn độc lập với phần giao tiếp với máy tính của bootloader. Không rõ bạn muốn kiểm tra tính chính xác của mạch nào, trong trường hợp nào?

Ví dụ cụ thể: bạn hoàn toàn có thể dùng baud rate 115200 bps khi kết nối bootloader với máy tính, và thiết lập baud rate 9600 bps trong chương trình ứng dụng để giao tiếp với máy tính trong quá trình thực thi chương trình ứng dụng.

Thân,

quilong
07-09-2009, 09:08 PM
Cảm ơn Namnq nhiều nghen. Đọc cái ví dụ của huynh:

Ví dụ cụ thể: bạn hoàn toàn có thể dùng baud rate 115200 bps khi kết nối bootloader với máy tính, và thiết lập baud rate 9600 bps trong chương trình ứng dụng để giao tiếp với máy tính trong quá trình thực thi chương trình ứng dung.

Thấy bây giờ đã hiểu tương đối về nó. Mình đinh dùng CCS để viết chương trình về RFID giao tiếp với dòng 16F876A và dùng 2 chân RXD, TXD vừa nạp cho PIC bằng tinybootloader vừa giao tiếp hiện thị kết quả đọc đựoc từ bộ reader lên máy tính và truyền yêu cầu từ máy tính xuống bộ reader của RFID. Mình không rõ là khi viết bằng CCS nó có phù hợp với phần mềm của tiny không.

dang tuan
13-10-2009, 06:00 PM
Cổng COM ảo không dùng được tiny bootloader (PC rs232<->max232<->PIC) hay sao?
Bạn nào biết chỉ mình với.

Mình có 2 cái cổng USB-COM mà cả hai đều như nhau. kết nối đều báo lỗi.

Mặc dù driver nhận tốt kết nối với các thiết bị dùng cổng COM khác thì OK .

Nhưng kết nối với thiết bị thông qua mạch có Max232 thì không được.

namqn
13-10-2009, 08:03 PM
Cổng COM ảo không dùng được tiny bootloader (PC rs232<->max232<->PIC) hay sao?
Bạn nào biết chỉ mình với.

Mình có 2 cái cổng USB-COM mà cả hai đều như nhau. kết nối đều báo lỗi.

Mặc dù driver nhận tốt kết nối với các thiết bị dùng cổng COM khác thì OK .

Nhưng kết nối với thiết bị thông qua mạch có Max232 thì không được.
Laptop của tôi không có cổng COM thực, tôi vẫn dùng bộ chuyển đổi USB<=>RS-232 với Tiny Bootloader bình thường.

Bạn xem lại thiết lập của cổng và của phần mềm Tiny Bootloader có tương thích hay không.

Thân,

quilong
25-10-2009, 10:53 AM
Hôm bữa test cái bootloader cho con Pic 16f877a ni nhiều lần mà khônng được. Tưởng cái cáp chuyển từ cổng usb-com của mình bị hư. Nhưng lại không phải. Sau nhiều lần kiểm tra thì lại do cái driver bootloader bị lỗi. Mình nghĩ cứ làm theo sơ đồ hướng dẫn và test chạy là ok hết. Dùng CCS lập trình đổ vào cũng chạy ok luôn. Thanks mấy người ngĩ ra cái này nhan. Nạp nhanh lém.

Link down:
http://mega.1280.com/file/C1JDGFJ6ZQ/

nguyen binh
14-11-2009, 01:17 PM
anh Nam cho em hoi từ source code em dùng mplab sửa lại rồi dịch ra file hex được không a? em đã làm cách này nhưng dịch ra file hex nạp cho pic vẫn bị lổi không tìm được pic, ko bit có phải mplab của em ko fai là bản full ko

namqn
14-11-2009, 01:25 PM
anh Nam cho em hoi từ source code em dùng mplab sửa lại rồi dịch ra file hex được không a? em đã làm cách này nhưng dịch ra file hex nạp cho pic vẫn bị lổi không tìm được pic, ko bit có phải mplab của em ko fai là bản full ko
Bạn sửa những chỗ nào?

Source code được cung cấp cho người dùng là nhằm mục đích cho phép người dùng tùy biến theo nhu cầu cụ thể của từng người. Có nhiều người đã tùy biến và dùng được bootloader, do đó nhiều khả năng là bạn sửa chưa đúng. Một khả năng khác là bạn thiết lập thông số giữa hai bên không phù hợp.

MPLAB IDE luôn luôn là bản full, vì Microchip không kinh doanh phần mềm này.

Thân,

nguyen binh
17-11-2009, 09:53 AM
em đã sửa theo cách anh hướng dẫn, mà em đã kiểm tra lại mạch hình như nguyên nhân là do cái mạch của em, rất cám ơn anh đã trả lời!

huynhngoctuan
19-11-2009, 03:31 PM
Thầy nam ơi,cho em xin firmware con 18F8722 TA 20Mhz,baud 9600.Cảm ơn thầy nhiều!

ghainag1088
18-12-2012, 06:29 PM
anh Nam ơi. cho em xin bld của Pic 18F4550 crystal 20M br 9600. làm thế nào để thay đổi tần số dao động của thạch anh và tốc độ br của file bld vậy, anh chỉ cho em với

ghainag1088
25-12-2012, 09:46 AM
Tôi vừa kiểm tra lại tập tin .hex mà tôi đã upload ở bài viết #84, một dấu hiệu đáng ngờ là tập tin có ngày tháng được cập nhật là 04/8/2006, mặc dù tôi biên dịch hôm qua. Thông tin cấu hình trong tập tin đó bị thiếu (tôi cũng không rõ vì lý do gì, vì firmware được tôi biên dịch lại hôm nay cũng sử dụng cùng tập tin nguồn, trên cùng một máy tính).

Vì lý do trên, tôi upload lại firmware mà tôi vừa biên dịch và thử nghiệm vào hôm nay. Bạn thử lại xem bootloader có làm việc tốt hay không.

Thân,

anh ơi. sao em tét với file anh cho thì dc nhưng khi viết thêm 1 lệnh printf một ký tự ra thì ký tự đó hiển thị ko đúng

thjremy
23-04-2013, 11:33 PM
Có ai giúp mình chỉnh rõ cái thông số ra sao để cho cái mạch reset nó chạy không, toàn nhấn reset bằng tay!

phuphuongbk
08-09-2013, 11:51 PM
Cám ơn anh Namqn a nhiệt tình quá. thanks a nhiều.

tanhaui
21-09-2013, 11:22 AM
Không biết bootloader có dùng qua giao tiếp CAN được không nhỉ, ai giúp mình với

nguyenthanhquat
15-11-2013, 10:05 PM
mình mới tìm hiểu về tiny bootloader và đã thử thành công qua giao tiếp RS232, hiện tại mình đang sử dụng giao tiếp RS485 và có ý tường là dùng tiny bootloader qua RS485 (mình kết nối max485 với chân RX, TX của pic, chân điều khiển Max485 là RC5, thạch anh 20M, tốc độ 9600) mình ko biết nhiều về lập trình asm nên ko biết sửa code trong tiny bootloader cho phù hợp, mong các bạn giúp đỡ

nguyenthanhquat
15-11-2013, 10:14 PM
mình có sửa code tiny bootloader PIC16F877A qua RS485, mô phỏng trên proteus và sử dụng bản tiny 1.95 thì có check dc pic và báo nạp thành công nhưng chương trình nạp ko chạy (đơn giản là nháy 1 con led, các thông số về fuse mình đã cấu hình để phù hợp với chương trình tiny bootloader), đoạn chương trình giao tiếp RS485 mình viết:

SendL macro car
BCF RCSTA, CREN ; turn off receive on serial
bsf PORTC,5 ;RS485 transmit/
movlw car
movwf TXREG
BSF STATUS, RP0 ; bank 1 set bank
BTFSS TXSTA, TRMT ; wait until TRMT is high
goto $-1
BCF STATUS, RP0 ; bank 0
bcf PORTC,5 ;RS485 receive
BSF RCSTA, CREN ; enable receive on serial
endm

mong các bạn xem giúp, mình đang nghi ở chỗ:
#define first_address max_flash-120 ; 100 word in size
nhưng ko biết chỉnh sao cho đúng, chương trình mình sửa theo bản chuẩn của tiny bootloader như sau:

radix DEC
LIST P=16F887a, F=INHX8M ; change also: Configure->SelectDevice from Mplab

; auto-start at 4MHz internal osc
xtal EQU 20000000 ; you may also want to change: _HS_OSC _XT_OSC
baud EQU 9600 ; standard TinyBld baud rates: 115200 or 19200
;xtal EQU 4000000 ; you may also want to change: _HS_OSC _XT_OSC
;baud EQU 19200 ; 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 "icdpictypes.inc" ;takes care of: #include "p16fxxxA.inc", max_flash, IdTypePIC
#include "spbrgselect.inc"
#include "bankswitch.inc"
#define first_address max_flash-120 ; 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
BCF RCSTA, CREN ; turn off receive on serial
bsf PORTC,5 ;RS485 transmit/
movlw car
movwf TXREG
BSF STATUS, RP0 ; bank 1 set bank
BTFSS TXSTA, TRMT ; wait until TRMT is high
goto $-1
BCF STATUS, RP0 ; bank 0
bcf PORTC,5 ;RS485 receive
BSF RCSTA, CREN ; enable receive on serial
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'10011111' ;////////////////////////////
movwf TRISC ;///////////////////////
bcf PORTC,5 ;RS485 receive
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' ;"-Everything OK, ready and waiting."

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/2000000+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

lyxa_bk
21-11-2013, 04:50 PM
cho minh hỏi là bắt buộc phải dùng mạch nạp riêng nạp Firmware vào PIC rồi mới sử đụng được tiny bootloader ah?? vì mình gặp cái lỗi không nhận được PIC. thể chẳng phải bằng hòa hay sao:(. mua mạch nạp rồi thì nạp luôn cho xong. câu hỏi hơi gà. mong bác mod tư vấn.

lyxa_bk
22-11-2013, 10:18 AM
therad closed roi a