PDA

View Full Version : Các cách nạp chương trình cho PIC/dsPIC


minhquancdt
13-10-2007, 10:36 AM
Các bác cho em hỏi, liệu chỉ cần đường ICSP có thể nạp cho tất cả các loại PIC được ko?

namqn
22-10-2007, 06:54 PM
Các bác cho em hỏi, liệu chỉ cần đường ICSP có thể nạp cho tất cả các loại PIC được ko?
Tất cả các PIC hỗ trợ nạp thông qua ICSP.

Tất cả các dsPIC hỗ trợ nạp thông qua ICSP.

Thân,

thuancdt1k48
24-10-2007, 06:12 PM
anh ơi em muốn hỏi em có mạch nạp PG2C có thể nạp cho pic6f876 (loại 28 chân),em nghịch đã lâu,giờ động lại quên mất chiều cắm pic(28 chân) rồi,anh có thể chỉ cho em chiều cắm PIC 40c và 28 chân được không?em tìm được sơ đồ nhưng vẫn ko biết chiều,có cách nào kiểm tra chiều cắm được ko anh, có cách nào biết được mạch nạp còn sống không anh,vì lâu ngày ko đụng đến chỉ sợ chết rồi. Thanks

NThang
26-01-2008, 11:47 AM
Tiện đây, em có một số hỏi về cơ bản cho mạch nạp của Pic.

Hiện nay, chúng ta chủ yếu nói về các mạch nạp bán sẵn đồng thời phần mềm load có sẵn như WinPIC hay Pony Prog. Tuy nhiên, một số hệ thống thiết kế mà trên board phải chức năng load/download code trong chip on board bằng phần mềm riêng (SCADA hay DCS). Trong các phần mêm Scada hay DCS phải có cả chương trình LOAD hay DOWN code từ chip dùng để lập trình hay chỉnh sửa chương trình trong chip cho phù hợp với điều khiển của hệ thống.

Em mới học về PIC, lại phải thiết kế một hệ thống như vậy, vì thế em mao muội hỏi bac F, bac Namqn và anh em một số cau hỏi, mong các anh chỉ bảo.

1. Nếu em thiết kế một mạch nạp trực tiếp dùng giao tiếp PSI với cổng com máy tính thì WinPic và Pony prog có hỗ trợ không?

2. Em dự định viết phần mềm scada bằng visual C, việc viết thì OK, vấn đề là chương trình quả lý code và nạp cho PIC còn một số rắc rối (Em dùng PIC6f887 mà nói chung là cho dòng 16f88x) em có đọc trong tài liệu programming spec của microchip, nhưng thật khó hiểu cách chia trong Program Memory map của nó. Với chíp dòng này có tối đa 8K word chương trình tương ứng với 0x1fff. Tuy nhiên trong phần memory map hướng dẫn cụ thể lại là (Cho 16f887):
- user program memory từ 0x0000 - 0x1fff.
- Nhưng lại có thêm phần Configuration Memory từ 0x2000-0x3fff.

Vậy phần Configuration Memory là ở đâu? trong máy tính của mình quản lý khoảng này hay trong chip có chứa khoảng này. Mặt khác trong chip 16f887 chỉ có 8 K word, vậy là không thể có chuyện địa chỉ lên đến 0x3fff dc. Vậy yếu tố này dùng để làm gì, mặc dù trong phần này hướng dẫn cho biết dùng để configuration và dùng cho USER ID và CALIB WORD?

Mong các bac giúp đơ em thêm, em chân thành cảm ơn. (Tài liệu hướng dẫn cho mạch nạp PIC 16f88x có tên là: Pic16f88x memory programming specification em down từ microchip.com).

namqn
27-01-2008, 01:41 AM
Tiện đây, em có một số hỏi về cơ bản cho mạch nạp của Pic.

Hiện nay, chúng ta chủ yếu nói về các mạch nạp bán sẵn đồng thời phần mềm load có sẵn như WinPIC hay Pony Prog. Tuy nhiên, một số hệ thống thiết kế mà trên board phải chức năng load/download code trong chip on board bằng phần mềm riêng (SCADA hay DCS). Trong các phần mêm Scada hay DCS phải có cả chương trình LOAD hay DOWN code từ chip dùng để lập trình hay chỉnh sửa chương trình trong chip cho phù hợp với điều khiển của hệ thống.

Em mới học về PIC, lại phải thiết kế một hệ thống như vậy, vì thế em mao muội hỏi bac F, bac Namqn và anh em một số cau hỏi, mong các anh chỉ bảo.

1. Nếu em thiết kế một mạch nạp trực tiếp dùng giao tiếp PSI với cổng com máy tính thì WinPic và Pony prog có hỗ trợ không?

2. Em dự định viết phần mềm scada bằng visual C, việc viết thì OK, vấn đề là chương trình quả lý code và nạp cho PIC còn một số rắc rối (Em dùng PIC6f887 mà nói chung là cho dòng 16f88x) em có đọc trong tài liệu programming spec của microchip, nhưng thật khó hiểu cách chia trong Program Memory map của nó. Với chíp dòng này có tối đa 8K word chương trình tương ứng với 0x1fff. Tuy nhiên trong phần memory map hướng dẫn cụ thể lại là (Cho 16f887):
- user program memory từ 0x0000 - 0x1fff.
- Nhưng lại có thêm phần Configuration Memory từ 0x2000-0x3fff.

Vậy phần Configuration Memory là ở đâu? trong máy tính của mình quản lý khoảng này hay trong chip có chứa khoảng này. Mặt khác trong chip 16f887 chỉ có 8 K word, vậy là không thể có chuyện địa chỉ lên đến 0x3fff dc. Vậy yếu tố này dùng để làm gì, mặc dù trong phần này hướng dẫn cho biết dùng để configuration và dùng cho USER ID và CALIB WORD?

Mong các bac giúp đơ em thêm, em chân thành cảm ơn. (Tài liệu hướng dẫn cho mạch nạp PIC 16f88x có tên là: Pic16f88x memory programming specification em down từ microchip.com).
1. Không rõ giao tiếp PSI là giao tiếp gì. Mạch nạp trực tiếp qua cổng COM đã có rất nhiều, không rõ bạn thiết kế thêm để làm gì, nếu chỉ dùng lại phần mềm có sẵn.

2. 8k word là dung lượng bộ nhớ chương trình mà người dùng có thể sử dụng cho chương trình của họ. Bản thân chip vẫn phải có vùng nhớ để lưu thông tin cấu hình, các thông tin cấu hình này không bị mất khi ngắt nguồn của chip. Vùng nhớ lưu thông tin cấu hình cũng được chế tạo sẵn trong chip, và được ánh xạ vào không gian địa chỉ ngay sau vùng địa chỉ của flash chương trình. Ngoài ra, EEPROM dữ liệu cũng được chế tạo sẵn trong chip, và cũng cần không gian địa chỉ cho nó. Không gian địa chỉ của chip không chỉ bao gồm không gian địa chỉ của flash chương trình, và nó có thể được mở rộng đến một phạm vi nào đó là do thiết kế của nhà sản xuất.

UserID có thể được dùng để nhận diện các PIC khác nhau trong cùng một hệ thống. Calibration word được dùng để chứa thông tin hiệu chỉnh cho bộ dao động nội, mạch reset khi bật nguồn, và mạch reset khi nguồn suy giảm (vì không thể chế tạo các chip với các thông số R, C hoàn toàn giống nhau). Bạn không cần quan tâm đến chúng, vì chúng không bị ảnh hưởng bởi thao tác xóa chip.

Xin hỏi bạn đã học những gì liên quan đến vi điều khiển (tôi muốn biết kiến thức nền của bạn)? Nếu bạn chưa học gì liên quan đến vi điều khiển thì bạn cứ chấp nhận như vậy đi.

Thân,

NThang
28-01-2008, 12:00 AM
Rất cảm ơn bác Namqn,

Về phần trên, với câu trả lời của bác em đã hiểu phần nào. Tất nhiên, khi thiết kế với mỗi chíp, nhà sản xuất đều có thiết kế cơ chế truy cập và không gian địa chỉ cho chíp đó. Với bộ nhớ chương trình, thì cần gì phải ánh xạ nhỉ? rõ ràng là để thực hiện chương trình và nháp chương trình thì đã có RAM hay EEPROM nếu cần, chủ yếu là RAM. Em đã đọc kỹ lại hướng dẫn của microchip thì đã hiểu rằng cái second haft ấy có thể mở rộng được vì thực tế là địa chỉ của nó là 14bits có nghĩa là nó có thể địa chỉ đến 16k. Tuy nhiên với dòng chíp này nó chỉ sử dụng đến max là 8k rom trong (0x1fff), và có có khoảng thanh ghi chương trình cũng được tích hợp trong dùng cho USER ID và CONFIGURATION, CALIB từ 0x2000-0x2009 (Các chức năng này đúng như bác nói ở trên).

Tại sao em lại hỏi bác như ở trên, thứ nhất ban đầu em hiểu là phần configuration là do phần mềm em viết sẽ định nghĩa và quản lý cũng như bộ nhớ chương trình sẽ được ánh xạ vào đó. Nhưng hiểu thế là sai lầm. Em hiểu.

Em làm nhiều về AVR, mua mạch nạp sẵn, không để ý nhiều xem cơ chế nó nạp thế nào, chỉ viết chương trình, dịch và nạp. Tuy nhiên, em muốn nhiều hơn nữa, một số nhà xản xuất nước ngoài họ sử dụng phương thức nạp onboard, kiểm tra hay chỉnh sửa onboard bằng phần mềm riêng cho mỗi hệ thống của họ. em cũng muốn làm như thế, không chỉ chỉnh sửa tham số chương trình ( Lưu trong EEPROM là nhiều hay trong ROM) mà sửa trực tiếp chương trìng hệ thống bên trong nếu cần thiết) Có nghĩa là trong phần mềm của em phải có chương trình nạp cũng như đọc bộ nhớ chương trình của chíp và trên bo mạch em cũng phải tích hợp mạch nạp onboard.

Em là dân cơ điện tử, cơ bản thì có và cũng học khá nhiều, làm nhiều cả tương tự và số. Tất nhiên chỉ liên quan đến điều khiển hệ thống tự động, máy công nghiệp, động cơ mà thôi. Đọc về cơ chế nạp xóa PIC thì OK, thấy tự nhiên có vùng địa chỉ lạ hoắc nên mới hỏi như trên.

Về cơ chế nạp trực tiếp qua cổng com, rất mong các bác chỉ bảo thêm cách tạo bộ clock qua cổng com?

Em xin chân thành cảm ơn.

namqn
28-01-2008, 08:57 PM
...
Em làm nhiều về AVR, mua mạch nạp sẵn, không để ý nhiều xem cơ chế nó nạp thế nào, chỉ viết chương trình, dịch và nạp. Tuy nhiên, em muốn nhiều hơn nữa, một số nhà xản xuất nước ngoài họ sử dụng phương thức nạp onboard, kiểm tra hay chỉnh sửa onboard bằng phần mềm riêng cho mỗi hệ thống của họ. em cũng muốn làm như thế, không chỉ chỉnh sửa tham số chương trình ( Lưu trong EEPROM là nhiều hay trong ROM) mà sửa trực tiếp chương trìng hệ thống bên trong nếu cần thiết) Có nghĩa là trong phần mềm của em phải có chương trình nạp cũng như đọc bộ nhớ chương trình của chíp và trên bo mạch em cũng phải tích hợp mạch nạp onboard.
...
Một số hãng tích hợp sẵn phần firmware dùng cho việc nạp chương trình lên chip (họ gọi bằng các tên khác nhau như boostrap loader, bootloader, ...), chẳng hạn như Maxim-Dallas, Analog Devices, Atmel, ... Với PIC thì Microchip không làm điều này, do đó người dùng sẽ phải tự thiết kế lấy bootloader (hardware + firmware + host software) cho mình. Hiện nay, bootloader dành cho PIC nhỏ gọn và có tính năng tương đối là Tiny Bootloader. Bạn hoàn toàn có thể tích hợp nó vào thiết kế của bạn, và như thế xem như bạn có mạch nạp onboard. Xu hướng khác là người ta tích hợp lên mạch phát triển các mạch nạp từ đơn giản (qua cổng COM, LPT) cho đến phức tạp (với một smart chip, giao tiếp bằng đủ loại chuẩn, kể cả USB). Tất nhiên với cách làm này thì đòi hỏi bạn phải có trình độ cao hơn một chút so với giải pháp bootloader, nhưng vẫn là giải pháp khả thi. Tôi nói qua về chúng để bạn thấy rằng những việc đó không phải là quá sức chúng ta, vấn đề là chúng ta có muốn làm hay không.
Về cơ chế nạp trực tiếp qua cổng com, rất mong các bác chỉ bảo thêm cách tạo bộ clock qua cổng com?
Em xin chân thành cảm ơn.
Với mạch nạp trực tiếp qua cổng COM, bạn sẽ phải tự hiện thực giao tiếp ICSP được mô tả trong Prog. Spec. của chip tương ứng (rất hay là Microchip đã nhất quán về phần cứng, chỉ có thay đổi đôi chút về giao thức đối với các chip khác nhau). Có nhiều open source project trên mạng về các loại mạch nạp này, bạn thử lấy source code của WinPIC (do DL4YHF viếte) về để nghiên cứu thử (link ở đây: http://freenet-homepage.de/dl4yhf/winpic/winpic_sources.zip). Với các máy dùng Windows dựa trên công nghệ NT (Windows NT, Windows 2K, Windows XP) thì bạn phải dùng một thư viện nào đó để có thể truy xuất trực tiếp cổng COM. Nghiên cứu thử một chút bạn sẽ hiểu tại sao các bộ chuyển đổi USB-RS232 không thể dùng được cho mạch nạp trực tiếp.

Thân,

1234567898
29-01-2008, 10:25 AM
CHÀO CÁC BÁC! eM LÀ ĐỆ TỬ MỚI, CHƯA CÓ BÀI THAM LUẬN NHƯNG ĐƯỢC ĐỌC CÁC THAM LUẬN CỦA CÁC BÁC EM ĐÃ "MỞ" RA ĐƯỢC CHÚT ÍT. RẤT CÁM ƠN CÁC BÁC.

lovestar07
30-01-2008, 01:43 PM
chao cac ban. minh moi lam wuen voi pic.
ai co mach nap pic( falleafpic1,..). cho minh xin voi. mail: duchung197@gmail.com. minh chan thanh cam on.

falleaf
30-01-2008, 02:13 PM
Có một cái banner rất to trên diễn đàn "Dành cho người mới học", và trên menu bên tay trái của trang chủ cũng có cái link "Dành cho người mới học". F nghĩ các bạn nên dành thời gian đọc qua những bài viết đó, nó có đầy đủ các thông tin mà các bạn cần. Tránh cho các thành viên cứ trả lời đi trả lời lại một vài câu hỏi đã được hỏi suốt nhiều năm trời.

Lưu ý rằng ban điều hành vẫn luôn cập nhật các thông tin lên đó, chứ không phải là vứt bỏ nó không cập nhật gì đâu, nên nó rất là hữu ích, theo F là như vậy.

Chúc vui

daihk05
02-12-2010, 12:50 AM
Đang làm mạch đo nhiệt dùng DSPIC 30F4011, anh em nào có chương trình nạp và code cho nó ko, cho mình tham khảo với! thanks