Pytanie:
Arduino IDE nie będzie używać wybranego portu
jmb
2019-11-06 05:06:53 UTC
view on stackexchange narkive permalink

Próbuję zaprogramować ATtiny85, używając programatora AVRISP mkII (ten: https://www.amazon.de/dp/B00IYNAXUC/ref=cm_sw_r_sms_c_api_i_VXOWDb3H3N5ND) z Arduino IDE (wersja 1.8.10 na Ubuntu 18.10). W przypadku ATtiny zainstalowałem https://github.com/damellis/attiny za pomocą menedżera płyty, zgodnie z niezliczonymi samouczkami.

Teraz wszystko wydaje się być rozpoznany dobrze i wybrałem port programisty w IDE: / dev / ttyACM0 .
Ale kiedy próbuję załadować szkic, IDE zamiast tego próbuje przekazać usb jako port do avrdude . Jest to widoczne tylko po włączeniu pełnego wyjścia: (ścieżki skrócone)

  /home/[...]/avrdude -C / home /[...]/ avr / etc / avrdude. conf -v -pattiny85 -cstk500v2 -Pusb -Uflash: w: /tmp/arduino_build_728460/sketch.ino.hex: i avrdude: Wersja 6.3-20190619 Copyright (c) 2000-2005 Brian Dean, http: //www.bdmicro. com / Copyright (c) 2007-2014 Joerg Wunsch Ogólnosystemowy plik konfiguracyjny to "/home/[...]/avrdude.conf" Plik konfiguracyjny użytkownika to "/home/[...]/.avrduderc" Plik konfiguracyjny użytkownika nie istnieje lub nie jest zwykłym plikiem, pomijam Użycie Port: usb Użycie programatora: stk500v2avrdude: usbdev_open (): nie znalazłem żadnego urządzenia USB "usb" (0x03eb: 0x2104) avrdude zrobione. Dziękuję.  

usb nie jest nawet portem do wyboru w IDE!

Po prostu wklejam polecenie avrdude (pierwsza linia w wyjście powyżej) do terminala i zmiana usb na / dev / ttyACM0 sprawia, że ​​programuje układ scalony doskonale (ale oczywiście jest to raczej kłopotliwe obejście).

Ponadto wybranie innego programatora w IDE (np. AVR ISP, bez mkII) powoduje, że używa on prawidłowego portu (ale oczywiście to nie zadziała, ponieważ jest to zły programator).

Czy robię coś źle, czy jest to rzeczywisty błąd w Arduino IDE?

zagłosuj za dobrze napisanym pytaniem
Czy przytrzymałeś przycisk Shift podczas klikania przesyłania?
@Coder_fox Też próbowałem (przesyłanie za pomocą programatora zamiast po prostu wysyłanie), ale nie wydawało się to mieć żadnego efektu.
Dwa odpowiedzi:
Edgar Bonet
2019-11-06 15:47:52 UTC
view on stackexchange narkive permalink

Masz na myśli, że programator STK500 v2 używa emulowanego portu szeregowego zamiast bezpośredniego USB? To chyba błąd w Arduino IDE. Plik programmers.txt zawiera następujące wiersze opisujące programistę:

  avrispmkii .name = AVRISP mkIIavrispmkii.communication = usbavrispmkii.protocol = stk500v2avrispmkii.program.protocol = stk500v2avrispmkii.program.tool = avrdudeavrispmkii.program.extra_params = -Pusb  

Twój plik w tym miejscu Zainstaluj Arduino i zamień ostatnią linię z tego fragmentu na

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

Jeśli to zadziała, będzie dobrym pomysłem będzie wysłanie żądania ściągnięcia z poprawką do zespołu Arduino.

Alternatywnie możesz spróbować wybrać jako programistę „Płytkę rozwojową Atmel STK500”. Ma to na celu automatyczne wykrycie wersji protokołu STK500 i użycie prawidłowego portu szeregowego.

Edycja : może być również konieczne zastąpienie

  avrispmkii.communication = usb  

by

  avrispmkii.communication = serial  

Cf ten raport o błędzie, który wydaje się dokładnie opisywać napotkany problem.

Peter Paul Kiefer
2019-11-06 15:03:00 UTC
view on stackexchange narkive permalink

Powiedziałbym, że jako programator ISP musisz wybrać Arduino. Nie ISP mkII. Być może biblioteka tablic Attiny poradzi sobie z połączeniem z płytami deweloperskimi attiny przez USB, jeśli używasz standardowego programatora. Ale to tylko bardzo zgrubne przypuszczenie. Ale wybranie Arduino jako ISP jest wymagane.

Edycja:

Nie, nie możesz używać Arduino jako ISP, jeśli używasz programatora STK500.

D. Narzędzie Mellisa jest przeznaczone dla Arduino jako programisty.

Ale jeśli obejście zajmuje się programowaniem, mkII jest właściwym narzędziem. Musisz dowiedzieć się, jak IDE tworzy ciąg CLI, aby uruchomić avrdude.

Zainstalowane narzędzie zawiera plik tekstowy o nazwie platform.txt :

  name = ATtiny Microcontrollerstools.avrdude.path = {runtime.tools.avrdude.path} tools.avrdude.erase.params.verbose = -v -v -v -vtools.avrdude. erase.params.quiet = -q -qtools.avrdude.erase.pattern = "{cmd.path}" "-C {config.path}" {erase.verbose} -p {build.mcu} -c {protokół} {program.extra_params} -e -Uefuse: w: {bootloader.extended_fuses}: m -Uhfuse: w: {bootloader.high_fuses}: m -Ulfuse: w: {bootloader.low_fuses}: mtools.avrdude.bootloader.params. verbose = -v -v -v -vtools.avrdude.bootloader.params.quiet = -q -qtools.avrdude.bootloader.pattern = "{cmd.path}" "-C {config.path}" {bootloader.verbose } -p {build.mcu} -c {protokół} {program.extra_params}  

Powiedziałbym, że wpis tools.avrdude.bootloader.pattern robi sztuczka. Szczególnie zmienna {program.extra_params} . Musisz dowiedzieć się, jak IDE buduje tę zmienną. Jedną z jego opcji musi być -P<Port> . Ale dlaczego IDE używa wartości usb dla <port> ?

Spróbuję się dowiedzieć. Ale w tej chwili nie mam dostępu do IDE. Jeśli Ty (lub ktoś inny) znajdziesz rozwiązanie przede mną, dodaj odpowiedź i oznacz ją jako zaakceptowaną, więc nie muszę dalej badać.

Nie próbuję używać Arduino jako programisty. Mam ten: https://www.amazon.de/dp/B00IYNAXUC/ref=cm_sw_r_sms_c_api_i_VXOWDb3H3N5ND Czy naprawdę muszę wybrać Arduino?
Nie używasz Arduino dla programisty, ponieważ dokumentacja, którą nam wskazałeś, wymaga. To naprawdę interesująca informacja. ;-) Dodałbym to do pytania. Zmienię odpowiedź.
Mój błąd, pomyślałem, że AVRISP mkII to wystarczająca informacja. Pytanie zostało zaktualizowane.
Odpowiedź @EdgarBonet zawiera informacje, których szukałem.
I masz rację, AVRISP mkII powinien był dać mi wskazówkę. To nie była twoja wina. Po prostu byłem zbyt leniwy, żeby myśleć. Ale zawsze dobrze jest podać jak najwięcej informacji, aby uchronić leniwych ludzi, takich jak ja, przed błędnymi interpretacjami. ;-)


To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 4.0, w ramach której jest rozpowszechniana.
Loading...