I.GIỚI THIỆU
Xin chào các bạn !
Mình sẽ hướng dẫn các bạn ” Cách nạp chương trình cho Atmega16 và 32 với mạch nạp USBISP và phần mềm nạp Progisp ” bằng hình ảnh.
Hạn chế tối đa cho các bạn chưa biết về Fuse Bits.
Điều khác nhau cơ bản giữa ATmega8 và ATmega16(hoặc 32) là:
- ATmega8 có WTDON ( WTDON luôn bằng 1 khi nạp chương trình )
- ATmega16 ( hoặc 32 ) có JTAGEN (JTAGEN luôn bằng 1 khi nạp chương trình )
II.Phần mềm hỗ trợ.
Driver “( Các phiên bản mới mạch nạp hỗ trợ chuẩn HID nên không cần Driver)
Chương Trình Nạp:
Download Progisp v2.12 TẠI ĐÂY
Pass giải nén : dammedientu
Các bạn down Driver tương thích với máy tính của mình và chương trình nạp Progisp về máy….và dễ dàng cài đặt chúng.
III.Cách nạp chương trình cho ATmega8
Bài viết này mình sẽ lấy ATmega8 là ví dụ:
Chú ý: Các ô vuông màu đỏ là những phần quan trọng.
Các chữ và ô vuông các màu còn lại là phần giải thích cho mọi người dễ hiểu.
Bước 1: Chạy chương trình nạp Progisp.
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 1](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-1.jpg)
Bước 2:
- Chương trình nhận mạch nạp USBISP.
- Chọn loại chip ATmega8
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 2](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-2.jpg)
Bước 3 : Các thông số quan trọng khi nạp chương trình cho ATmega8
(Thông số quan trọng chương trình sẽ tự độngTích (V)khi bạn chọn chip tương ứng , bạn không cần thay đổi gì cả .
- Chip Erase : Cho phép xóa chip
- Programe Flash : Nạp file Hex Cho Chip
- Verify Flash : Kiểm tra lỗi của chương trình Flash
- Data Reload : Tự động cập nhật dữ liệu khi có sự thay đổi file Hex, Eeprom
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 3](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-3.jpg)
Bước 4: Xóa chip
( Xóa chương trình cũ có trong chip ).
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 4](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-4.jpg)
Bước 5 : Cấu hình “Fuse And Lock Config” của ATmega8.
( Phần này rất quan trọng với AVR , nếu không rõ sẽ dẫn đến Fuse Bits => Lỗi Chip )
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 5](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-5.jpg)
B5.1: Defaut : Trở về cấu hình ban đầu
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 6](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-6.jpg)
B5.2: Read : Đọc Cấu Hình Fuse Và Lock Của Chip.
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 7](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-7.jpg)
B5.3:
Với ATmega8 thì có WTDON luôn để là 1 khi cấu hình ” Fuse And Lock Config “
Với ATmega16,32 Thì có :
JTAGEN : JATGEN luôn để là 1 khi cấu hình ” Fuse And Lock Config ” cho ATmega16.(JTAGEN = 1: Tắt JTAGEN ) ( Note: Để sử dụng PORTC xem datasheet)
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 8](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-8.jpg)
B5.4:Cấu hình Tần Số Clock. ( Trong code của bạn sử dụng tần số nào thì bạn phải cấu hình đúng như vậy )
5.4.1: CKSEL0=1 : Sử dụng dao động nội 1 MHz
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 9](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-9.jpg)
B5.4.2 : CKSEL1=1 : Sử dụng dao động nội 2Mhz
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 10](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-10.jpg)
B5.4.3 : CKSEL0=1 và CKSEL1=1 : Sử dụng dao động nội 4Mhz
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 11](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-11.jpg)
B5.4.4 : CKSEL2=1 : Sử dụng dao động nội 8MHz
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 12](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-12.jpg)
B5.4.5: CKSEL0=CKSEL1=CKSEL2=CKSEL3=1 : Sử dụng bộ dao đông ngoài ( Thạch Anh)
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 13](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-13.jpg)
Bước 5.5 : Write: Cấu hình tần số Thạch Anh từ chương trình vào chip.
Trong code của mình,mình sử dụng tần số Thạch Anh 1MHz nên mình chọn CKSEL0=1 sau đó là Write
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 14](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-14.jpg)
Bước 6 : Nạp chương trình FLASH.
- Click Load Flash
- Tìm file hex trong chương trình của bạn
- Open thôi
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 15](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-15.jpg)
Bước 8 : Load chương trình.
Click Auto : để load chương trình bạn vừa chọn.
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 16](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-16.jpg)
Bước 9:Hoàn thành.
Khi có dòng chữ : Erase,Write Flash,Verify Flash,Verify Eeprom,Successfully done tức là bạn đã nạp xong chương trình.
![[Hướng dẫn] Cách nạp chương trình cho ATmega16 , 32 với mạch nạp USBISP. 17](https://dientutuyenquang.net/wp-content/uploads/2026/11/huong-dan-cach-nap-chuong-trinh-cho-atmega16-32-voi-mach-nap-usbisp-17.jpg)
OK.Vậy là chúng ta đã nạp xong chíp !
Chúc các bạn thành công !

