Set bootloader cho AVR atmega328

Để lập trình cho các dòng vi điều khiển AVR có thể sử dụng rất nhiều chương trình khác nhau và nhiều cách nạp chương trình khác nhau. Tuy nhiên, hiện nay chương trình biên tập và nạp cho các mạch arduino đang rất thịnh hành. Điểm mạnh của Arduino IDE là thư viện hỗ trợ rất tuyệt vời và cộng đồng phát triển rất rất mạnh. Chúng ta không cần có kiến thức sâu về phần cứng của AVR vẫn có thể tạo cho mình những mạch điện thực hiện những mục đích của chúng ta một cách pờ rô. Thực chất các mạch arduino cũng là các mạch sử dụng VĐK AVR do đó chúng ta hoàn toàn có thể tự tạo cho mình các mạch "arduino" theo phong cách riêng.

Ta vẫn thiết kế mạch như bình thường (ví dụ: mạch robot, điều khiển, cảm biến...) sử dụng atmega328 (các dòng AVR khác cũng thực hiện tương tự thôi).

Sau đó dùng chương trình soạn thảo arduino để lập trình và nạp qua cổng RS232.

Để thực hiện được điều đó thì chúng ta phải nạp bootloader cho chíp. Thưc chất của việc nạp bootlaoder này là nạp cho chíp một chương trình "boot" (khởi động) đồng thời set fuse bit cho AVR luôn. Chương trình boot  này có trách nhiệm đọc các tín hiệu từ 232 khi khởi động hoặc khi vừa reset xong. Nếu tín hiệu này là tín hiệu nạp chương trình thì nó sẽ thực hiện việc ghi dữ liệu chương trình (file HEX) vào bộ nhớ của VĐK. Nếu không nhận được tín hiệu gì từ 232 khi reset trong khoảng thời gian nhất định (chắc tầm 10s) VĐK sẽ chạy chương trình chính mà chúng ta đã lập trình.

Như vậy: trước hết chúng ta cần nạp bootloader cho AVR đã rồi mới lập trình bằng Arduino IDE được. Ở đây, tôi sử dụng một mạch arduino UNO làm mạch nạp bootloader.  (Các anduino khác cũng được)

  • Nối dây vào board UNO

Sơ đồ nối dây để nạp bootloader cho atmega328

Tra cứu datasheet của từng loại AVR ta có cách nối dây cụ thể như bản sau:(các chíp AVR khác cũng nối vào các chân RESET, MOSI,MISO và SCK)

Arduino Uno đã có bootloader Arduino chưa có bootloader

(ATmega328/168/8)

GND GND
5V 5V
D10 (SS) RESET
D11 (MOSI) MOSI
D12 (MISO) MISO
D13 (SCK) SCK
  • Mở Arduino IDE (tôi hay sử dụng Arduino V1.0.1- có lẽ vì nó nhẹ)
  • Mở chương trình mẫu Arduino ISP: (trong ví dụ có chương trình này)

vào: File-> Example->ArduinoISP->ArduinoISP

  • Nạp vào board UNO:

a, Tool->Board-> chọn Arduino UNO

b, Tool -> serial port:-> Chọn cổng COM nối vào Arduino Uno

c, Tool-> Programer->chọn AvrISP

d, Control+U để Upload chương trình.

Có thể hiểu: Công đoạn này là chúng ta biến board Arduino Uno  thành một mạch nạp AVR.

  • Nạp boot loader

a, Vào Tool-> Board-> Chọn Arduino Pro or Promini (5V-16Mhz) Atmega328

b, Tool-> Programer-> Chọn Arduino as ISP

c, Tool -> Burn bootloader

Đợi tầm gần 1 phút và chương trình báo đã nạp xong.

Bắt đầu từ bây giờ chúng ta có thể sử dụng Arduino IDE lập trình và nạp vào Board của chúng ta thông qua RS232.

  • Chú ý: Trước khi nạp bootloader cần phải nối thạch anh ngoài 16MHz va tụ phù hợp từ 10p đến 22p (nếu nhầm thì... không biết thế nào)

Chapichuse

Đam mê công nghệ

You may also like...

4 Responses

  1. Tuấn viết:

    Mình sử dụng adruino r3 chíp dán nạp chíp atmega 328p hay nạp mạch adruino mini được không bạn, hay bắt buộc phải là mạch adruino r3 chíp chân cắm

  2. Tuấn viết:

    Chào bạn

  3. AnhBa viết:

    Chào bạn, nạp bootloader cho con nào cũng được bạn nhé. Có nhiều người nạp cho cả atmega8.

  4. Quang viết:

    E có thể nạp bootloader cho atmega8 chân dám không bác nhỉ

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *