Chào mừng đến với Câu Lạc Bộ Sáng Tạo
Chia sẻ kinh nghiệm
Kết nối đam mê
Đang cập nhật thời gian...
BÀI VIẾT NỔI BẬT
Xin chào! Tôi là Ếch Sáng Tạo :-)
Chia sẻ trang




Chuyên mục
Bài mới
Xem nhiều
Thống kê
    Đang tải..
Bài viết
Hướng dẫn set fuse bit cho AVR - SangTaoClub.Net
Hướng dẫn set fuse bit cho AVR
Đăng bởi: Vũ Văn Thái - Thời gian: 16-05-2014, 22:09
Chuyên mục: Học lập trình AVR - Lượt xem: 23.748

Thiết lập Fuse bit cho AVR

Chào các bạn hôm nay chúng ta sẽ tìm hiểu về cách thiết lập fuse bits cho vi điều khiển AVR. Trong AVR được thiết kế sẵn một số mạch điện và các thiết bị hỗ trợ bên trong,chúng có tác  dụng điều khiển, debug, cấp xung clock, lưu trữ.... Để điều khiển các mạch điện này khi nạp chip chúng ta phải cấu hình Fuse bit cho chúng, hiểu nôm na là đóng cầu dao điện hoặc mở cầu dao điện. VD như ta thiết lập nguồn xung clock cho AVR: Vì trong AVR có tích hợp một mạch điện tạo dao động cho chip lên đến 8Mhz khi sử dụng mạch này các bạn không cần phải mắc thạch anh cho chip.

Mỗi loại chip avr đều có một cấu hình fuse khác nhau, ở đây ta sẽ lấy ví dụ cho một số chip hay dùng: ATmega8, ATmega16, ATmega32, .... Phần mềm nạp Progisp:

Hướng dẫn set fuse bit cho AVR

Hướng dẫn set fuse bit cho AVR

Chú ý: Khi cấu hình Fuse bit là bit 0 sẽ là kích hoạt,  còn 1 là không kích hoạt

Ta sẽ set một số Fuse của các chip trên:

1. BODLEVER là bit chọn mức điện áp tham chiếu sụt áp nguồn, khi ta cấu hình kích hoạt BODEN. BODLEVER=0 tức chọn mức điện áp 4.0V, còn nếu BODLEVER=1 là chọn mức điện áp 2.7V

Khi điện áp nguồn VCC mà bị sụt xuống mức giới hạn trên CHIP sẽ tự động được RESET không như 8051 treo luôn :)

2. BODEN là bit cho phép mạch phát hiện sụt áp nguồn hoạt động.

3. JTAGEN là bit cho phép module JTAG hoạt động, có tác dụng kiểm tra hoạt động trên chip và gỡ lỗi...

Lưu ý fuse này với chip ATmega32 khi mới mua về các PIN: TCK, TMS, TDO và TDI lần lượt PC2, PC3, PC4 và PC5 không thể sử dụng được, nếu ta không có việc gì cần đến cái này thì hãy vô hiệu hóa bằng cách set JTAGEN=1 để có thể sử dụng các chân trên như các PIN khác vì nếu ta để cấu hình JTAGEN=0 sẽ không sử dụng được các chân trên.

4. OCDEN là bit cho phép Debug, nếu ta không khai báo fuse này thì JTAGEN vô nghĩa khi JTAGEN=0. Không dùng Debug thì ta set OCDEN=1, nếu set OCDEN=0 thì chip sẽ chạy ở chế độ sleep mode (ngủ đông) và quá trình debug bắt đầu, ta không thể làm gì với chip

Tốt nhất ko sờ vào cái này không lại cứ tưởng con chip của mình vừa mới mua về sao đã tèo rồi thì mệt.

5. EESAVE là bit cho phép để lại (lưu lại) dữ liệu EEPROM trong mỗi lần nạp lại chip hay không, nếu EESAVE=0 thì toàn bộ dữ liệu trong EEPROM sẽ không bị xóa khi nap chip hoặc ngược lại.

6. BOOT LOADER là chương trình cho phép nạp chip không cần mạch nạp, VD như nạp qua UART.... cho phép khách hàng của mình có thể tự cập nhật phần mềm. Để làm được việc này ta phải cấu hình fuse cho 3 bit sau:

- BOOTRST là fuse cho phép chạy chương trình bootloader trong vùng lưu trữ bootloader. BOOTRST=1 thì địa chỉ của chương trình sẽ bắt đầu từ địa chỉ 0x0000, còn BOOTRST=0 thì ô nhớ bắt đầu là vị trí đầu tiên của bootloader tức ctr bootloader được thực thi.

- BOOTSZ1 và BOOTSZ0 là 2 bit chọn phân vùng bộ nhớ cho bootloader ta xem bảng sau:

BOOTSZ1 BOOTSZ0 Boot Size (words) Page Địa chỉ
1 1 256 4 0x3F00 - 0x3FFF
1 0 512 8 0x3E00 - 0x3FFF
0 1 1024 16 0x3C00 - 0x3FFF
0 0 2048 32 0x3800 - 0x3FFF

Trong các ứng dụng không đòi hỏi phải cập nhật phần mềm thì ta để mặc định, để dành bộ nhớ cho code.

7. RSTDISBL là bit cho phép sử dụng chân reset hay không trên một số chip như ATmega8 có tích hợp chung với PINC.6. Để sử dụng chân này làm chân RESET ta thiết lập fuse RSTDISBL=1 và ngược lại nếu ta muốn sử dụng chân này làm port xuất nhập.

8. WTDON cho phép WTD

9. SPIEN cho phép giao tiếp SPI

10. Set xung nhip cho chip, gồm 7 fuse: CKSEL3:0 (chọn xung nhịp), CKOPT (chọn chế độ khuêch đại) và SUT1:0 (thời gian khởi động- ko dùng, mặc định như nào để đó SUT1:0=10 )

CKSEL3:0 Xung nhịp Nguồn xung nhịp CKOPT
0001 1Mhz Onchip  
0010 2Mhz Onchip  
0011 4Mhz Onchip  
0100 8Mhz Onchip  
1010 1-16Mhz Thạch anh ngoài 0
1111 1-16Mhz Thạch anh ngoài 0
1010 1-8Mhz Thạch anh ngoài 1
1111 1-8Mhz Thạch anh ngoài 1

Hướng dẫn set fuse dùng xung nhịp RC onchip và thạch anh ngoài

Hướng dẫn set fuse bit cho AVR

Hướng dẫn set fuse bit cho AVR

Cuối cùng sau khi cấu hình xong nhớ nhấn nút Write để ghi cấu hình vào chip nha!

Qua bài viết này các bạn có thể yên tâm khi nạp chương trình cho AVR không sợ bị set nhầm fuse.




  • Bạn chưa đăng nhập, không thể viết bình luận!
    Bấm vào đây để Đăng nhập hoặc Đăng ký!
  • Vũ Văn Thái lúc 05-12-2014, 06:31
    Dùng mạch nạp AVR, đọc kĩ lại bài viết trước khi làm để không bị set nhầm, chip avr mới mua về bắt buộc phải set fuse, chip đã set rồi thì lần nạp tiếp theo có thể set lại hoặc để như cũ
  • phamnhatcuongddt lúc 05-12-2014, 01:50
    dùng mạch gì để Fuse AT vậy admin
  • Trang 1/1: 1

    Bài viết cùng chuyên mục
    ATMG16 giao tiếp với LCD ATMG16 giao tiếp với LCD
    Đăng bởi: haydayanh - Thời gian: 04-06-2021, 22:33
    Chuyên mục: Học lập trình AVR - Lượt xem: 3.063
    Hướng dẫn làm KIT AVR đơn giản Hướng dẫn làm KIT AVR đơn giản
    Đăng bởi: Vũ Văn Thái - Thời gian: 25-10-2014, 09:39
    Chuyên mục: Học lập trình AVR - Lượt xem: 11.601
    [Bài 6] Lập trình giao tiếp USART và RS232 với AVR [Bài 6] Lập trình giao tiếp USART và RS232 với AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 15-08-2014, 15:25
    Chuyên mục: Học lập trình AVR - Lượt xem: 19.967
    [Bài 5] Lập trình ADC - Đo nhiệt độ dùng LM35 hiển thị LCD với AVR [Bài 5] Lập trình ADC - Đo nhiệt độ dùng LM35 hiển thị LCD với AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 25-06-2014, 10:17
    Chuyên mục: Học lập trình AVR - Lượt xem: 60.353
    [Bài 4] Lập trình giao tiếp LCD16x2 cho AVR trên CodeVisionAVR [Bài 4] Lập trình giao tiếp LCD16x2 cho AVR trên CodeVisionAVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 22-06-2014, 10:42
    Chuyên mục: Học lập trình AVR - Lượt xem: 25.259
    [Bài 3] Lập trình ngắt cho AVR trên CodeVisionAVR [Bài 3] Lập trình ngắt cho AVR trên CodeVisionAVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 16-06-2014, 14:06
    Chuyên mục: Học lập trình AVR - Lượt xem: 23.968
    [Bài 2] Tìm hiểu bộ Timer-Counter trên AVR [Bài 2] Tìm hiểu bộ Timer-Counter trên AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 15-06-2014, 11:55
    Chuyên mục: Học lập trình AVR - Lượt xem: 21.797
    [Bài 1] Xuất nhập Port đơn giản cho AVR [Bài 1] Xuất nhập Port đơn giản cho AVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 29-05-2014, 21:22
    Chuyên mục: Học lập trình AVR - Lượt xem: 10.506
    Mạch nạp ISP cho vi điều khiển AVR và 89S Mạch nạp ISP cho vi điều khiển AVR và 89S
    Đăng bởi: Vũ Văn Thái - Thời gian: 10-05-2014, 12:22
    Chuyên mục: Học lập trình AVR - Lượt xem: 21.439
    Lập trình C trong CodeVisionAVR Lập trình C trong CodeVisionAVR
    Đăng bởi: Vũ Văn Thái - Thời gian: 28-04-2014, 19:30
    Chuyên mục: Học lập trình AVR - Lượt xem: 17.887
    Chào mừng canbaoke14 đã tham gia câu lạc bộ sáng tạo!
    Vũ Văn Thái - vuthai
    Hôm nay là sinh nhật của nhokclassic, anhbadia, conga2000, sonkhoi_star, minhkhanh982, winloan, lethanhtungnb89, quanglong_sangtao, wintk94, xuanbang, lebang, minhkyqt, fatduck92, minhquang09c4a, Khien_kd, anhlich1512_1994, thanhlong, maiphuocloi93, thanhlong142010, tuviethoang, MrSamTran_96, nguyentientrung, buikhanh_95, obesite, k123kien, nguyencongle, Khatmau_sr, Kemcaca0, tinhdau, quang_123, ← Gửi tin nhắn chúc mừng
    Múi giờ: UTC+07:00 - Asia/Ho Chi Minh ***** IP của bạn: 18.221.175.164 ***** Status: Cache Update thành công!