Можно ли записать загрузчик на ATTiny85 с USB TTL и avrdude?
У меня есть:
- Клон Digispark (без загрузчика Arduino)
- Последовательное устройство USB -> TTL
- Макет разработки
- Аврдюде
Я хочу записать загрузчик micronucleus на чип.
Возможно ли это, есть ли инструкция?
Программатор ISP уже на месте, но я жду его не раньше, чем через 3 недели.
@Justin, 👍1
Обсуждение3 ответа
Короткий ответ: нет. Вы можете записать загрузчик на чип с помощью программатора, а затем загрузчик проделает магию последовательной связи, чтобы вы могли загружать свои скетчи через последовательный или даже низкоскоростной USB (если ваш загрузчик умеет делать USB bit-banging). Но записать загрузчик можно только через SPI.
Но SPI — это то, чего я пытаюсь добиться. USB в TTL — это последовательный. Смотрите pic.twitter.com/JboHA3qq6d, @Justin
Действительно, TTL (ну, UART в вашем случае, это чип USB-UART) — это последовательный протокол, но это не то же самое, что SPI. SPI — это синхронный последовательный протокол, что означает, что ему нужна линия синхронизации для синхронизации, поэтому для осуществления связи требуется 3 линии (SCK — линия синхронизации, управляемая ведущим устройством, MOSI — для передачи и MISO для приема). UART — это асинхронный последовательный протокол, поэтому ему требуется только 2 линии данных (RX для приема и TX для передачи), синхронизация и синхронизация выполняются как приемником, так и передатчиком., @Andrei Dragan
Да, как я и спрашивал, я вижу, что могу это сделать. Но мне нужно выломать как минимум еще 2 пина из PL2303. Сделаю это сегодня вечером и посмотрю, что получится., @Justin
Из спецификации чипа вы не можете этого сделать, у него есть последовательный интерфейс RS232 (это UART) и 2 контакта GPIO (вам понадобилось бы 3 контакта GPIO, если бы вы могли запрограммировать эту чертову штуку на бит-банг SPI, чего вы, вероятно, не можете). Зачем вы хотите изобрести лампочку? Купите ISP, он стоит 2 бакса или около того. Или, если у вас есть Arduino, используйте его как ISP., @Andrei Dragan
При всем уважении я думаю, что вы *сможете* сделать это, если выломаете дополнительные контакты PL2303. Ну, по крайней мере, из того, что я пока собрал. В ближайшие несколько дней я попробую это и дам вам знать, как это получится. Но да. ISP на почте., @Justin
Вы не можете запрограммировать свое оборудование только с помощью преобразователя USB в TTY, для этого теперь нужен программатор. Вместо того, чтобы покупать дорогие программаторы, вы можете купить плату Arduino и использовать ее в качестве ISP (системного программатора). Вот ссылка, описывающая весь процесс.
Adruino как ISP
В принципе это так; однако ряд *реальных* USB<>Serial чипов имеют дополнительные фирменные режимы, предлагающие *синхронную* последовательную связь, которую при наличии соответствующего программного обеспечения на хосте *можно* использовать для AVR ISP., @Chris Stratton
@ChrisStratton Не могли бы вы перечислить несколько/все такие чипы и «правильное программное обеспечение», если оно существует?, @jose can u c
Нет, вы не можете, потому что USB -> TTL последовательное устройство не создано для этого. Однако вы МОЖЕТЕ использовать Arduino Uno, чтобы записать загрузчик на другой микроконтроллер Atmel, включая Attiny85.
Теперь вы можете спросить, можно ли использовать Digispark вместо Uno (и таким образом сжигать больше чипов Attiny). Ответ — однозначно да. Другой Arduino может это сделать — поищите в Интернете и найдите множество примеров.
Вы можете (?) даже адаптировать этот эскиз из Uno для Digispark (сэкономив стоимость Uno). Я не могу дать дальнейших советов, а вы смотрите в кроличью нору возможных проблем.
Sparkfun продает чип, который может выполнять загрузку с использованием минимальных компонентов: https://learn.sparkfun.com/tutorials/how-to-install-an-attiny-bootloader-with-virtual-usb
- Можно ли подключить экран SD-карты к плате Digispark ATtiny85?
- Digispark ATtiny 85 - не распознается как HID устройство
- Клавиатура Digispark ATtiny85
- Digispark Atinny85 не распознан (проблема с загрузчиком)
- Digispark Micro (ATTINY85) не работает на Macbook Pro 2016 г.
- ATtiny85 - сообщает об ошибке «Устройство сообщает о версии как: 2.2»
- Как загрузить программу через последовательный порт на микроконтроллер tinyAVR-0/1 с поддержкой Optiboot_X с помощью командной строки?
- Текущее положение указателя мыши с Digispark attiny85
AFAIK... Нет. Интерфейс программирования требует, ну, программатора. Если у вас его нет, вы не сможете программировать. Поскольку микроконтроллеры, обычно используемые для arduino, могут "самопрограммироваться" (т. е. они могут изменять свои программы), вы можете написать программу, чтобы включить последовательный интерфейс и получить новую программу, которую затем вы можете записать и выполнить. Эта небольшая программа называется загрузчиком. Но без bl вы не сможете сделать эти вещи, так что, по крайней мере, bl должен быть запрограммирован с помощью программатора. Если вам удастся попросить кого-нибудь одолжить вам плату arduino, вы можете использовать ее для программирования ATTiny85 (поиск ArduinoISP), @frarugi87
Чтение спецификации attiny85, конечно, содержит инструкции по последовательной загрузке, но это сложно. Я ожидал, что avrdude будет иметь некоторые настройки bit bang для этого. Я читал некоторые хаки для платы ttl, которая выводит пин сброса, но я еще не пробовал это, @Justin
Эм, последовательная загрузка означает использование программного интерфейса spi, который используется программатором. Вы можете использовать плату USB-UART (плату TTL, о которой вы упомянули) даже без хаков (вам просто нужно "нажать" кнопку сброса - или сбросить ее любым другим способом - когда ide скажет "начала загрузка"). Но вам нужен загрузчик, @frarugi87
Да, я попробовал это с avrdude, настроенным на последовательный битбэнгинг., @Justin
Пробовал нажимать кнопку сброса несколько раз. Никогда не получалось. Всегда возвращал rc=1 Никакого ответа от платы. Все, кажется, говорит, что вам нужен SCK (синхронизация часов), но у TTL есть только 5v+ GND RX TX и 3v3+ Один из этих https://goo.gl/0IZAuH, @Justin
Чипы вот эти https://goo.gl/8nt2xY, @Justin
Попробую еще раз. SPI = программатор, TTL = UART. Оба "последовательные", но ваш TTL - это стандарт, известный как UART. UART без загрузчика не нужен, @frarugi87
Нет загрузчика. Но мы должны иметь возможность записать загрузчик в режиме spi, используя последовательный бит-банг, как я понимаю. Я подключил автоматический сброс к моему pl2303 pin 2. (Хитрая пайка) все еще не работает. Отклик всегда низкий, @Justin
Проверьте это. http://nerdralph.blogspot.co.nz/2014/05/pl-2303hx-bit-bang-avr-programmer.html, @Justin
Никогда этого не знал. Хорошо знать. В любом случае, да, он использует последовательный интерфейс как универсальный модуль ввода-вывода, вручную переключая контакты. Хорошо. Так ты подключил контакты, как он предложил? Я имею в виду reset->txd sck ->rts mosi->dtr miso->cts, затем добавьте новый программатор в файл avrdude.conf? Более того, какое выходное напряжение у PL2303 у вас? Это версия на 5 В или 3,3 В? В зависимости от этого, подключите +5 В или +3,3 В к Attiny VCC и, конечно, GND к GND. У вас будет шесть кабелей, соединяющих Attiny с программатором., @frarugi87
Ну, тут я как бы застрял. Насколько я понял из руководства, это противоречило этой конфигурации. См. таблицу ниже из руководства. Обратите внимание, что входящие и исходящие данные — это MOSI и MISO. и TX = сброс? Для меня это не имело смысла.
Таблица 20-10. Последовательное программирование сопоставления выводов Символ Контакты Ввод/вывод Описание MOSI PB0 I Последовательные данные в MISO PB1 O Последовательный выход данных Последовательные часы SCK PB2 I
См. http://www.atmel.com/images/atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_datasheet.pdf, @JustinПочему? TXD, RTS, DTR, CTS — это названия контактов для стандарта UART. Но они используют их как универсальные IO, так что название ничего не значит. Просто подключите их так, как предлагает блоггер, и внесите необходимые изменения..., @frarugi87
ок, круто. попробую., @Justin