AVR® Fuses nằm trong khu vực bộ nhớ bền vững (non-volatile memory) cho phép cấu hình phần cứng của vi điều khiển họ AVR. Các Fuses này thường được tạo thành bởi vài thanh ghi. Mỗi bit sẽ định nghĩa một chức năng phần cứng. Thông tin chi tiết về từng bit và tác động của chúng được trình bày trong tài liệu đi kèm. Các thông số về tốc độ xung nhịp, bộ đếm và các chức năng hỗ trợ sửa lỗi là những cài đặt phổ thông mà đa số vi điều khiển đều sở hữu.
Fuses được thay đổi khi nạp chương trình nhờ bộ nạp và giữ nguyên trạng thái sau khi được cấu hình. Nếu không cẩn thận tính toán trước khi thay đổi giá trị Fuses thì vi điều khiển có thể bị hỏng cấu hình (brick).
Chú ý rằng đặt bit = 0 để tác động và bit = 1 để ngắt tác động của nó. Điều này ngược lại so với việc cài đặt các bit cho các thanh ghi chức năng khác.
Trong bài này chúng ta chỉ quan tâm vi điều khiển Atmega8, đối với các linh kiện khác thì việc đặt Fuse bit là tương tự nhưng có thể khác tên và số lượng. Nếu chỉ sử dụng bộ dao động nội 1MHz thì ta không cần quan tâm việc cài đặt các tham số tiếp theo.
Các Fuses bit có khả năng làm hỏng cấu hình cần quan tâm:
- Tần số xung nhịp: CKOPT bao gồm các bit CKSEL3..0 (4 bit)
- Vi điều khiển được mặc định chạy với xung nội 1MHz
- Nếu gắn thạch anh ngoài để tăng tần số, tham khảo tài liệu trang 26
- Các bit SPIEN, DWEN, RSTDISBL nếu không chắc chắn thì không thay đổi
Để nạp chương trình cho AVR người ta có thể các mạch nạp từ đắt tiền cho đến phổ thông như hình:
Sử dụng Atmel Studio
Phím tắt trên thanh công cụ
hoặc tìm trong Tools–> Device Programming
- Chọn Tool –> loại thiết bị nạp
- Device –> Tên thiết bị nạp
- Interface –> loại giao tiếp
Có thiết bị sử dụng giao tiếp JTAG, trong khi có loại dùng PDI
Điều chỉnh tốc độ nạp phù hợp, thông thường bằng 1/4 tốc độ xung nhịp của vi điều khiển.
Trong mục Memories –> lựa chọn chương trình cần nạp vào mục Flash
Chú ý giá trị các Fuses bit và lock bit
Nếu sử dụng mạch nạp loại rẻ tiền như USBasp thì chúng ta có thể dùng phần mềm nạp riêng như eXtreme Burner – AVR hoặc Khazama AVR Programmer