Mục lục:

Lập trình ATTiny85, ATTiny84 và ATMega328P: Arduino As ISP: 9 bước (có Hình ảnh)
Lập trình ATTiny85, ATTiny84 và ATMega328P: Arduino As ISP: 9 bước (có Hình ảnh)

Video: Lập trình ATTiny85, ATTiny84 và ATMega328P: Arduino As ISP: 9 bước (có Hình ảnh)

Video: Lập trình ATTiny85, ATTiny84 và ATMega328P: Arduino As ISP: 9 bước (có Hình ảnh)
Video: Programming the new ATtiny from Arduino using UPDI [Beginner Tutorial] 2024, Tháng mười một
Anonim
Lập trình ATTiny85, ATTiny84 và ATMega328P: Arduino As ISP
Lập trình ATTiny85, ATTiny84 và ATMega328P: Arduino As ISP
Lập trình ATTiny85, ATTiny84 và ATMega328P: Arduino As ISP
Lập trình ATTiny85, ATTiny84 và ATMega328P: Arduino As ISP

Lời tựa

Gần đây, tôi đang phát triển một vài dự án IoT dựa trên ESP8266 và nhận thấy bộ xử lý lõi đang gặp khó khăn trong việc thực hiện tất cả các tác vụ mà tôi cần nó để quản lý, vì vậy tôi quyết định phân phối một số hoạt động ít quan trọng hơn cho (các) bộ vi điều khiển khác trong theo cách này, giải phóng ESP8266 để bắt đầu công việc trở thành một thiết bị IoT.

Do tôi muốn xuất bản dự án của mình cho càng nhiều khán giả càng tốt, tôi đã chọn sử dụng Arduino IDE làm nền tảng phát triển được lựa chọn vì nó có một cộng đồng được hỗ trợ rộng rãi.

Các ràng buộc về thiết kế

Để cung cấp phạm vi hợp lý của các thiết bị mục tiêu cho phép lựa chọn một bộ vi điều khiển thích hợp cho ứng dụng trong tầm tay, tôi đã giải quyết các phần Atmel sau đây; ATMega328P, ATTiny84 và ATTiny85. Để hạn chế sự phức tạp của trình lập trình cần thiết, tôi đã hạn chế lựa chọn xung nhịp trong cho tất cả các thiết bị và 16MHz bên ngoài chỉ dành cho ATMega328P và ATTiny84.

Sau đây là tập hợp các ghi chú về lập trình với Arduino và mô tả về cách tôi kết hợp một lập trình viên đơn giản dựa trên Arduino Uno cho các thiết bị này (Ảnh trên).

Tôi cần những bộ phận nào?

Để xây dựng trình lập trình, bạn sẽ yêu cầu các phần sau

  1. 1 tắt Arduino Uno
  2. 2 tắt 28 chân cắm Zero Insertion Force (ZIF) DIP (để giữ ATMega328P, ATTiny85, ATTiny84)
  3. 1 lá chắn nguyên mẫu của Arduino (Tôi lấy ở đây;
  4. 2 đèn LED 5MM tắt
  5. 2 tắt điện trở 1K
  6. 1 tắt 10K điện trở
  7. 4 tắt tụ gốm 22pF
  8. 2 tinh thể 16MHz tắt
  9. 3 tắt tụ gốm 0,1uF
  10. 1 tắt Tụ điện 47uF
  11. 1 tắt Tụ điện 10uF
  12. Dây quấn có độ dài khác nhau.

Tôi cần phần mềm nào?

Arduino IDE 1.6.9

Tôi cần những kỹ năng gì?

  1. Kiến thức về Arduino IDE
  2. Một số kiến thức về điện tử và cách hàn
  3. Rất nhiều kỹ năng thủ công
  4. Một lòng kiên nhẫn và thị lực tốt

Các chủ đề được đề cập

  1. Giới thiệu chung về lập trình Vi điều khiển Atmel
  2. ISP hoặc Bootloader: Tất cả đều hơi khó hiểu
  3. Tổng quan về mạch
  4. Thiết lập lập trình viên của bạn
  5. Sử dụng lập trình Arduino ISP của bạn
  6. Phát triển mã trên hệ thống mục tiêu của bạn
  7. Gotchas
  8. Phần kết luận
  9. Tài liệu tham khảo được sử dụng

Tuyên bố từ chối trách nhiệm

Như mọi khi, bạn tự chịu rủi ro khi sử dụng các hướng dẫn này và chúng không được hỗ trợ

Bước 1: Giới thiệu chung về lập trình vi điều khiển Atmel

Giới thiệu chung về lập trình vi điều khiển Atmel
Giới thiệu chung về lập trình vi điều khiển Atmel
Giới thiệu chung về lập trình vi điều khiển Atmel
Giới thiệu chung về lập trình vi điều khiển Atmel
Giới thiệu chung về lập trình vi điều khiển Atmel
Giới thiệu chung về lập trình vi điều khiển Atmel

Có hai phương pháp có sẵn để lập trình vi điều khiển Atmel;

  1. Trong Lập trình Hệ thống (ISP),
  2. Tự lập trình (thông qua bộ nạp khởi động).

Phương pháp cũ (1) lập trình trực tiếp bộ vi điều khiển thông qua giao diện SPI sau lần đầu tiên đặt thiết bị vào trạng thái khởi tạo lại. Trừ khi có hướng dẫn khác, chương trình nguồn thực thi đã biên dịch được ghi vào thiết bị tăng dần vào bộ nhớ mã từ nơi nó được thực thi khi khởi động. Có nhiều thiết bị ISP có khả năng lập trình thiết bị Atmel, một vài trong số đó là (hình 1); AVRISPmkII, Atmel-ICE, Olimex AVR-ISP-MK2, Olimex AVR-ISP500. Hình 2 cho thấy cách thiết bị ISP kết nối với ATMega328P (ICSP được đánh dấu kỳ lạ) trên bảng Arduino Uno R3 (hình 3 đưa ra chân ISP). Nó cũng có thể lập trình vi điều khiển Atmel thông qua giao diện SPI của nó bằng cách sử dụng Arduino Uno làm ISP (hình 4), ở đây Uno đang được sử dụng để lập trình ATMega328P.

Phương pháp thứ hai (2) sử dụng một đoạn mã nhỏ được gọi là 'bộ nạp khởi động' thường trú trong bộ nhớ mã thực thi (thường bị khóa để ngăn việc tình cờ ghi đè pic 5). Mã này được thực thi đầu tiên khi bật nguồn hoặc thiết lập lại thiết bị và cho phép bộ vi điều khiển tự lập trình lại với mã mới nhận được qua một trong các giao diện của nó từ một nguồn bên ngoài. Phương thức bootloader được Arduino IDE sử dụng để lập trình lại Arduinos được ánh xạ dưới dạng cổng comm USB trên PC (Hoặc MAC, hộp Linux, v.v., hình 6) và trong trường hợp Arduino Uno giao tiếp với thiết bị Atmel thông qua nó. giao diện nối tiếp trên IC Chân 2 và 3 của ATMega328P. Ngoài ra, Arduino Uno (đã tháo bộ điều khiển micrô ATMega328P) có thể được sử dụng để lập trình ATMega328P thông qua phương thức bộ nạp khởi động hoạt động hiệu quả như một thiết bị chuyển đổi USB sang nối tiếp (hình 7).

Bộ chuyển đổi USB sang nối tiếp là gì?

Bộ chuyển đổi USB sang nối tiếp là một phần cứng cắm vào cổng USB PC của bạn và trông giống như cổng com nối tiếp (kế thừa từ thời trước khi máy tính sử dụng tiêu chuẩn giao tiếp nối tiếp được gọi là EIA-232, V24 hoặc RS232) cho phép bạn gửi và nhận dữ liệu nối tiếp ở cùng mức điện của vi điều khiển. Khi bạn chọn Công cụ -> Cổng -> COMx từ Arduino IDE, bạn đang kết nối / giao tiếp PC với Arduino.

Một thiết bị như thế này đôi khi được gọi là FTDI (hình 8, thực ra là tên thương hiệu) hoặc CH340G, v.v. USB để nối tiếp trên Arduino chưa đạt được thông qua IC ATMega16U2-MU (R) ZU4 như trong Sơ đồ Arduino phía dưới.

Để rõ ràng, hình 9 xác định hai thiết bị Atmel và các đầu nối ISP tương ứng của chúng trên Arduino Uno R3.

Lưu ý 1: Nếu bạn chọn mua thiết bị FTDI, hãy đảm bảo bạn mua từ người bán có uy tín vì đã có rất nhiều thiết bị giả mạo giá rẻ trên thị trường bị lỗi khi áp dụng bản cập nhật windows.

Đề xuất: