ATtiny85. Как мне записать загрузчик? Каков процесс?


8

Я хочу использовать все шесть выводов ввода / вывода ATtiny85, что означает также использование вывода сброса в качестве вывода ввода / вывода, однако я обнаружил, что если я отключу вывод RESET, я больше не могу программировать ATtiny, используя Интернет-программист

Однако я обнаружил, что есть загрузчики для ATtiny, которые, насколько я понимаю, позволяют мне программировать ATtiny через USB, без необходимости использования пина RESET.

Мой вопрос : как мне записать такой загрузчик (например, микроядро ) на ATtiny85? И как мне после этого подключить ATtiny к USB (как это? )? Как мне запрограммировать это после этого? Имейте в виду, что с точки зрения сжигания загрузчиков и модификации предохранителей, я полный новичок.

Кроме того, я использую эскиз ArduinoISP в качестве своего ISP-программиста, поскольку у меня нет настоящего ISP-программиста, но, насколько я понимаю, это не будет проблемой.

РЕДАКТИРОВАТЬ: у меня есть эта вещь, которую я купил за пару долларов на eBay, которую я не знаю, как и если мне нужно использовать: введите описание изображения здесь


Запись загрузчика аналогична записи любой другой программы. Но, если у вас там будет плохой и заменить предохранитель сброса, вы застрянете с ним, пока не получите другой чип или программист высокого напряжения. Поэтому я бы порекомендовал вам проверить ваш загрузчик USB перед заменой предохранителя. Ваш программный код USB, вероятно, поставляется с рекомендацией для схемы, приближающей электрический интерфейс USB.
Крис Страттон

Ответы:


1

Я только что закончил свой Arduino-плагин с полной интеграцией TinySafeBoot (TSB) для ATtiny84A, ATtiny85 и ATmega328P.

Проект можно найти здесь:
https://mesom.de/atflash/index_english.html https://mesom.de/atflash/tinysafeboot/index_english.html

Вы можете использовать его как есть, а затем использовать Reset Pin в качестве аналогового входа. Только следите за тем, чтобы напряжение никогда не падало 0.6 * VCC.

В качестве альтернативы вы можете изменить предохранители, boards.txtчтобы этот пин-код был доступен:
Перейдите в настройки Arduino и нажмите на ссылку preferences.txt(Mine:) /Users/stefan/Library/Arduino15/preferences.txt. В этой папке перейдите к /packages/atflash/hardware/avr/0.1.0. Откройте boards.txtи перейдите в раздел
ATTSB85.name=ATtiny85 (TSB)(Int. 8 MHz)

Измените строку
ATTSB85.bootloader.high_fuses=0xdf
на
ATTSB85.bootloader.high_fuses=0x5f

Перезапустите Arduino и запишите загрузчик через меню Arduino.


Если вы даже хотите получить еще один пин от ATtiny85: вы можете изменить загрузчик, чтобы использовать только один пин для RX и TX (см. Веб-сайт TSB). Но зачем все усилия? Просто возьмите ATtiny84A. Он имеет 14 контактов вместо 8 и стоит почти столько же.

Стефан


2
  • Да, есть интерфейсы USB для ATtiny85. Просто посмотрите на один из открытых аппаратных проектов, например, на Digispark .
  • Интерфейсу USB потребуется два контакта, поэтому использование одного для сохранения одного контакта не кажется мне экономически эффективным.
  • Я согласен с @FAD, что вам на самом деле не нужен USB-стек, и вы просто можете сделать задержку при загрузке с помощью контактов UART.
  • HVSP (программирование высокого напряжения) не сложно сделать. Если вы уже знакомы с ArduinoISP, вы можете попробовать ScratchMonkey , который использует тот же подход (с источником питания 12 В и одним транзистором) для программирования HVSP.

Интерфейс USB может быть отключен, например, с помощью перемычки, когда не программируется, или может быть использован для использования, которое не мешает программированию. Перепрограммирование обычно выполняется сразу после сброса.
AMADANON Inc.

1

Правда, если вы используете вывод сброса в качестве IO, то вам нужен специальный программист, который, как я считаю, обеспечивает высокое напряжение (12 В, если я помню) или что-то подобноеприменить источник 12 В к этому выводу, чтобы перевести его в режим программирования, затем запрограммировать с помощью обычного программатора (или другого arduino). Однако то, что вы ищете, это что-то вроде того, что делается в Arduino. Arduino запрограммирован с помощью специального загрузчика через ISP, поэтому при включении микроконтроллера этот загрузчик будет запускаться первым и в течение нескольких миллисекунд будет проверять контакты UART на активность, и если он обнаружит что-то действительное, он переключится в режим программирования, где он ожидает нового кода пройти через UART (не ISP) и записать это в расположение программы, иначе загрузчик просто передаст выполнение кода существующей программе, если таковая имеется.

Вот простое объяснение того, как это работает: допустим, размер флэш-памяти вашего микроконтроллера составляет 1 КБ, а загрузчик - 100 Б, поэтому ваша программа может храниться в папке 101B +, ​​а ее максимальный размер (1 КБ-100 Б). Таким образом, когда запускается загрузчик и нет активности на выводах UART, он переходит к месту вашей программы (на 101B), в то время как при обнаружении активности программирования он начинает читать новый код и перезаписывает флэш-память, начинающуюся с 101B (так что он выиграл '). переписывай сам).

И вам понадобится USBASP для программирования загрузчика в первый раз. И вы не программируете ATtiny85 через USB, поскольку этот чип не поддерживает USB, однако вы используете USB / последовательный чип / модуль, который эмулирует последовательный протокол через USB. Некоторые микроконтроллеры Atmel имеют встроенную последовательную поддержку, а другие могут быть реализованы с помощью программной эмуляции.

  • И, как предложил Крис, не отключайте вывод сброса, пока не протестируете и не убедитесь, что ваш загрузчик работает.


@ IgnacioVazquez-Abrams, это круто, и уже есть встроенные загрузчики. Моя информация была довольно старой тогда :). однако, это все та же концепция, но прямая связь с ПК вместо последовательной эмуляции usb. Спасибо

Вы также можете записать загрузчик на ATtiny через Arduino (UNO или эквивалент). Вот несколько инструкций: highlowtech.org/?p=1695 или, если вы предпочитаете видео: youtube.com/watch?v=qz-YMPY4_z0
Sourcery

Вот хорошая страница о программировании ATtiny4 5 9 10 20 и 40 с использованием SPI от Arduino, так что это не ATtiny85, но я думал, что это связано. Кроме того, в блоге упоминается, что, если вы используете вывод сброса в качестве ввода / вывода, все, что вам нужно, это источник 12 В для запуска режима программирования, и вы все равно можете программировать его так же, так что никакого специального программиста, как я думал раньше junkplusarduino.blogspot.com/p/attiny10-resources.html
Фахад Алдураиби

@FAD, 4/5/9/10 совершенно разные звери от ATtiny85. Это правда, что они говорят на одном и том же протоколе программирования (TPI) для программирования высокого напряжения и обычного напряжения, но это категорически НЕ верно для любого другого микроконтроллера ATxxx.
микротерион

0

У меня есть эта вещь, которую я купил за пару долларов на eBay, которую я не знаю, как и нужно ли мне использовать:

это бесконечно лучше, чем ваш arduinoisp.

Google Avrdude / Avrdudess.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.