Lập trình, nạp bootloader cho chip atmega8

I. Giới thiệu

Xin chào các bạn! Chắc chắn các bạn đã từng có những dự án nhỏ (ví dụ: làm đèn led trái tim, máy đo nhiệt độ với DHT11, đồng hồ với module RTC ...) yêu cầu không quá lớn về phần cứng và tiết kiệm chi phí. Có một cách rất hiệu quả đó là sử dụng các chip dòng attiny để thay thế cho mạch arduino đắt tiền. Tuy nhiên, đôi lúc bạn sẽ gặp nhiều khó khăn do hạn chế về số chân, dung lượng bộ nhớ, và arduino IDE không hỗ trợ đầy đủ các loại giao tiếp (SPI, I2C, ...) cho các chip attiny. Trong hoàn cảnh đó, chúng ta có thể nghĩ tới con chip rẻ tiền nhất trong dòng atmega đó là chip atmega8.

Đã có bài viết của bạn quocbao chia sẻ về cách nạp bootloader cho các dòng chip atmega tại bài viết Nạp bootloader cho vi điều khiển trên Arduino. Tuy nhiên, trong bài viết này mình xin chia sẻ với các bạn cách sử dụng chip atmega8 với chi phí thấp nhất - đó là sử dụng Atmega8 với thạch anh nội.

Các bạn phài dùng bản Arduino Classic 1.0.6 nhé! Bạn có thể tải về tại đây.

II. Phần cứng

  • Board arduino bất kì (đã có bootloader nhé). Mình dùng nano.
  • Chip atmega8 chưa có bootloader.
  • 1 đèn led
  • Test boarddây nối.
  • Module tạo nguồn 5V.

III. Tạo file bootloader cho chip atmega8 và cài đặt

Mình làm theo hướng dẫn ở link tiếng Nga này: http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik. Mình xin dịch một số bước quan trọng như thế này:

Bước 1: Tạo file bootloader cho chip atmega8

Bước 2: Sau khi ấn tạo file .HEX thì bạn sẽ được như hình này

Bạn nhấn vào chữ hex thì sẽ như thế này:

Bước 3: Bạn nhấn chuột phải chọn Download with IDM thì bạn sẽ tải về được file hex mà mình vừa tạo.

Bước 4: Cài đặt cho IDE

Bạn thêm đoạn code mà họ đã cho vào trong file boards.txt

a8_8MHz.name=atmega8 (8 MHz)

a8_8MHz.upload.protocol=arduino

a8_8MHz.upload.maximum_size=7680

a8_8MHz.upload.speed=115200

a8_8MHz.bootloader.low_fuses=0xa4

a8_8MHz.bootloader.high_fuses=0xdc

a8_8MHz.bootloader.path=optiboot

a8_8MHz.bootloader.file=a8_8MHz_a4_dc.hex

a8_8MHz.build.mcu=atmega8

a8_8MHz.build.f_cpu=8000000L

a8_8MHz.build.core=arduino

a8_8MHz.build.variant=standard

Bước 5: Copy file bootloader mà bạn vừa tải về vào thư mục \hardware\arduino\bootloaders\optiboot\

Copy file bootloader mà bạn vừa tải về vào thư mục \hardware\arduino\bootloaders\optiboot\

IV. Nạp bootloader cho chip

Mở IDE lên chạy sketch ArduinoISP (giống như trong hướng dẫn của bạn quocbao). (File > Examples > ArduinoISP).

Sau khi upload xong sketch ArduinoISP thì bạn chọn trong mục tools như hình:

Chọn cổng COM tương ứng.

Chọn programmer là Arduino as ISP

Mở tools chọn Burn bootloader chờ tới khi IDE báo upload xong là OK.

V. Nạp thử một chương trình để kiểm tra.


Mình không có USB-TTL hay UART, cũng không có Arduino chip cắm chân nên sau khi bootloader xong vẫn phải nạp qua các chân SPI của mạch NANO. Cách bạn có điều kiện thì kiểm tra lại.

Vì không thể kiểm tra theo cách trên nên mình sẽ kiểm tra theo cách của mình. Đầu tiên sẽ dùng 1 chip atmega8 chưa có bootloader để nạp code nháy 2 led (vẫn qua chân SPI của NANO). Sau đó nạp code này vào 1 chip atmega8 vừa bootloader xong (vẫn theo cổng SPI). So sánh kết quả chúng ta sẽ có sự khác biệt. Mình xin giải thích sự khác biệt như sau: trong trường hợp chưa có bootloader thì led nháy không đúng code bởi vì timer trong chip chưa hoạt động đúng. Ở trường hợp đã có bootloader thì led nháy đúng theo yêu cầu do đã timer đã được kích hoạt đúng.

VI. Kết luận

Vậy là chỉ với 1 con chip atmega8 (giá khoảng 25-30k) bạn đã có thể làm được nhiều dự án hay như khi dùng arduino rồi. Xin chúc các bạn nhiều thành công! Mình mong sẽ nhận được nhiều góp ý!

Những hình ảnh về dự án: 
Youtube: 
lên
17 thành viên đã đánh giá bài viết này hữu ích.
Các dự án được truyền cảm hứng

Select any filter and click on Apply to see results

Các bài viết cùng tác giả

Lập trình LCD 1602 với chip 74HC595

Xin chào các bạn! Các bạn đã làm quen với LCD 1602 ở bài viết "Điều khiển LCD bằng Arduino UNO". Mình xin chia sẻ với các bạn một cách khác để kết nối LCD này với board arduino, đó là sử dụng chip 74HC595. Để kết nối màn hình qua cách này chúng ta phải tốn 3 chân của arduino (nhiều hơn 1 chân so với dùng mạch I2C) nhưng chip 595 lại có giá thấp hơn modul I2C 5-10 lần (chỉ khoảng 1-2k VNĐ).devil

lên
14 thành viên đã đánh giá bài viết này hữu ích.

Máy in 3D (phần 1 - Dựng phần cứng)

Xin chào các bạn! Máy in 3D và công nghệ 3D đã rất phổ biến trên thế giới. Tại Việt Nam, công nghệ này cũng đang bắt phát triển nhanh. Hôm nay mình xin được chia sẻ với các bạn dự án máy in 3D của mình. Hãy cùng hoàn thiện nó với nhiệt huyết và sự tự tin nhé, vì cộng đồng Arduino Việt Nam là nơi sẽ đưa bạn đến thành công.

lên
33 thành viên đã đánh giá bài viết này hữu ích.