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.