Professional Documents
Culture Documents
ORG
Hình 1 là mục cấu hình sau khi kết nối với mạch nạp (phần hướng dẫn nạp chip
trang 16) và chọn thẻ Fuses.
Chúng ta sẽ lần lượt khảo sát các Fuse bit theo nhóm chức năng của chúng.
1. JTAGEN (JTAG Enable):
Trên AVR có tích hợp sẵn bộ JTAG, đó là một module giao tiếp với
phần cứng của chip. Nhìn chung, JTAG thường được dùng để kiểm tra hoạt
động của chip. Trên AVR, JTAG có thể được dùng để nạp chương trình nhưng
phổ biến hơn là dùng để debug lỗi chương trình (gỡ rối chương trình). Module
JTAG làm việc thông qua 4 chân TCK, TMS, TDO và TDI, trên chip
ATmega32 4 chân lần lần lượt là PC2, PC3, PC4 và PC5. Theo mặc định JTAG
được kích hoạt, bit JTAGEN=0 (programmed). Vì thế với các chip ATmega32
mới mua về, các chân PC2:5 trên PORTC có thể không sử dụng để xuất nhập
thông thường được. Nếu bạn không muốn sử dụng chức năng debug trực tiếp
trên chip thì hãy uncheck bit JTAGEN (uncheck tương đương unprogrammed,
tương đương JTAGEN=1) để dùng các chân JTAG như các chân xuất nhập
thông thường.
Khi mạch BOD được sử dụng, nếu điện áp VCC giảm xuống thấp hơn
mức điện áp BOD thì 1 Reset BOD xảy ra. Nếu không thật sự cần thiết hãy để
các bit này không được lập trình như mặc định. Hình 2 mô tả một sự kiện BOD
trên AVR.
Nạp chương trình bằng Boot Loader cho phép khách hàng của bạn tự
cập nhật các chức năng mới mà không cần trao chip cho bạn. Sử dụng hay
không sử dụng Boot Loader sẽ được xác lập thông qua các Fuse bits
BOOTRST, BOOTSZ1 và BOOTSZ0.
BOOTRST (Select Reset Vector) : Nếu Fuse bit BOOTRST không
được lập trình (bằng 1 - uncheck) thì khi vừa khởi động chip, con trỏ chương
trình sẽ nhảy đến vị trí đầu tiên trong chương trình (0x0000) để lần lượt thực
thi phần chương trình như thông thường. Nếu BOOTRST được lập trình (bằng
0- check) thì vị trí Reset là địa chỉ đầu của phần Boot Loader, không phải địa
chỉ 0x0000 như thường lệ. Khi đó phần chương trình trong Boot Loader sẽ
được thực thi thay cho chương trình chính phía trên (xem hình 3).
BOOTRST=1
RESET
BOOTRST=0
Khi dùng AVR Studio, ta chọn trực tiếp các giá trị này thông qua menu
sổ xuống của mục BOOTSZ
Ví dụ: chọn boot flash size là 2048
việc chọn nguồn xung này. Bảng 4 tóm tắt cách phối hợp các Fuse bits CKSEL
để chọn nguồn xung nội.
Bảng 4. Chọn xung giữ nhịp nội bằng các Fuse bits CKSEL.
(Nomial frequency: tần số danh nghĩa, giá trị thực có thể khác do sai số)
Đối với chip ATmega32, nguồn xung nội 1MHz được set mặc định trên
các chip mới.
Xung giữ nhịp từ mạch bên ngoài (External - Clock): dùng xung nội có
nhược điểm là tấn số xung đã được giữ cố định trong 4 mức và tấn số cao nhất
có thể đạt là 8MHz trong khi AVR cho phép làm việc ở 16Mhz, mặt khác sai số
cũng tương đối lớn khi xùng xung nội. Do đó ta có thể dùng mạch tạo xung bên
ngoài bằng RC hoặc lý tưởng nhất là thạch anh ( xem lại sơ đồ trang 11).
Để “báo” cho AVR biết là chúng ta muốn sử dụng thạch anh ngoài làm
mạch tạo xung, hãy set các Fuse bits CKSEL3:0 thành 1 trong 2 giá trị: 1111
hoặc 1010 (nhị phân). Trong trường hợp này, Fuse bit CKOPT có tác dụng
chọn giữa 2 chế độ khuyếch đại, chế độ CKOPT = 0 (programmed- check)
thích hợp với thạch anh có tần số lớn nhất là 16MHz và CKOPT=1
(unprorgammed - uncheck) khi tần số thạch anh nhỏ hơn hoặc bằng 8MHz.
Việc chọn thời gian khởi động, nguồn xung nhịp cho chip và chế độ
khuếch đại thực hiện dễ dàng với AVR Studio qua 2 mục :
CKOPT : check hoặc uncheck
SUT_CKSEL : chọn từ menu sổ xuống.
Sau khi đã chọn các Fuse bits, việc cuối cùng và rất quan trọng là ghi
các Fuse bits này vào chip bằng cách nhấn nút Program.
Đối với các chương trình nạp chip khác, Fuse bits set dựa trên việc check
hoặc uncheck từng bit của 2 byte LOW và HIGH vì vậy ta cần nắm vững việc
chọn các bit này. Đối với AVR Studio, sau khi cấu hình trên phần giao diện, ta
có thể xem 2 byte LOW và HIGH thực tế ở phía dưới của cửa sổ :