„Avrdude: stk500_getsync (): not in sync: resp = 0x00”, alias Some Dude Avr nie pozwoli mi przesłać mojego programu

98

Któregoś dnia stworzyłem niesamowity program i chciałem go załadować na moje Arduino. Po kliknięciu przycisku przesyłania pojawił się wredny koleś o imieniu avr i zatrzymał mnie, mówiąc:

avrdude: stk500_getsync (): not in sync: resp = 0x00

Wszystko chcę zrobić, to przesłać mój program, ale AVR nie pozwoli mi. Jest nawet niezrozumiały, więc czy ktoś może mi powiedzieć, co do cholery próbuje powiedzieć i jak się go pozbyć?


to znaczy:

Ilekroć próbuję załadować program do mojego Arduino, pojawia się następujący komunikat o błędzie:

avrdude: stk500_getsync (): not in sync: resp = 0x00

Co to znaczy i jak mogę to naprawić?

Facet z kapeluszem
źródło
4
Dość częsty komunikat o błędzie, nie zawsze
prosty
12
Niezły tytuł! Sam miałem ten błąd ...
TheDoctor
6
+1 za tytuł: D ... Naprawdę nienawidzę tego kolesia tak bardzo jak ty!
David Refoua
Spróbuj zainstalować sterownik (cp2102) dla arduino. To mi pomogło. Dzięki za poprzednie odpowiedzi ppl :-)
Ten post z czerwca 2018 r. Rozwiązał to dla mnie (pierwsza odpowiedź): arduino.stackexchange.com/questions/51729/…
Michael Sims

Odpowiedzi:

62

Jest to spowodowane ogólnym błędem połączenia między komputerem a Arduino i może wynikać z wielu różnych problemów.

Oto kilka prostych rzeczy, które często mogą naprawić ten błąd:

  • Odłącz i ponownie podłącz kabel USB.
  • Naciśnij przycisk resetowania na płycie.
  • Uruchom ponownie IDE Arduino.
  • Upewnij się, że wybierasz właściwą płytkę Tools ► Board ►, np. Jeśli używasz Duemilanove 328, wybierz ją zamiast Duemilanove 128. Tablica powinna powiedzieć, jaką wersję ma na mikroczipie.
  • Upewnij się, że wybrałeś odpowiedni port Tools ► Serial Port ►. Jednym ze sposobów ustalenia, który port jest włączony, jest wykonanie następujących kroków:
    1. Odłącz kabel USB.
    2. Przejdź do Tools ► Serial Port ►i sprawdź, które porty są na liście (np. COM4 COM5 COM14).
    3. Podłącz ponownie kabel USB.
    4. Wróć do Tools ► Serial Port ►i zobacz, który port się pojawił, którego wcześniej tam nie było.
  • Upewnij się, że cyfrowe styki 0 i 1 nie mają żadnych podłączonych części, w tym żadnych osłon.

Jeśli żadna z tych czynności nie zadziała, spróbuj wyodrębnić problem poprzez zamianę: wypróbuj inny komputer na tym samym arduino, wypróbuj inny arduino na tym samym komputerze i spróbuj użyć innego kabla USB.

Jeśli problem dotyczy komputera:

  • Sprawdź dwukrotnie wszystkie problemy związane z komputerem na powyższej liście „łatwych poprawek”.
  • Ponownie zainstaluj IDE.
  • Zainstaluj ponownie sterowniki.

Jeśli problem dotyczy Arduino:

  • Sprawdź dwukrotnie wszystkie problemy związane z forum na powyższej liście „łatwych poprawek”.
  • Upewnij się, że mikrokontroler jest prawidłowo osadzony.
  • Może być konieczne spalenie programu ładującego .
  • Wymień mikrokontroler, jeśli masz w pobliżu kolejny pod ręką.
  • Być może zamurowałeś swoje Arduino. Przepraszam :(
Facet z kapeluszem
źródło
3
Istnieją inne możliwe przyczyny. Mogłeś uszkodzić ATmega, mogłeś uszkodzić bootloader na ATmega, mógłbyś mieć problemy z zasilaniem lub mnóstwo innych możliwości. To not in sync: resp=0x00naprawdę ogólny komunikat „ATmega nie odpowiada”. Może to spowodować wszystko, co może spowodować, że ATmega nie zareaguje.
Connor Wolf
Czy mogę nigdy nie mieć niczego w 0 lub 1?
Tim
2
@Tim Możesz podłączyć rzeczy do tych pinów, ale musisz je odłączyć, jeśli chcesz komunikować się z Arduino za pomocą kabla USB.
Facet z kapeluszem
Ten błąd pojawił się na moim pierwszym Duemillanove lata temu. Był to martwy układ UART (lub połączenie z USB do układu UART). Bardzo frustrujące. Kupiłem programator AVR i spaliłem program ładujący. Kupiłem inny procesor z fabrycznie załadowanym programem ładującym. Dopiero gdy sprzedawca wysłał zamiennik, mogłem dołączyć do świata miłośników Arduino (a teraz mam dwa zapasowe procesory).
linhartr22
„Odłącz i podłącz ponownie kabel USB” działa dla mnie
Grace Shao
20

Kolejna poprawka:

Zmień Tools->Processor->Atmega 328Pna Atmega 328P (Old Bootloader). Przypomnij, że Processoropcja jest dostępna tylko wtedy, gdy wybierzesz określone tablice na Tools>Board.

Działa to dla mojego Arduino Nano z CH340, używając Arduino IDE 1.8.5 pod Linux Ubuntu 17.10. Poza tym prawdopodobnie tak się stanie, jeśli użyjesz IDE 1.8.9 lub nowszego i otrzymasz starego lub sklonowanego Nano.

aguadopd
źródło
3
To było rozwiązanie! Nowy bootloader wykorzystuje dwukrotnie prędkość transmisji (115200 zamiast 57600).
Suuuehgi
1
Twoja odpowiedź rozwiązuje mój problem. Dziękuję Ci!
Vladyslav Savchenko
12

Niestety może to również oznaczać spalenie mikrokontrolera. Czy robiłeś coś niebezpiecznego tuż przed próbą przesłania nowego szkicu? Czy mikrokontroler nadal działa z wcześniej załadowanym szkicem?

Ricardo
źródło
10

Jeśli żaden z powyższych kroków nie działa, spróbuj ponownie zainstalować Avrdude i kompilator avr-gcc. Musiałem to zrobić, gdy moja Mega zaczęła cierpieć z tego powodu.

Jeśli osobno zainstalowałeś Avrdude i avr-gcc, po prostu je odinstaluj. jeśli nie, może być konieczna ponowna instalacja Arduino IDE. Te kroki będą zależeć od systemu operacyjnego.

Doktor
źródło
Jest bardzo mało prawdopodobne, że problem zostanie spowodowany z powodu użycia łańcucha narzędzi. To jest zbyt ekstremalne, IMO.
asheeshr
3
To jedyny sposób, w jaki mogę rozwiązać mój problem
TheDoctor
O jakim procesie instalacji mówisz? Narzędzie edytora arduino zostało właśnie rozpakowane. Nie ma procesu instalacji.
Connor Wolf
9

Mam tę samą wiadomość. Za każdym razem, gdy został rozwiązany, wybierając odpowiedni port, tj. USB w menu Narzędzia, a następnie Porty. To prosty krok, ale zawsze zapominam. Odłączę Arduino, aby zatrzymać bieżący program, podłączę go ponownie do mojego komputera, aby załadować nowy program i uzyskać błąd, panikę, przekleństwo i tylko wtedy pamiętaj.

Gabe Ruiz
źródło
1
Myślę, że jest to najczęstsze rozwiązanie.
pisklęta
9

W moim przypadku nie podłączyłem styku RTS układu FTDI do kondensatora, który trafił do styku RST Arduino Pro Mini. Po zainstalowaniu tego połączenia nie otrzymałem już błędu i mogłem przesłać kod.

Nick Gammon wyjaśnia to na swoim forum . Dodałem zdjęcie, gdzie / jak należy umieścić kondensator. wprowadź opis zdjęcia tutaj

tr4nc3
źródło
+1 za ładny obraz podłączenia programatora USB bezpośrednio do układu atmega.
raddevus
Miałem też złe połączenia na mojej płycie, odłączyłem wszystko i przesłałem podstawowy szkic, który zadziałał. Teraz zastanów się, który kabel nie jest we właściwym miejscu
Seraf
5

Miałem dokładnie ten sam problem. Próbowałem zainstalować IDE na innym laptopie i załadowałem program z tego laptopa. Problem rozwiązany. Potem wróciłem do mojego laptopa, odinstalowałem IDE i ponownie go zainstalowałem .. zaczął działać.

Jednak nie byłem usatysfakcjonowany, ponieważ nie mogłem znaleźć źródła problemu ... więc próbowałem uruchomić wszystko ponownie dokładnie w ten sam sposób ... Znalazłem problem, ale nie jestem pewien, czy to może być jego faktyczna przyczyna .

W moim projekcie musiałem przeprowadzić szeregową komunikację między arduino i MATLAB (GUI). Aby zobaczyć / zweryfikować dane wyjściowe (typ) danych szeregowych MATLAB (GUI), użyłem HYPERTERMINALU, a także WIRTUALNEGO EMULATORA PORTU SZEREGOWEGO. Zauważyłem, że za każdym razem, gdy działa hiperterminal lub działa VSPE, gdy jest na nim mój monitor szeregowy, psuje to funkcję przesyłania programu. Nie jestem pewien, czy to z powodu VSPE czy HYPERTERMINAL, ale przeinstalowanie IDE działało dla mnie.

Hrdip
źródło
2
Jedna z linii Serial Control, myślę, że to DTR, służy do resetowania Arduino. Podczas próby zaprogramowania Arduino program terminalowy może zakłócać działanie.
linhartr22
Działa to dla mnie tylko wtedy, gdy usunąłem również folder Arduino Library, który zawiera wszystkie ustawienia i dodatkowe biblioteki.
Jethro
3

Dla osób używających Linux Mint odkryłem, że wybierając port „TTY SO” zamiast portu z etykietą „Arduino” zadziałałoby (nie mogę powiedzieć dokładnie, ponieważ nie mam tego komputera przed sobą) .

Następnym razem, gdy użyłem Arduino, znowu otrzymałem ten sam komunikat, więc wróciłem do portu „Arduino” i od tego czasu działa tak.

Nie jestem tak kompetentny technicznie jak reszta z was, więc nie mam pojęcia, dlaczego to działa ani na czym polega problem, ale działało, na czym mi zależy. Może to komuś się przyda.

Mikech
źródło
3

Odinstalowałem IDE i sterowniki itp., Zainstalowałem wszystko ponownie, a następnie uruchomiłem Arduino IDE jako administrator i ustawiłem na kompatybilność z Windows 7 (obecnie używam 10).

Zmieniłem też programator na AVR ISP (nie sądzę, żeby to miało znaczenie, ale i tak to zmieniłem).

Wszystko znów działa ... mam nadzieję, że może to pomóc komuś innemu.

dni
źródło
2

Niezwykły, ale często wymieniałem mikrokontrolery i dostałem ten błąd, gdy jeden nie był prawidłowo osadzony .. byłem w stanie spalić się kilka razy, ale myślę, że wyślizgnął się z powrotem - małe pchnięcie w tył ATMega328 naprawił to!

strach
źródło
1

Istnieje również możliwość niewłaściwego umieszczenia samego kontrolera w gnieździe Arduino. Może to być niebezpieczne dla kontrolera (który może zostać zapchany), ale w moim przypadku dał tylko błąd braku synchronizacji, uniemożliwiając mi przesłanie kodu.

Więc po prostu sprawdź, czy wycięcie na układzie scalonym jest we właściwym kierunku (możesz sprawdzić krzyżowo z obrazkami tablicy online). Wycięcie na kontrolerze Uno powinno wskazywać na krawędź płytki.

Arijit
źródło
1

Ten błąd też się pojawił. Po raz pierwszy użyłem nowej płyty Arduino Nano po tym, jak lutowałem na nagłówkach. Po prostu przywiązując szkic mrugnięcia, nic nie było podłączone do planszy.

Znalazłem niewielki brak lutu między pinami GROUND i RESET. Wybrałem go i mogłem przesłać ok.

Przypuszczam, że może się tak zdarzyć, gdybyś miał takie samo zwarcie w obwodzie.

Wilkie
źródło
1

Właśnie miałem ten sam błąd z zupełnie nowym Mini Pro. Ponieważ jest uruchomiony domyślny program migający, który został fabrycznie załadowany z większością Arduino, wiem, że urządzenie prawdopodobnie działa poprawnie.

Sprawdziłem więc nagłówki, które właśnie przylutowałem jeszcze raz, i stwierdziłem, że na pinach TX0 nie ma wystarczającej ilości lutu. Po ponownym lutowaniu wszystkie prace.

tst
źródło
1

Po wielu odłączeniach, sprawdzeniu portów, ponownym uruchomieniu IDE itp. Tingiem, który wydawał się mieć wpływ na naprawienie tego błędu w Arduino Mega 2560, było odinstalowanie sterownika Windows USB arduino, a następnie jego ponowna instalacja, użycie sterownika tutaj i wybranie go ręcznie z listy> porty com> arduino http://drivers.softpedia.com/get/Other-DRIVERS-TOOLS/Others/Arduino-Mega-2560-USB-Driver-1110-for-Windows-7-64-bit.shtml Mogę mieć przetestowałem to na moim urządzeniu uno, a następnie z powrotem do mega, więc istnieje niewielka szansa, że ​​rozmowa z urządzeniem uno sprawi, że AVRDUDE będzie szczęśliwy, ale mało prawdopodobny.

Hamish_Fernsby
źródło
1

Kiedy pojawia się problem z przesyłaniem na moje tablice, przesyłam inny program, taki jak przykład mrugnięcia. Wydaje się, że coś to zresetowało, a następnie mogę przesłać własny program (który jest dość duży).

Warto spróbować tego, aby sprawdzić, czy to działa w twoim przypadku, chociaż nie mam pojęcia, dlaczego to działa.

Jethro
źródło
jaka płyta i bootloader?
Juraj,
Arduino Nano, ATMega328P (nie stron trzecich). Wersja sprzętu: 2, wersja oprogramowania układowego: 1.16, sygnatura urządzenia to 0x1e950f Nie sprawdziłem bootloadera, ale są reklamowane jako „tradycyjny bootloader”
Jethro
więc twoja odpowiedź jest specyficzna dla starego bootloadera Nano
Juraj,
Dzięki! Spojrzę na bootloadery i spróbuję je zaktualizować. Czy masz jakieś informacje na temat tego błędu?
Jethro
1

Miałem podobny problem z moją tablicą Uno

avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x90

Wypróbowałem wiele metod

  • Naciśnij reset przed wysłaniem pakietów
  • różne wersje IDE
  • Zmień kabel
  • Zmień sam kontroler
  • Test sprzężenia zwrotnego

ale wszystkie powyższe zawiodły.

Używam Ubuntu 16.04.4 LTS 4.15.0-33-generic(podczas pisania tego komentarza). Moduł CDC ACM nie został załadowany, dlatego nie /dev/ttyACM0utworzono żadnego urządzenia do wyboruArduino IDE -> Tools -> Port

Dlatego pobierz nazwę modułu i załaduj go

$ lsusb 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 2341:0043 Arduino SA Uno R3 (CDC ACM)
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


$ sudo modprobe cdc-acm

Powyższe polecenie wstawi wymagany moduł. Teraz mogę wybrać odpowiedni port i załadować kod

Mam nadzieję, że spośród różnych rozwiązań to zadziałało.

Nowy Chethan
źródło
0

Rozwiązałem go, aktualizując tablice (w „menedżerze tablic”)

pablo
źródło
Czy masz Arduino Nano?
per1234
0

W przypadku niektórych kodów napotkałem dzisiaj ten sam problem i rozwiązałem go w następujący sposób:

1- Najpierw uruchomiłem podstawowy migający kod LED. Dał ten sam błąd. Potwierdza, że ​​błąd występuje podczas przesyłania i nie ma nic wspólnego z kompilacją. Sprawdziłem również, czy mój kod się kompiluje.

2- Wziąłem inną płytę, ale działała dobrze na tym komputerze. Oznacza to, że komputer i przewód USB są w porządku.

3- Podłączyłem wadliwą płytę do innego komputera i, co zaskakujące, nie wystąpił taki błąd podczas przesyłania. To dało mi wskazówkę na temat problemów ze sterownikiem w pierwszym komputerze.

4 - Więc odinstalowałem sterownik i ponownie zainstalowałem go na pierwszym komputerze, pobierając stąd

(upewnij się, że podczas instalowania sterownika z tego łącza utrzymujesz swoją płytę podłączoną do komputera)

Teraz działało dobrze :-)

gpuguy
źródło
0

Miałem ten błąd w moim laptopie Linux Mint 17.3 z Arduino Nano avrdude: stk500_getsync (): not in sync: resp = 0x00

Rozwiązany:

  • usunął wszystko, co miało w nazwie „arduino” lub „avr”
  • usunięto katalogi .arduino i .arduino15 (Uwaga kropka w nazwie)
  • usunięto wersję 1.8.7 z deinstalacją pakietu
  • apt-get install arduino (wersja 1.1.0)
  • przetestowane prostym szkicem (wszystko OK)
  • zainstalowana wersja 1.8.7 z instalacją pakietu
  • skompilowany.
  • wybrano ATmega328p (stary bootloader) dla procesora, Arduino Nano dla karty i / dev / ttyUSB0 dla portu => TO DZIAŁA!

Wygląda na to, że w tym przypadku podstępem był „stary program ładujący”. Mam teraz oba wersje 1.1.0 i 1.8.7, kogo to obchodzi.

Mistofeles
źródło
powinieneś najpierw przeczytać odpowiedź od aguadopd
Juraj