duclinh84bk gửi vào
- 26646 lượt xem
Trong bài này mình Nêu ra 2 vấn đề là:
- Nạp bootloader, Arduino code cho dòng chíp thấp Atmega8/48/88 bằng Arduino IDE 1.8.7 (phương pháp đơn giản và tiện lợi nhất)
- Sử dụng chíp Atmega như một mạch Arduino hoàn chỉnh
Tiền đề
Sau khi đã hoàn chỉnh một dự án trên 1 board mach Arduino đôi khi lại muốn làm số lượng nhiều, thậm trí muốn thương mại hoá nó thì việc dùng nguyên 1 cái mạch arduino là không phù hợp và khá là "quê". Muốn pro hẳn thì làm trực tiếp trên MCU còn vẫn muốn dùng code và cả biển thư viện tiện lợi của Arduino thì mình xin hướng dẫn các bạn biến một chiếc Atmega thành một mạch arduino hoàn chỉnh. Thậm chí nếu sử dụng bộ dao động nội của Atmega thì bạn chẳng cần dùng thêm bất cứ 1 linh kiện nào khác ngoài con Atmega.
Trên Cộng đồng Arduino Việt Nam đã có hai bài hướng dẫn các bạn upload bootloader, và nạp code cho các dòng chíp Atemega, để hiểu rõ về bootloader các bạn tham khảo ở đây nhé:
- http://arduino.vn/bai-viet/831-bootloader-la-gi-va-cach-nap-bootloader-cho-atmega8-va-atmega328-de-chung-co-dung-duoc
- http://arduino.vn/bai-viet/734-lap-trinh-nap-bootloader-cho-chip-atmega8
Các phương pháp này đều dùng bản Arduino IDE đã cũ, 1.0.x (bản này mình còn ko chạy nổi trên win 10) và cách làm đỏi hỏi tháo tác chỉnh sửa trên file hệ thống (Board.txt). Bạn cũng không dễ để tùy chọn loại chip cũng như chọn tần số cho các chíp này. Nếu muốn chọn bạn phải tự tính toán và đặt Fuse trong Board.txt
Vậy nên ở đây mình giới thiệu 1 cách đơn giản hơn tiện lợi hơn.
Đặc điểm
- Áp dụng cho bản Arduino IDE mới nhất (mình đang dùng 1.8.7)
- Không cần chỉnh sửa các file hệ thống
- Hỗ trợ rất nhiều loại chip
- Tùy chọn loại chip, tần số xung (nội, ngoại) ngay trên menu của Arduino IDE
- Không bị lỗi vặt như các phương pháp cũ (ví dụ với phương pháp cũ mình add thư viện SoftwareSeirial cho chip Atmega8 là )
Mọi thông tin chi tiết các bạn có thể tham khảo giải pháp gốc của MiniCore ở đây:
https://github.com/MCUdude/MiniCore
Các dòng chíp hỗ trợ:
- ATmega8
- ATmega48
- ATmega88
- ATmega168
- ATmega328
* Tất cả các dòng (A, P, PA and PB)
Tần số hỗ trợ:
- 16 MHz external oscillator (default)
- 20 MHz external oscillator
- 18.432 MHz external oscillator *
- 12 MHz external oscillator
- 8 MHz external oscillator
- 8 MHz internal oscillator **
- 1 MHz internal oscillator
Mini Core dùng Bootloader là Optiboot cho các dòng Chíp bộ nhớ thấp nên phần Bootloader nạp vào chỉ khoảng 400B, và thời gian khởi động chíp cũng được tối ưu (gần như ngay lập tức)
Cài thư biện Board của MiniCore
- Mở Arduino IDE.
- Mở File > Preferences.
- Nhập URL này vào mục Additional Boards Manager URLs:
https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json
- Mở menu Tools > Board > Boards Manager... .
- Đợi platform index tải xong.
- Cuốn xuống dưới tìm mục MiniCore rồi nhấn vào.
- Click Install.
- Cài đặt xong thì đóng cái Boards Manager lại.
Vậy là bây giờ trong list Board của bạn, ở phần MiniCore đã có đủ các MCU Atmega dòng 8 bit rồi đấy.
Vậy là việc chính xong rồi đấy, đơn giản mà!
Nạp Bootloader và Arduino Code cho Chip Atmega
Bây giờ ta sẽ đấu mạch và upload bootloader cho các chip này (cái này mình nói lại cho các bạn đỡ phải tìm ở chỗ khác).
Ở đây mình sẽ lấy ví vụ về việc nạp Bootloader và Arduino Code cho chip Atmega8 dùng bộ giao động nội 8MHz. Với con chíp chỉ 15k này bạn có thể làm được ối việc hay ho rồi đấy!
Phương pháp dùng bo mạch chủ là Arduino Uno để nạp qua ISP.
Nạp bootloader
Bước 1: Lắp mạch như sau:
Bước 2: Nạp code arduino ISP cho mạch Aduino Uno
==> Ấn upload
Bước 3: Nạp bootloader cho chip Atmega8 chạy ở chế độ dùng thạch anh nội 8MHz
OK, vậy là nạp bootloader cho con Atmeag8 này xong rồi. Giờ chúng ta nạp code chương trình cho nó chạy thôi.
Nạp code cho Atmega thông qua board UNO
Giữ nguyên mạch đấu dây như bên trên, vẫn chọn board là Atmega8 như trên, mở chương trình cần nạp (nhỏ hơn 7680B nhé), thay vì ấn Upload như mọi khi thì bạn ấn "Upload Using Programmer"
Vậy là xong rồi nhé! giờ bạn cấp nguồn cho ẻm Atmega8 này là nó chạy như 1 con Arduino rồi,
Bên trên là cách nạp Chương Trình qua ISP, các bạn vẫn có thể nạp qua UART bình thường nhé, vì nó có bootloader rồi! (chém vậy chứ chưa thử).