ATtiny85. Làm cách nào để ghi bộ tải khởi động? Quy trình là gì?


8

Tôi muốn sử dụng tất cả sáu chân I / O của ATtiny85, điều đó có nghĩa là cũng sử dụng chân đặt lại làm chân I / O, tuy nhiên, tôi phát hiện ra rằng nếu tôi vô hiệu hóa chân RESET, tôi không còn có thể lập trình ATtiny bằng cách sử dụng Lập trình viên ISP.

Tuy nhiên, tôi phát hiện ra rằng có các bộ tải khởi động cho ATtiny, theo như tôi hiểu, cho phép tôi lập trình ATtiny thông qua USB, mà không cần đến pin RESET.

Câu hỏi của tôi là : Làm cách nào để ghi bộ tải khởi động như vậy (chẳng hạn như micronucleus ) vào ATtiny85? Và làm thế nào để tôi cần kết nối ATtiny với USB sau đó (như thế này? )? Làm thế nào để tôi lập trình nó sau đó? Hãy nhớ rằng về mặt đốt cháy bộ nạp khởi động và sửa đổi cầu chì, tôi là một người mới hoàn toàn.

Ngoài ra, tôi đang sử dụng bản phác thảo ArduinoISP với tư cách là lập trình viên ISP của tôi vì tôi không có lập trình viên ISP thực sự, nhưng theo như tôi đọc, đó sẽ không phải là vấn đề.

EDIT: Tôi có thứ này tôi đã mua với giá vài đô la trên eBay, mà tôi không biết làm thế nào và nếu tôi cần sử dụng: nhập mô tả hình ảnh ở đây


Ghi một bộ tải khởi động cũng giống như ghi bất kỳ chương trình nào khác. Nhưng, nếu bạn gặp lỗi xấu trong đó và thay đổi cầu chì đặt lại, bạn sẽ bị mắc kẹt cho đến khi bạn nhận được một con chip khác hoặc một lập trình viên điện áp cao. Vì vậy, tôi khuyên bạn nên kiểm tra bộ tải khởi động USB trước khi thay đổi cầu chì. Mã phần mềm-USB của bạn có thể đi kèm với một đề xuất cho một mạch để xấp xỉ giao diện điện USB.
Chris Stratton

Câu trả lời:


1

Tôi vừa hoàn thành Plugin Arduino của mình với sự tích hợp đầy đủ của TinySafeBoot (TSB) cho ATtiny84A, ATtiny85 và ATmega328P.

Dự án có thể được tìm thấy ở đây:
https://mesom.de/atflash/index_english.html https://mesom.de/atflash/tinysafeboot/index_english.html

Bạn có thể sử dụng nó như hiện tại, và sau đó sử dụng Pin Đặt lại làm thiết bị tương tự. Chỉ xem điện áp không bao giờ đi dưới đây 0.6 * VCC.

Để thay thế, bạn có thể sửa đổi các cầu chì boards.txtđể có sẵn pin này:
Truy cập Tùy chọn Arduino và nhấp vào liên kết đến preferences.txt(Mine /Users/stefan/Library/Arduino15/preferences.txt:). Trong thư mục này điều hướng đến /packages/atflash/hardware/avr/0.1.0. Mở boards.txtvà đi đến phần
ATTSB85.name=ATtiny85 (TSB)(Int. 8 MHz)

Thay đổi dòng
ATTSB85.bootloader.high_fuses=0xdf
thành
ATTSB85.bootloader.high_fuses=0x5f

Khởi động lại Arduino và ghi bootloader thông qua menu Arduino.


Nếu bạn thậm chí muốn nhận một Ghim khác từ ATtiny85: bạn có thể thay đổi bộ tải khởi động để chỉ sử dụng một Ghim cho RX và TX (xem trang web TSB). Nhưng tại sao tất cả nỗ lực? Đơn giản chỉ cần lấy ATtiny84A. Nó có 14 chân thay vì 8 và có giá gần như nhau.

Stefan


2
  • Có, có giao diện USB cho ATtiny85. Chỉ cần nhìn vào một trong những thiết kế phần cứng mở ngoài kia, ví dụ Digispark .
  • Một giao diện USB sẽ yêu cầu hai chân, vì vậy sử dụng một chân để lưu một chân không khiến tôi mất nhiều chi phí.
  • Tôi đồng ý với @FAD, rằng bạn không thực sự cần một ngăn xếp USB và chỉ đơn giản là có thể thực hiện việc trì hoãn thời gian với các chân UART.
  • HVSP (lập trình điện áp cao) không khó thực hiện. Nếu bạn đã cảm thấy thoải mái với ArduinoISP, bạn có thể thử ScratchMonkey , sử dụng cùng một cách tiếp cận (với nguồn điện 12 V và một bóng bán dẫn) để lập trình HVSP.

Giao diện USB có thể được tắt, ví dụ như với một jumper khi không lập trình hoặc có thể được sử dụng mà không can thiệp vào lập trình. Việc lập trình lại thường được thực hiện ngay sau khi thiết lập lại.
AMADANON Inc.

1

Đúng, nếu bạn sử dụng pin reset như IO thì bạn cần một lập trình viên đặc biệt mà tôi tin là cung cấp điện áp cao (12 v nếu tôi nhớ) hoặc đại loại như thếđể áp dụng nguồn 12 v cho pin đó để buộc nó vào chế độ lập trình sau đó lập trình bằng cách sử dụng một lập trình viên bình thường (hoặc một arduino khác). Tuy nhiên, những gì bạn đang tìm kiếm là một cái gì đó giống như những gì đang được thực hiện trong Arduino. Arduino được lập trình với bộ tải khởi động đặc biệt thông qua ISP, vì vậy khi bạn cấp nguồn cho vi điều khiển, bộ tải khởi động sẽ thực thi trước và trong vài mili giây sẽ kiểm tra các chân UART cho các hoạt động và nếu thấy có gì đó hợp lệ, nó sẽ chuyển sang chế độ lập trình. để đi qua UART (không phải ISP) và ghi nó vào vị trí chương trình, nếu không, bộ nạp khởi động sẽ chỉ đơn giản là thực thi mã cho chương trình hiện có nếu có.

Dưới đây là một lời giải thích đơn giản về cách thức hoạt động của nó: Giả sử kích thước flash của vi điều khiển của bạn là 1KB và bộ tải khởi động là 100B để chương trình của bạn có thể được lưu trữ tại vị trí 101B + và kích thước tối đa của nó là (1KB-100B). Vì vậy, khi bộ tải khởi động khởi động và không có kích hoạt trên các chân UART, nó sẽ nhảy đến vị trí chương trình của bạn (ở 101B) trong khi nếu phát hiện hoạt động lập trình, nó bắt đầu đọc mã mới và ghi đè lên đèn flash bắt đầu từ 101B (vì vậy nó đã thắng ' t hơn viết chính nó).

Và bạn sẽ cần USBASP để lập trình bộ nạp khởi động lần đầu tiên. Và bạn không lập trình ATtiny85 qua usb vì chip đó không hỗ trợ USB, tuy nhiên, bạn sử dụng USB / chip nối tiếp mô phỏng giao thức nối tiếp qua USB. Một số bộ vi điều khiển của Atmel đã được xây dựng trong hỗ trợ nối tiếp và một số khác có thể được thực hiện thông qua mô phỏng phần mềm.

  • Và như Chris đã đề xuất, đừng vô hiệu hóa pin thiết lập lại cho đến khi bạn kiểm tra và xác thực rằng bộ tải khởi động của bạn hoạt động.


@ IgnacioVazquez-Abrams, thật tuyệt, và đã có bộ tải khởi động được triển khai cùng với nó. Thông tin của tôi đã cũ rồi :). tuy nhiên, nó vẫn là một khái niệm tương tự nhưng giao tiếp trực tiếp với PC thay vì mô phỏng nối tiếp usb. Cảm ơn

Bạn cũng có thể ghi bộ tải khởi động vào ATtiny thông qua Arduino (UNO hoặc Equiv). Dưới đây là một số hướng dẫn: highlowtech.org/?p=1695 hoặc nếu bạn thích video: youtube.com/watch?v=qz-YMPY4_z0
Sourcery

Đây là một trang hay về lập trình ATtiny4 5 9 10 20 và 40 sử dụng SPI từ Arduino nên nó không phải là ATtiny85 nhưng tôi nghĩ nó có liên quan. Ngoài ra, một điều mà blog đề cập là nếu bạn sử dụng pin reset như I / O, tất cả những gì bạn cần là nguồn 12 v để kích hoạt chế độ lập trình và bạn vẫn có thể lập trình theo cách tương tự, vì vậy không có lập trình viên đặc biệt nào như tôi nghĩ trước đây. rácplusarduino.blogspot.com/p/attiny10
Fahad Alduraibi

@FAD, 4/5/9/10 là những quái thú hoàn toàn khác với ATtiny85. Đúng là họ nói cùng một giao thức lập trình (TPI) cho lập trình điện áp cao và điện áp thông thường, nhưng điều đó hoàn toàn KHÔNG đúng với bất kỳ vi điều khiển ATxxx nào khác.
microtherion

0

Tôi có thứ này tôi đã mua với giá vài đô la trên eBay, mà tôi không biết làm thế nào và nếu tôi cần sử dụng:

nó là vô cùng tốt hơn so với arduinoisp của bạn.

google avrdude / avrdudess.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.