Sie sind auf Seite 1von 15

Mạch nạp

Nội dung Các bài cần tham khảo trước

1. Mạch nạp ISP STK200/300.


2. Chương trình nạp PonyProg.  

3. Mạch nạp USB AVR910. Làm quen AVR.

Download PonyProg , Download AVR910 USB

Một trong những ưu điểm lớn nhất của các chip AVR là tính đơn giản khi sử
dụng trong đó có việc nạp chương trình cho chip. AVR hỗ trợ khả năng nạp
chương trình ngay trong hệ thống - ISP(In-System Programming), có thể nạp
trực tiếp chương trình vào chip mà không cần tháo chip ra khỏi mạch ứng dụng.
Mạch nạp cho AVR rất phong phú nhưng hầu hết đều rất đơn giản. Trong bài
này tôi giới thiệu 2 loại mạch nạp rất phổ biến trong những người sử dụng AVR
đó là mạch ISP SKT200/300 (gọi tắt là AVR ISP) và mạch USB AVR910. Mỗi
loại có ưu và nhược điểm riêng, tùy theo nhu cầu và khả năng bạn sẽ chọn chế
tạo cho mình 1 loại mạch nạp phù hợp.
I. Mạch nạp STK200/300.
Mạch nạp loại này sử dụng cho các board STK200/300 của Atmel nên thường
được gọi là STK200/300. Mạch này giao tiếp với máy tính qua cổng LPT (cổng
song song). Có 2 phiên bản phổ biến của mạch STK200/300 đó là phiên bản thu
gọn và phiên bản sử dụng IC đệm 74xx244.
Sơ đồ mạch nạp thu gọn được trình bày trong hình 1. Đây là loại mạch đơn giản
nhất trong tất cả các loại mạch nạp cho AVR, mạch chỉ bao gồm 4 điện trở.
Nhược điểm của mạch này là không an toàn, có thể gây hại cho cổng LPT (thật
ra tôi chưa mắc phải vấn đề này khi sử dụng mạch STK200/300 thu gọn). Mặt
khác mạch này không đảm bảo nạp được cho tất cả các chip AVR. Tuy nhiên,
nếu bạn không có nhiều kinh nghiệm làm các mạch điện tử thì có thể chế tạo
mạch này để test chương trình AVR mà bạn đã học.
_____________________
||||||hoangthuong_pro8x___
| _01692887738_----__||| '|"; \,___.
|_....__....________===|=||_|__|...,]
"(@)'(@)""""""(@ )(@) === (@)

_____________________
||||||hoangthuong_pro8x___
| _01692887738_----__||| '|"; \,___.
|_....__....________===|=||_|__|...,]
"(@)'(@)""""""(@ )(@) === (@)
Hình 1. Sơ đồ mạch nạp STK200/300 thu gọn.
Một loại mạch STK200/300 khác được sử dụng rất phổ biến là loại mạch có
dùng IC đệm 74HC244 (hoặc 74LS244), so với mạch thu gọn, mạch này có
phức tạp hơn đôi chút (xem hình 2) nhưng bù lại nó là mạch nạp rất ổn định và
an toàn. Mạch này được hỗ trợ bởi rất nhiều chương trình nạp và sử dụng được
cho hầu hết các loại chip AVR.
Hình 2. Sơ đồ mạch nạp STK200/300 đầy đủ.
Như quan sát trong hình 1 và 2, việc nạp ISP cho AVR thường được thực hiện
thông qua 6 đường nạp cơ bản, đó là GND, VCC, RESET, SCK, MISO và
MOSI. Khi chế tạo mạch nạp, bạn phải chú ý thứ tự của các đường nạp này sao
cho phù hợp với thứ tự mà bạn đã bố trí cho mạch ứng dụng. Một điều đặc biệt
là ở các chip ATmega16, ATmega32, ATmega8535, AT90S8535...6 đường
dành cho việc nạp ISP nằm cạnh nhau và theo thứ tự GND, VCC, RESET,
SCK, MISO, MOSI. Vì thế tôi khuyên bạn nên bố trí theo thứ tự này để tiện
trong việc kết nối với mạch ứng dụng (nhất là khi bạn sử dụng các loại chip trên
và làm mạch test bằng bread board)..Các mạch nạp STK200/300 được mô tả
trong hình 3.
Hình 3. Mạch nạp STK200/300.
II. Chương trình nạp PonyProg.
Chương trình nạp là một tiện ít giúp đổ file hex sau khi biên dịch vào chip thông
qua các mạch nạp. Hầu hết các bộ công cụ lập trình cho AVR đều tích hợp sẵn
một chương trình nạp chip. avrdude là chương trình nạp miễn phí hỗ trợ rất
nhiều loại mạch, được tích hợp với WinAVR. Tuy nhiên, đây là chương trình
nạp console (không có giao diện) nên sử dụng tương đối khó khăn nhất là khi
cần nạp các bit Fuse hay Lock. Các phần mêm lập trình cho chip như
CodevisionAVR, ICCAVR, Bascom,...đều có chương trình nạp riêng rất đa
năng và dễ sử dụng. Nhưng do đây là các công cụ thương mại nên bạn cần mua
nếu muốn sử dụng. AVR Studio, tất nhiên, có chương trình nạp chip AVR Prog
nhưng chương trình này lại không hỗ trợ mạch nạp mà STK200/300 mà tôi giới
thiệu bên trên. Cuối cùng là PonyProg, PonyProg không phải là hoàn hảo nhất
nhưng là lựa chọn tối ưu nhất để nạp bằng mạch STK200/300. Đây là chương
trình nạp hoàn toàn miễn phí, hỗ trợ nhiều loại mạch và nhiều dòng vi điều
khiển (như AVR, PIC...), giao diện lại khá dễ sử dụng. Trong phần này tôi dùng
PonyProg để minh họa cho cách nạp chương trình vào AVR thông qua mạch
nạp STK200/300.
Download và cài đặt PonyProg: bạn có thể download miễn phí PonyProg tại
website chính thức của Lancos hoặc tại đây. Cài đặt và tiến hành setup phần
mềm.
Setup: Trước khi sử dụng PonyProg để nạp AVR bạn cần Setup một số thông
số cho phần mềm như loại chip, loại mạch nạp...Chạy PonyProg, chọn menu
Device và chọn loại chip mà bạn cần nạp (ví dụ "AVR micro/ ATmega32").
Tiếp đến xác nhận loại mạch nạp và giao diện cổng bằng cách vào menu
"Setup/Interface Setup"...Với mạch nạp STK200/300, hãy set các thông số
trong dialog "I/O Port setup" như trong hình 4 và nhấn OK để xác nhận Setup.

Hình 4. Setup port cho ponyProg.


Ghi fuse bits và Lock bits: Ponyprog cho phép người dùng ghi và đọc các bit
cấu hình của chip như fuse bits và lock bits, để thực hiện, chọn menu
"Command/Security and Configuration bits" hay đơn giản là nhấn tổ hợp
phím Ctrl+S. Dialog mới xuất hiện cho phép bạn cài đăt các bit cấu hình cho
chip (chọn các bit mong muốn và nhấn button write - xem thêm bài fuse bits để
hiểu rõ hơn chức năng các bit này).
Download chương trình vào chip: Hãy mở file chương trình cần nạp vào chip
bằng cách vào menu "File/Open Program (FLASH) file" hoặc nhấn nút công
cụ "P" trên thanh công cụ. Nội dung file FLASH sẽ được hiển thị trong 1 cửa sổ
con. Để nạp chương trình cho chip, hãy vào menu "Command/Write
Program(FLASH)" hoặc nhấn nút công cụ "Write Program
Memory(FLASH)" trên thanh công cụ.
Ngoài ra, PonyProg còn có rất nhiều chức năng khác như đọc nội dung chip,
xóa chip, kiểm tra...với các chức năng này bạn hãy tự khám phá và sử dụng.
III. Mạch nạp USB AVR910.
Tuy mạch nạp STK200/300 đơn giản, dễ chế tạo nhưng có một hạn chế là mạch
này sử dụng cổng LPT làm cổng giao tiếp. Trên một số máy tính gần đây cổng
LPT đã bị loại bỏ, thay vào đó các cổng USB đã trở thành cổng giao tiếp không
thể thiếu của máy tinh. Một mạch nạp sử dụng cổng USB sẽ tiện lợi hơn rất
nhiều so với cổng LPT hay COM. Có một số dự án nghiên cứu chế tạo mạch
nạp USB cho AVR, trong số đó có lẽ phổ biến nhất là mạch nạp AVR910 USB
của Prottoss. Gọi là mạch AVR910 vì nguyên lý nạp chương trình của mạch này
áp dụng hướng dẫn trong application note 910 của Atmel về In-System
Programming. Mạch AVR910 USB được điều khiển bởi một chip Master
Atmega8, chip này chứa một firmware bên trong, firmware thực hiện 2 chức
năng: thứ nhất là một cầu chuyển USB-UART dựa trên thư viện của Objective
Development và thứ hai là điều khiển quá trình nạp theo "chuẩn" AVR910.
Mạch nạp ARV910 USB không quá phức tạp cho bạn tự chế tạo, hãy download
các công cụ cần thiết từ website của Prottoss hoặc download trực tiếp tại đây và
thực hiện theo các chỉ dẫn bên dưới.
Giải nén file rar vừa download về bạn sẽ thấy có 3 files bên trong. File thứ nhất
là sơ đồ mạch điện (file pdf), file thứ hai là driver cho máy tính (file inf) và file
thứ 3 là firmware cho chip master ATmega8 (file hex - xem hình bên dưới).

Chế tạo mạch: tham khảo sơ đồ mạch điện và chế tạo một mạch điện theo
mạch nguyên lý trong file pdf hoặc trong hình 5 bên dưới.
Hình 5. Sơ đồ mạch nạp AVR910 USB của Prottoss.
Khi chế tạo mạch điện trên, bạn lưu ý một số điểm như sau: hãy bỏ qua các
Jumper J1, J2 và J3, nối trực tiếp chân 16 của ATmega8 với điện trở R13. Nếu
bạn không biết cách xác định thứ tự chân của cổng USB thì hãy dùng một đổng
hồ đo điện áp, chân 1 sẽ có điện áp dương (khoảng 5V) và chân 4 là chân
GND).
Nạp firmware cho chip mega8: trước khi gắn chip mega8 vào mạch điện hình
5, bạn phải nạp firmware (file USB.910.Programmer.hex) vào chip này bằng
một mạch nạp bất kỳ mà bạn có (ví dụ mạch STK200/300). Chú ý bạn cần set
fuse bit cho chip này sao cho nguồn thạch anh ngoài 12MHz đươc sử dụng (hãy
đặt 2 bit BOOTZS0 và BOOTSZ1 bằng 0 (checked), các bit còn lại bằng 1 (bỏ
trống) - tham khảo bài Fuse bits).
Cài driver cho windows: sau khi chế tạo mạch và nạp firmware cho chip
master, bạn kết nối mạch nạp với cổng USB của máy tính. Một cách tự động,
Windows sẽ nhận diện một phần cứng mới được kết nối và yêu cầu cài đặt
driver cho thiết bị. Hãy browse đến thư mục chứa file driver inf mà bạn đã giải
nén. Quá trình cài driver sẽ bắt đầu, nếu trong quá trình cài đặt Windows thông
báo lỗi bạn hãy nhấn "Continue anyway..." để tiếp tục cài đặt đến khi hoàn tất.
Sau khi cài đặt driver một cổng COM ảo sẽ xuất hiện trong Hardware list của
bạn, hãy mở tiện ích Device manager của Windows để kiểm tra, hãy ghi lại chỉ
số cổng COM ảo (COM1, COM2, COM3...) để khai báo trong các chương trình
nạp.
Sử dụng AVR910 USB: mạch nạp AVR910 USB được hỗ trợ bởi phần mềm
nạp của CodevisionAVR và AVR Prog của AVRStudio. Kết nối mạch với máy
tính, chạy AVRStudio và chương trình nạp AVR Prog (vào menu Tools/AVR
Prog). Trong mục Hex file hãy browse đến file hex cần nạp cho chip, mục
Device chọn loại chip AVR và sau đó nhấn button Write trong mục Flash để
nạp vào file hex vào chip. Nếu muốn xác lập fuse bits hay lock bits, hãy nhấn
button Advance.

Hình 6. Nạp chip bằng mạch nạp AVR910 USB và AVR Prog.

I..Nạp USB

Schema

Eagle

Hardware (khoảng 50k):


AVR ATMega8 (20K)
Dây USB-A (9k)
Jack USB-A cái (5k)
Hộp đấu dây thoại (5k)
Mạch in khoan lỗ sẵn (2k)
Các linh kiện linh tinh khác (9k)
Jack cắm (4pin + 3x2) lấy từ CD-ROM

Firmware

Bootloader (hiệu chỉnh dựa trên code tham khảo tại www.fischl.de)
STK500v2-ISP (hiệu chỉnh dựa trên code tham khảo tại www.ullihome.de)
AVR910-USB (lấy của PROTOSS -> prottoss@mail.ru)
ASPUSB (hiệu chỉnh dựa trên code tham khảo tại www.fischl.de)

Software + driver

Phần nạp
AVRProg (nằm trong bộ AVR Studio, có thể chạy độc lập)
AVR Studio
CodeVision
AVRdude

Phần Bootloader
Tự viết bằng Delphi, sử dụng bộ thư viện libusb-win32

Các bước thực hiện làm:

1. Thực thi phần cứng (có thể cắm trên testboard trước cho chắc ăn).
2. Nạp firmware bootloader cho con ATMega8 (nhờ người khác nạp giùm hoặc lắp một
mạch nạp đơn giản qua COM hoặc LPT).
3. Cái jump màu xanh trong hình dùng để nạp con ATMega8 trên mạch từ một mạch
nạp khác.
4. Gắn cái jump màu đen (cho phép bootloader), cắm bộ nạp vào cổng USB máy tính.
Máy tính sẽ hỏi driver, chỉ đến thư mục driver của bootloader.
5. Sau khi cài xong driver, PC sẽ nhận ra 1 thiết bị BootLoader trong nhánh LibUsb-
Win32 (xem trong Device Manager) .
6. Chạy chương trình bootloader.exe, chọn file firmware mạch nạp (.hex) trong thư mục
firmware. Click nút Upload, trong vài giây bạn đã có một mạch nạp USB-ISP để xài.
Nút Start App để chạy thử mạch nạp.
7. Nếu muốn đổi sang mạch nạp loại khác, chạy lại bootloader.exe để upload lại
firmware khác cho bộ nạp.
8. Rút cái Jump màu đen để chạy mạch nạp bình thường (không chạy bootloader).
9. Led trong mạch dùng led 2 màu (xanh-đỏ) để tiết kiện diện tích.
II>>Nạp #

Mạch nạp AVR giao tiếp với máy tính qua 3 dạng chuẩn :
1. Chuẩn RS232 - Chuẩn Kinh điển ( đến nay STK500 vẫn dùng- Các mạch của nước ngoài thường đưa
vào 2 con MAX232 để làm IN- OUT )

2. Chuẩn LPT Port ( Nạp qua cổng máy in ). Đây là trường phái Lancos hay tương thích STK200-300,
nó hay được dùng do đặc điểm dễ làm và linh kiện dễ kiếm. Phần mềm dùng PonyProg hay
CodeVision C cũng là lựa chọn của đa số.

3. Chuẩn USB được chia làm 2 kiểu :


_ Kiểu 1 : dùng IC chuển đổi USB-> COM ảo : thực chất vẫn là COM với tốc đọ tối đa có thể là
115Kbps .
_ Kiểu 2 : Dùng trực tiếp 1 vi điều khiển ( PIC, AVR.... ) để chuyển đổi dữ liệu theo chuẩn USB sang
giao tiếp ISP ( In System Programmer ) . Đây là cách làm của cộng đồng mã nguồn mở. Phần mềm
nạp hay dùng AVR Dude chạy tren Linux hay Command line trên Windows. ( Nhược điểm khó dùng,
chạy hay gặp lỗi, tuy nhiên nếu bạn khá thành thạo thì cũng thấy hay hay vì nó chạy nhanh khủng
khiếp ) . Nói về tốc độ thì nó tương đương chuẩn USB 1.1 - Chỉ nên dùng khi bạn thành thạo về AVR
nếu bạn không muốn bỏ quá nhiều tiền mua IC.

Vấn đề giao tiếp USB sẽ được đề cập sau. Trứoc mắt sẽ đề cập từ dễ đến khó để newbie theo dõi cho
tiện.
Phần 1 : Mạch nạp qua cổng COM - RS232 . Phần 1A : mạch kinh điển và dễ làm nhất sử dụng
transitor hay điôt.

Để hình dung và tiện tham khảo, tôi gửi lên 3 sơ đồ mạch nạp cổng COM chạy bằng điôt và đèn bán
dẫn, nó rất đơn giản và dễ kiếm linh kiện. ( Dĩ nhiên là xài linh kiện tương đương )
Phần mềm nạp thì dùng PonyProg, set giao tiếp Serial
Ghi chú : mấy con transitor có thể dùng 2N2222 hoặc tương đương, Mấy con BAT có thể thay
1N4148 hay điốt Schottky tương tương trên thị trừơng .
Riêng mạch SI_prog thì bỏ phần nguồn External, Nếu muốn dùng nguồn ngoài thì bỏ đừong cấp
nguồn sau 3 con điốt 1N4148 và cấp 5V từ lấy nguồn nuôi từ giắc USB type A hay B cấp thẳng cho
Vcc

PonyProg là một phần mềm có mã nguồn mở rất hay, ưu điểm của phần mềm này là tính ổn định, dễ
sử dụng cho cả hai lọai giao tiếp COM232 và LPT.
Đối với các bạn mới làm quen hay đã xài AVR rồi thì việc sử dụng nó như một công cụ tiện lợi ( quả
thật là nó rất lợi hại - tại sao lại thế các bạn tự tìm hiểu nhé ). Bạn chỉ cần mất chút thời gian thì việc
làm 1 mạch nạp AVR qua COM232 với cái adapter nạp ( cho các IC AVR thông dụng ) phục vụ việc học
tập rất tốt. Với việc cải tiến nó đi một chút cho phù hợp điều kiện Việt nam như bài viết ở phần trên
là bạn có thể vọc AVR với chi phí rất nhỏ.
Kèm đây là thiết kế đầy đủ, có thể nhiều bạn đã biết nhưng không để ý đến tính đơn giản, dễ chế
tạo.
http://www.lancos.com/e2p/si-prog-v2_2.pdf

Mạch nạp AVR đơn giản nhất với 2 transitor, 3 zener 5V1 , 8 điện trở , 2 tụ hóa , 1 led báo nguồn, 1
Led báo nạp, cấp nguồn từ USB ( sửa đổi trên cơ sở mạch COM_RS232 của Lancos hỗ trợ đến cả
ATmega128 ).
Các vấn đề về mạch nạp cho AVR:
- Mạch nạp dành cho vi điều khiển AVR đây!!!
- Mạch nạp AVR làm có khó không?
- Mạch nạp AVR USB đây bà con ơi !
- Bàn luận về mạch AVR910-USB của Prottoss
- Trợ giúp mạch nạp USB!
- Mạch nạp AVR nào là hay?

Các vấn đề liên quan đến sử dụng fuse bit của AVR:
- Fuse bit cho ATmega16
- Reset fuse cho ATmega
- Lại rắc rối với Fuse bit mong các bạn để ý dùm
- Đặt Fuse bit cho Atmega8
- Ai có AVR bị cà tưng vì fuse thì vô đây !

Thảo luận về sử dụng trình biên dịch cho AVR:


- Dùng C cho AVR
- Lập trình AVR bằng CodeVisionAVR C Compiler cho người mới bắt đầu
- Học viết chương trình C trên AVR studio
- BascomAVR
-

Các ứng dụng cơ bản:


- Ds1307
- Giao tiếp AVR với PC
- AVR và thẻ nhớ!
- SD card và MMC card
- ADC + Động cơ bước
- input capture trong AVR
- Lưu Data vào Flash
- LCD 2x16
- Cách ghép nối ATmega16 với LM35
- USB Communication Device Class (CDC)
- Avr & Tcp/ip

Das könnte Ihnen auch gefallen