Arduino IDE не будет использовать выбранный порт

Я пытаюсь запрограммировать ATtiny85 с помощью программатора AVRISP mkII (этот: https://www.amazon.de/dp/B00IYNAXUC/ref=cm_sw_r_sms_c_api_i_VXOWDb3H3N5ND) с помощью Arduino IDE (версия 1.8.10 в Ubuntu 18.10). Для ATtiny я установил https://github.com/damellis/attiny с помощью диспетчера плат, как это рекомендуется в бесчисленных учебники.

Теперь все распознается нормально, и я выбрал порт для программистов в IDE: /dev/ttyACM0.
Но когда я пытаюсь загрузить скетч, вместо этого IDE пытается передать usb в качестве порта для avrdude. Это видно только при включении подробного вывода: (пути сокращены)

/home/[...]/avrdude -C/home/[...]/avr/etc/avrdude.conf -v -pattiny85 -cstk500v2 -Pusb -Uflash:w:/tmp/arduino_build_728460/sketch.ino.hex:i 

avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "/home/[...]/avrdude.conf"
         User configuration file is "/home/[...]/.avrduderc"
         User configuration file does not exist or is not a regular file, skipping

         Using Port                    : usb
         Using Programmer              : stk500v2
avrdude: usbdev_open(): did not find any USB device "usb" (0x03eb:0x2104)

avrdude done.  Thank you.

usb даже нельзя выбрать в IDE!

Просто вставив команду avrdude (первая строка в приведенном выше выводе) в терминал и изменив usb на /dev/ttyACM0, программа идеально запрограммирует IC (но конечно, это довольно громоздкий обходной путь).

Кроме того, выбор другого программатора в среде IDE (например, AVR ISP, без mkII) заставляет его использовать правильный порт (но, конечно, это не сработает, так как это не тот программатор).

Я делаю что-то не так или это реальная ошибка в Arduino IDE?

, 👍6

Обсуждение

плюс за хорошо написанный вопрос, @jsotola

Вы удерживали кнопку Shift, когда нажимали загрузить?, @Coder_fox

@Coder_fox Я тоже так пробовал (загружать с помощью программатора, а не просто загружать), но, похоже, это не дало никакого эффекта., @Fii


2 ответа


1

Я бы сказал, что вы должны выбрать Arduino в качестве ISP Programmer. Не ISP mkII. Возможно, библиотека attiny board может поддерживать подключение к attiny dev boards через USB, если вы используете стандартный программатор. Но это всего лишь очень грубое предположение. Но выбор Arduino в качестве ISP является обязательным требованием.

Изменить:

Нет, вы не можете использовать Arduino в качестве ISP, если используете программатор STK500.

Инструмент Д. А. Меллиса предназначен для Arduino в качестве программиста.

Но если ваша работа связана с программированием, mkII — правильный инструмент. Вы должны выяснить, как IDE создает строку CLI для запуска avrdude.

Установленный вами инструмент содержит текстовый файл с именем platform.txt:

name=ATtiny Microcontrollers

tools.avrdude.path={runtime.tools.avrdude.path}
tools.avrdude.erase.params.verbose=-v -v -v -v
tools.avrdude.erase.params.quiet=-q -q
tools.avrdude.erase.pattern="{cmd.path}" "-C{config.path}" {erase.verbose} -p{build.mcu} -c{protocol} {program.extra_params} -e -Uefuse:w:{bootloader.extended_fuses}:m -Uhfuse:w:{bootloader.high_fuses}:m -Ulfuse:w:{bootloader.low_fuses}:m

tools.avrdude.bootloader.params.verbose=-v -v -v -v
tools.avrdude.bootloader.params.quiet=-q -q
tools.avrdude.bootloader.pattern="{cmd.path}" "-C{config.path}" {bootloader.verbose} -p{build.mcu} -c{protocol} {program.extra_params}

Я бы сказал, что запись tools.avrdude.bootloader.pattern делает свое дело. Особенно переменная {program.extra_params}. Вы должны выяснить, как IDE строит эту переменную. Одна из его опций должна быть -P<Port>. Но почему IDE использует значение usb для <port>?

Попробую узнать. Но у меня сейчас нет доступа к IDE. Если вы (или кто-то другой) найдете решение раньше меня, добавьте ответ и отметьте его как принятый, чтобы мне не нужно было продолжать расследование.

,

Я не пытаюсь использовать Arduino в качестве программатора. У меня есть этот: https://www.amazon.de/dp/B00IYNAXUC/ref=cm_sw_r_sms_c_api_i_VXOWDb3H3N5ND Мне действительно нужно выбирать Arduino?, @Fii

Вы не используете Arduino для программиста, как того требует документация, на которую вы нам указали. Это действительно интересная информация. ;-) Я бы добавил это к вопросу. Я отредактирую свой ответ., @Peter Paul Kiefer

Плохо, я думал, что AVRISP mkII было достаточно информации. Вопрос обновлен., @Fii

Ответ @EdgarBonet дает вам информацию, которую я искал., @Peter Paul Kiefer

И вы правы, AVRISP mkII должен был дать мне подсказку. Это была не твоя вина. Просто мне было лень думать. Но всегда полезно дать как можно больше информации, чтобы уберечь ленивых людей вроде меня от неправильных интерпретаций. ;-), @Peter Paul Kiefer


1

Вы имеете в виду, что программатор STK500 v2 использует эмулированный последовательный порт вместо прямого USB? Тогда я предполагаю, что в Arduino IDE есть ошибка. Файл programmers.txt содержит следующие строки описание программиста:

avrispmkii.name=AVRISP mkII
avrispmkii.communication=usb
avrispmkii.protocol=stk500v2
avrispmkii.program.protocol=stk500v2
avrispmkii.program.tool=avrdude
avrispmkii.program.extra_params=-Pusb

Вы можете найти этот файл в вашей установке Arduino и заменить последняя строка из этого фрагмента

avrispmkii.program.extra_params=-P{serial.port}

Если это сработает, было бы неплохо отправить запрос на вытягивание с исправить команде Arduino.

В качестве альтернативы вы можете попробовать выбрать «Плата для разработки Atmel STK500» в качестве программист. Это должно автоматически определять версию STK500. протокол и использует правильный последовательный порт.

Изменить: возможно, вам придется заменить

avrispmkii.communication=usb

от

avrispmkii.communication=serial

См. этот отчет об ошибке, который, кажется, охватывает именно ту проблему, с которой вы столкнулись. лицом.

,