Jak naprawić błąd braku synchronizacji AVRdude podczas programowania Arduino za pomocą kabla USB-szeregowego?


9

Próbuję zbudować to oświetlenie Ambient na PC. Działa to bezbłędnie na moim Arduino Uno. Moim następnym krokiem było zrobienie go za pomocą „Arduino na desce do krojenia” . Kupiłem więc pusty układ ATmega328 i wypaliłem na nim bootloader Arduino (dla płyty „Arduino Duemilanove w / ATmega328”) za pomocą Arduino IDE i USBasp; i wiem, że został poprawnie załadowany, ponieważ ten układ ATmega działa dobrze na Uno.

Potem zrobiłem konwerter USB-na-szeregowy używając FT232RL ; ale jego sterowniki nie zostały zainstalowane na moim komputerze (Windows 7 x64). Podejrzewam, że przegrzałem układ FTDI do montażu powierzchniowego i zabiłem go podczas ręcznego lutowania.

Więc trzymałem go na boku i otrzymałem ten mostek konwertera USB-szeregowy: (Przepraszam za kiepskie zdjęcia) Użyłem dodatkowego ST232CN na mojej płytce ściennej, aby przekonwertować poziomy napięcia z RS232 na TTL, jak pokazano w tym strona . I to działa dobrze, jak zweryfikowałem z testu pętli zwrotnej. Podłączyłem styk 9 ​​ST232 do styku 2 ATmega i styk 10 do styku 3.

Gdy próbowałem przesłać przykład migania z Arduino IDE, pojawia się ten błąd:

Binary sketch size: 1026 bytes (of a 30720 byte maximum)
avrdude: stk500_getsync(): not in sync: resp=0x00

Kiedy wykonuję pełne przesyłanie (Shift + przesyłanie), pojawia się ten błąd / komunikat:

avrdude: usbdev_open(): did not find any USB device "usb"

Próbowałem też dodać 1k rezystorów podciągających na pinach 2 i 3 ATmega, ale to nie pomogło. Więc myślę, że problem jest teraz w komunikacji szeregowej z ST232 do ATmega? Czy jest jakieś specjalne połączenie ze stykiem resetowania ATmega? Podciągnąłem go do 5 V za pomocą rezystora 10k.


Pomocny byłby schemat i / lub obraz konfiguracji płyty breadboard.
— sptrks

3
Czy zresetowałeś układ scalony tuż przed, w tym samym czasie lub zaraz po poleceniu przesłania? Ilekroć pojawiał się błąd „brak synchronizacji”, był on związany z tym względnym czasem. W przypadku mojej płyty breadboard i Eclipse / AVRDude, uziemienie pinezki resetującej tuż przed lub po kliknięciu polecenia przesyłania jest właściwym czasem. Ale sprawdź także, czy komputer naprawdę widzi adapter po podłączeniu.
— JRobert

1
@potato_in_my_ear - Właściwym formatem opublikowania rozwiązania nie jest edycja, ale odpowiedź. Spójrz poniżej, a zobaczysz pole zatytułowane „Twoja odpowiedź”, w którym należy wpisać. Po wejściu ludzie będą głosować na twoją odpowiedź i możesz ją zaakceptować, naciskając znacznik wyboru po lewej stronie odpowiedzi.
— Kevin Vermeer

1
@potato_in_my_ear: Cieszę się, że pomogło. Jesteś dżentelmenem i uczonym - dam komentarz w odpowiedzi.
— JRobert

2
Rozwiązaniem jest, aby ludzie przestali udzielać odpowiedzi w komentarzach!
— Kevin Vermeer

Odpowiedzi:


6

Ilekroć pojawił się błąd „brak synchronizacji”, był on związany z brakiem czasu resetowania (lub całkowitym zapomnieniem resetowania!). W przypadku mojej płyty breadboard i Eclipse / AVRDude, odłączenie uziemienia szpilki resetującej tuż przed lub w tym samym czasie, kiedy klikam przycisk przesyłania, jest właściwym momentem. Sprawdź także, czy komputer naprawdę widzi adapter po podłączeniu.

Późniejsze tablice Arduino są budowane w celu resetowania przy każdym połączeniu szeregowym i programowo przez bootloader. W tym artykule na blogu opisano, jak to działa, a co ciekawsze, jak zhakować go na wcześniejszych forach. Jeśli nie chcesz, nie powinno być trudno postawić go na desce. Chip musi oczywiście mieć kompatybilny bootloader (który już umieściłeś w swoim). W przypadku makiet wykonuję taniec przycisku reset / kliknięcia myszą.


Znalazłem kogoś mówiącego, że możesz zachęcić łańcuch narzędzi avr do zresetowania, edytując avrdude.conf ; tutaj (w komentarzach). Ale nie jestem pewien, jak to zrobić. Możesz pomóc. Nienawidzę naciskać reset cały czas ...
— Anubis

Będzie to wymagało wsparcia sprzętowego na płycie Arduino lub płycie głównej, którą później wbudowały Aduino; sam kod nie może tego zrobić. Opiera się na kondensatorze od szeregowego DTR do resetu i resetowania pull-up. Jeśli masz starszą lub płytkę ścienną, musisz ją dodać. To pytanie EE StackEx i cytowany artykuł na blogu powinny wskazać właściwy kierunek.
— JRobert

2

Jak powiedział @JRobert w komentarzach, poprawne zadziałało uziemienie i nieuziemienie bolca zerującego ATmega. Uziemiaj pin resetowania ATmega po kliknięciu „Prześlij” i tak jak pokazuje „Przesyłanie”, nie uziemiaj go.


Właśnie dostałem arduino mini i wiedziałem, że muszę nacisnąć przycisk resetowania, aby przesłać kod, ale nie mogłem dowiedzieć się, kiedy !!! To zadziałało dla mnie. Dzięki.
— Sponge Bob

0

Miałem te same błędy, które widziałem opublikowane w kilku witrynach RE: Arduino komunikat „avrdude: stk500_getsync (): not in sync: resp = 0x00” lub podobny.

Odkryłem, że jeśli usunę wszystko, co jest załatane w D0 ([D0] DIGITAL pin Zero, najdalej od gniazd USB i zasilania, również czyta „RX”).

Wypróbowałem dwa różne komputery i dostałem te same błędy i odkryłem, że jeśli: 1- usunę drut z obwodu lub otworzę go do [D0] 2- prześlę do Arduino 3- ponownie załatam usunięty drut lub zamknę otwarty obwód do [ D0]

Ten błąd napotkałem tylko podczas przesyłania i to jest moje rozwiązanie. Na razie.

Mam nadzieję, że to pomoże.

Dobrze jest wreszcie przekazać społeczności użyteczne informacje!


1
Odpowiedź jest nieco niejasna: zdanie rozpoczynające się od „Odkryłem, że jeśli ...” jest niepełne, nie jestem pewien, co próbujesz tam powiedzieć. Edytuj, dziękuję.
— Anindo Ghosh,

Ta odpowiedź dotyczy konfliktu obwodów podłączonych do szeregowych pinów sprzętowych atmega.
— Chris Stratton,


-1

Aby naprawić błąd „avrdude: stk500_getsync (): not in sync: resp = 0x00”. Wystarczy zainstalować sterownik FTDI w wersji 2.8.24.0. Istnieją pewne problemy z nowym sterownikiem v2.8.28.0.


-1

Podczas przesyłania kodów z Arduino IDE na komputerze, wyciągnij pin RX karty Arduino 0. Dostaniesz kod sukcesu. Podłącz pin RX i spróbuj. Lub możesz umieścić (być może) RX bluetooth na RX Arduino, aby TX były ze sobą połączone.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.