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
18 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ả

Servo tester với attiny85 - Mạch kiểm tra lỗi servo

Servo là một loại động cơ thường được sử dụng trong robot hay trong các đồ chơi mô hình. Trên Cộng đồng Arduino Việt Nam đã có rất nhiều bài viết giới thiệu về servo và cách lập trình, sử dụng. Có nhiều cách để kiểm tra xem servo có còn làm việc hay không, trong bài viết này mình xin giới thiệu với các bạn mạch servo tester sử dụng AVR attiny85 để tạo xung.

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

Máy in 3D (phần 2 - Hiệu chỉnh phần mềm và sử dụng máy in)

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. Trong phần 1 mình đã chia sẻ với các bạn về quá trình dựng máy in 3d của mình, trong phần thứ 2 này mình xin tiếp tục chia sẻ với các bạn về phần lập trình code, hiệu chỉnh phần mềm và sử dụng máy in 3d.

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