Nowe atmegi328p - problem z wgraniem bootloadera.
Nowe atmegi328p - problem z wgraniem bootloadera.
Wczoraj odebrałem dwie nowe ATmegi328P. Z tego, co mi wiadomo oryginalnie te konkretne sztuki są bez bootloadera. Podłączyłem jedną do USBasp, odpaliłem mkavrcalculator i poprawnie wykrył atmegę. Następnie posiłkowałem się poradnikiem z tego linku: arduino cc/en/Main/Standalone (na samym końcu sekcja "Time to burn!"), aby wypalic bootloader. Jednak Arduino IDE najwyraźniej odmawia współpracy, gdyz dostaję taki komunikat:
Próbowałem wgrać przykładowego "blinka", ale wtedy mam coś takiego:
Ponownie spróbowałem podłączyć się pod mkavrcalculator, ten jednak już nie wykrywa mikrokontrolera, ale wywala konsolę avrdude'a z błędami:
Również próbowałem włożyć kość do Arduino Uno, jednak też nie mogę jej nijak zaprogramować. Obie ATmegi są obecnie w tym samym stanie, próbowałem z dwoma. Co w takiej sytuacji można zrobić, by wypalić ten bootloader i móc ją programować? Serdeczne dzięki za wszelkie odpowiedzi :)Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
1. Sprawdź połączenia - jak źle podłączysz to wtedy taki błąd może się wyświetlić.
2. Daj kwarc 8Mhz lub 16MHz - mogą mieć ustawione fusebity na zewnętrzny kwarc i wtedy jeżeli nie masz kwarcu też takie coś z tego co pamiętam się pojawia :)
2. Daj kwarc 8Mhz lub 16MHz - mogą mieć ustawione fusebity na zewnętrzny kwarc i wtedy jeżeli nie masz kwarcu też takie coś z tego co pamiętam się pojawia :)
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Nie wgrywaj sketchów, zanim nie wgrasz bootloadera/fusebitów, bo w ten sposób możesz zablokować atmegę i nic już z nią nie zrobisz.
Jeśli chcesz używać atmegę osobno, do tego bez kwarcu, nie na płytce arduino, to nie możesz wgrywać bootloadera arduino uno (chodzi o niewłaściwe ustawienia fuse bitów). Możesz to zrobić tylko wtedy, kiedy zrobisz imitację płytki arduino, czyli podłączysz do atmegi kwarc 16Mhz i wgrywać będziesz programy przez przejściówkę FTDI FT232. W innym przypadku (wgrywanie przez usbasp) musisz przygotować arduino ide do wgrania bootloadera/programów pod atmegę328, tutaj masz instrukcję(tytuł programowanie atmeg za pomocą arduino, jednak przygotowanie arduino ide do programowania przez usbasp robi się w ten sam sposób): http://majsterkowo.pl/forum/programowan ... -t280.html
Jeśli masz na płytce usbasp zworkę slow, to musi byś zwarta na czas wgrywania bootloadera z arduino ide. Jeśli masz nowsze usbasp bez tej zworki, to nie wgrasz bootloadera przez arduino ide do "świeżej" atmegi, zanim w mkavrcalculator nie ustawisz odpowiednio fuse bitów (instrukcja http://majsterkowo.pl/forum/post20579.html#p20579).
Jeśli do atmegi będziesz wgrywał programy tylko przez usbasp, to później nie musisz wgrywać już bootloadera tak na prawdę, bo bootloader jest niezbędny tylko przy wgrywaniu przez przejściówkę FTDI. Fuse bity muszą być odpowiednio ustawione, a przy wgrywaniu bootloadera też są ustawiane.
Przygotuj arduino ide do atmegi (i tak musisz, żeby potem wgrywać programy przez usbasp), spróbuj wgrać bootloader, jeśli nie pójdzie, to ustaw fusebity przez mkavrcalculator z ustawioną niską prędkością:
http://forum.atnel.pl/_obrazki/o/54_24e ... 10da1e.jpg
(ta zaznaczona na zdjęciu powinna być dobra)
Po wgraniu odczytaj fuse bity, jeśli się zgadzają, to już możesz wgrywać sketche.
Ściągnij sobie arduino ide w wersji 1.0.5 albo 1.0.6. W nowszych wersjach programowanie atmeg nie działa.
Jeśli chcesz używać atmegę osobno, do tego bez kwarcu, nie na płytce arduino, to nie możesz wgrywać bootloadera arduino uno (chodzi o niewłaściwe ustawienia fuse bitów). Możesz to zrobić tylko wtedy, kiedy zrobisz imitację płytki arduino, czyli podłączysz do atmegi kwarc 16Mhz i wgrywać będziesz programy przez przejściówkę FTDI FT232. W innym przypadku (wgrywanie przez usbasp) musisz przygotować arduino ide do wgrania bootloadera/programów pod atmegę328, tutaj masz instrukcję(tytuł programowanie atmeg za pomocą arduino, jednak przygotowanie arduino ide do programowania przez usbasp robi się w ten sam sposób): http://majsterkowo.pl/forum/programowan ... -t280.html
Jeśli masz na płytce usbasp zworkę slow, to musi byś zwarta na czas wgrywania bootloadera z arduino ide. Jeśli masz nowsze usbasp bez tej zworki, to nie wgrasz bootloadera przez arduino ide do "świeżej" atmegi, zanim w mkavrcalculator nie ustawisz odpowiednio fuse bitów (instrukcja http://majsterkowo.pl/forum/post20579.html#p20579).
Jeśli do atmegi będziesz wgrywał programy tylko przez usbasp, to później nie musisz wgrywać już bootloadera tak na prawdę, bo bootloader jest niezbędny tylko przy wgrywaniu przez przejściówkę FTDI. Fuse bity muszą być odpowiednio ustawione, a przy wgrywaniu bootloadera też są ustawiane.
Przygotuj arduino ide do atmegi (i tak musisz, żeby potem wgrywać programy przez usbasp), spróbuj wgrać bootloader, jeśli nie pójdzie, to ustaw fusebity przez mkavrcalculator z ustawioną niską prędkością:
http://forum.atnel.pl/_obrazki/o/54_24e ... 10da1e.jpg
(ta zaznaczona na zdjęciu powinna być dobra)
Po wgraniu odczytaj fuse bity, jeśli się zgadzają, to już możesz wgrywać sketche.
Ściągnij sobie arduino ide w wersji 1.0.5 albo 1.0.6. W nowszych wersjach programowanie atmeg nie działa.
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
@dzasek
Dzięki za link. Spróbowałem wszystkiego, co w tym temacie napisano, ale nadal bez skutku. Nic się nie zmieniło.
@Arturr300
Połączenia sprawdzałem już minimum 5 razy, wszystko jest ok :)
Próbowałem z kwarcem i bez - nie robi różnicy.
@stiven
Na początku dziękuję za tak obszerną wypowiedź, dzięki której sporo sobie uporządkowałem.
Wyjaśnię jeszcze jedną kwestię. Te ATmegi chcę ustawić tak, aby chodziły wsadzone w Arduino Uno, nie osobno.
Arduino IDE mam już odpowiednio przygotowane zgodnie z Twoimi zaleceniami z linków.
Z tego, co zrozumiałem, teraz muszę wgrać bootloader do kości wybierając w Arduino:
Narzędzia -> Płytka -> ATmega328P @ 16 MHz
oraz
Narzędzia -> Programator -> USBasp
a następnie dać Wypal bootloader.
Mam taką wersję USBaspa: Gdzieś doczytałem, że aby spowolnić na nim zegar muszę zewrzeć zworkę oznaczoną JP3, zgadza się?
Prosiłbym o potwierdzenie mojego toku myślowego.
PS
Nie ma możliwości, żeby wgrać bootloader na atmegę, gdy ta będzie siedziała w arduino?
Dzięki za link. Spróbowałem wszystkiego, co w tym temacie napisano, ale nadal bez skutku. Nic się nie zmieniło.
@Arturr300
Połączenia sprawdzałem już minimum 5 razy, wszystko jest ok :)
Próbowałem z kwarcem i bez - nie robi różnicy.
@stiven
Na początku dziękuję za tak obszerną wypowiedź, dzięki której sporo sobie uporządkowałem.
Wyjaśnię jeszcze jedną kwestię. Te ATmegi chcę ustawić tak, aby chodziły wsadzone w Arduino Uno, nie osobno.
Arduino IDE mam już odpowiednio przygotowane zgodnie z Twoimi zaleceniami z linków.
Z tego, co zrozumiałem, teraz muszę wgrać bootloader do kości wybierając w Arduino:
Narzędzia -> Płytka -> ATmega328P @ 16 MHz
oraz
Narzędzia -> Programator -> USBasp
a następnie dać Wypal bootloader.
Mam taką wersję USBaspa: Gdzieś doczytałem, że aby spowolnić na nim zegar muszę zewrzeć zworkę oznaczoną JP3, zgadza się?
Prosiłbym o potwierdzenie mojego toku myślowego.
PS
Nie ma możliwości, żeby wgrać bootloader na atmegę, gdy ta będzie siedziała w arduino?
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Nie mogę ani odczytać ani wgrać fusebitów. Przy próbie wgrania za pomocą:stiven pisze: Przygotuj arduino ide do atmegi (i tak musisz, żeby potem wgrywać programy przez usbasp), spróbuj wgrać bootloader, jeśli nie pójdzie, to ustaw fusebity przez mkavrcalculator z ustawioną niską prędkością:
forum.atnel pl/_obrazki/o/54_24e95d4d60530abb52630d8d9010da1e.jpg
(ta zaznaczona na zdjęciu powinna być dobra)
Po wgraniu odczytaj fuse bity, jeśli się zgadzają, to już możesz wgrywać sketche.
avrdude -p atmega328p -c usbasp -P usb -B 8 -u -U lfuse:w:0xE1:m -U hfuse:w:0xD9:m -U efuse:w:0xFF:m
otrzumuję:
Kod: Zaznacz cały
avrdude: set SCK frequency to 93750 Hz
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
avrdude -c usbasp -p m328p -U hfuse:r:-:h -U lfuse:r:-:h
To dostałem:
Kod: Zaznacz cały
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Ustaw w mkavrcalculatorze fusebity dla arduino uno tu jest o nich mowa http://forum.arduino.cc/index.php?topic=71580.0 , poźniej włóż atmege do uno i wypal bootloader
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Tak, jak pisze dzasek, wgrywaj fusebity w mkavrcalculatorze, jak nie idzie na jednej prędkości, to sprawdzaj na innych. Jak na żadnej nie pójdzie, to sprawdź ze zworką na JP3.
Jak te atmegi maja być na płytce arduino, to w arduino ide wybierz arduino uno i wgraj bootloader. Jedno i drugie możesz robić na płytce arduino.
Możesz spróbować wgrać bootloader od razu przy zwartej zworce JP3, no ale jak nie pójdzie no to najpierw mkavrcalculator.
Jak te atmegi maja być na płytce arduino, to w arduino ide wybierz arduino uno i wgraj bootloader. Jedno i drugie możesz robić na płytce arduino.
Możesz spróbować wgrać bootloader od razu przy zwartej zworce JP3, no ale jak nie pójdzie no to najpierw mkavrcalculator.
Ostatnio zmieniony 3 lip 2015, 15:13 przez stiven, łącznie zmieniany 1 raz.
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
A skąd ty wziąłeś te ustawienia 0xE1 i 0xD9? Na pewno są złe, a jak źle ustawisz, to może się zablokować atmega.
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Nie, nie, próbowałem wgrać Low - 0xff, high - 0xde, ext - 0x05. Tak jak pisałem wyżej, nie mogę ich ustawić przy użyciu mkavrcalca, bo nie może odczytać atmegi. Jak klikam "Check connected AVR" po prawej stronie wyskakuje avrdude error a w konsoli pojawia się cały czas:
tylko, że zmieniają się prędkości w pierwszej linijce - wypróbowałem wszystkie, jakie na liście są dostępne.
To tyle, jeśli chodzi o USBasp (jak podłączam ATTiny85, którego akurat mam pod ręką, wszystko jest OK). Natomiast, jak wkładam kość do Arduino, jak chcę ustawić fusy mam:
Kod: Zaznacz cały
avrdude: set SCK frequency to 93750 Hz
avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
To tyle, jeśli chodzi o USBasp (jak podłączam ATTiny85, którego akurat mam pod ręką, wszystko jest OK). Natomiast, jak wkładam kość do Arduino, jak chcę ustawić fusy mam:
Kod: Zaznacz cały
avrdude: stk500_getsync(): not in sync: resp=0x00
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Ze zworką na JP3 to samo jest?
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Taa :( właśnie ją podlutowałem i te same błędy na wszystkich prędkościach. Z ciekawości odpiąłem uC i podłączyłem sam programator - błędy są te same, znaczy, że wgle nie ma połączenia z uC :/ Macie jeszcze jakieś pomysły?
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Pisałeś, że na początku mkavrcalculator wykrywał atmegi, teraz już nie, więc wygląda na to, że są zablokowane. Błędu jakiegoś specjalnego by nie było, właśnie taki, że nie ma odpowiedzi od mikrokontrolera.
Na przyszłość jak byś kupił nową atmegę328, to wystarczy, że włożysz do arduino i wgrasz bootloader arduino uno przy zwartej zworce JP3.
Na przyszłość jak byś kupił nową atmegę328, to wystarczy, że włożysz do arduino i wgrasz bootloader arduino uno przy zwartej zworce JP3.
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Właśnie myślę, że mogły się zablokować w momencie, gdy próbowałem wgrać bootloader na atmedze w arduino - ale bez zwartej zworki.
Następnym razem, to lepiej dopłacić 2 zł do kości z wgranym już bootloaderem :)
Czy są jeszcze jakieś szanse na odblokowanie obu kontrolerów? Czy tylko ewentualny FusebitDoctor, (którego i tak nie mam :P)? Trochę mi ich szkoda.
Następnym razem, to lepiej dopłacić 2 zł do kości z wgranym już bootloaderem :)
Czy są jeszcze jakieś szanse na odblokowanie obu kontrolerów? Czy tylko ewentualny FusebitDoctor, (którego i tak nie mam :P)? Trochę mi ich szkoda.
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
To się raczej nie stało przy wgrywaniu bootloadera bez zworki, to musiało byś przy czymś inny. Ja jak pierwszy raz wgrywałem bootloader to też bez zworki, potem gdzieś w internecie znalazłem, że trzeba ze zworką i mi poszło wtedy normalnie, trwa to wgrywanie wtedy około 5-10 minut.
Doświadczenia z ratowaniem zablokowanych atmeg nie mam, więc nic więcej nie dopowiem.
Uszkodziłeś atmegę w arduino, że potrzebujesz wymienić na nową?
Doświadczenia z ratowaniem zablokowanych atmeg nie mam, więc nic więcej nie dopowiem.
Uszkodziłeś atmegę w arduino, że potrzebujesz wymienić na nową?
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Nie, Atmegę z arduino około pół roku temu przeznaczyłem do projektu przeniesionego na polutowaną płytkę i tam on działa wyśmienicie, a teraz potrzebuję znów popracować z Arduino, więc zamówiłem ATmegi, z czego jedna miała być na zapas. Jak widać, niezbyt efektywnie to wyszło.
Czytałem wiele postów na innych forach, gdzie rzekomo znaleziono rozwiązanie, jak odblokować mikrokontrolery ze źle ustawionymi fusebitami. Kluczową rolę odgrywa podanie zewnętrznego zegara na nóżkę X1, lecz nie mam pojęcia, co to znaczy. Prosiłbym o wyjaśnienie lub wskazówki, w którym kierunku iść dalej. Być może dojdziemy do jakiegoś rozwiązania problemu.
Czytałem wiele postów na innych forach, gdzie rzekomo znaleziono rozwiązanie, jak odblokować mikrokontrolery ze źle ustawionymi fusebitami. Kluczową rolę odgrywa podanie zewnętrznego zegara na nóżkę X1, lecz nie mam pojęcia, co to znaczy. Prosiłbym o wyjaśnienie lub wskazówki, w którym kierunku iść dalej. Być może dojdziemy do jakiegoś rozwiązania problemu.
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
To jest dziwne, ja wiele razy wgrywałem bootloader na czyste atmegi i żadnej nie zepsułem całkowicie.
Przy rc = -1 zawsze pomagało danie/wyjęcie kwarcu 8 lub 16MHz (12 pewnie też zadziała) lub naprawienie połączeń (ale to już sprawdzałeś). Nie masz nic podłączonego do linii programatora (jakieś lcd itd)? Może coś żre dużo prądu i dlatego takie kwiatki się dzieją
Czy próba zmiany fusebitów była udana? Bo nie widzę informacji o tym
Przy rc = -1 zawsze pomagało danie/wyjęcie kwarcu 8 lub 16MHz (12 pewnie też zadziała) lub naprawienie połączeń (ale to już sprawdzałeś). Nie masz nic podłączonego do linii programatora (jakieś lcd itd)? Może coś żre dużo prądu i dlatego takie kwiatki się dzieją
Czy próba zmiany fusebitów była udana? Bo nie widzę informacji o tym
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Próbowałem z kwarcem 16 Mhz, bez skutku. W przyszłym tygodniu w sklepie kupię 8 i 12, może w ten sposób się uda. Nic nie podłączam przy programowaniu, tylko uC i ewentualnie kwarc. Fusebitów nie mogę zmienić, bo jak wspominałem, atmegi są nie wykrywane przez avrdude całkowicie.
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Kwarc 16MHz jest na płytce arduino.
Zamiast kwarcu, można też podłączyć generator RC.

Wzór na obliczenie wartości f = 1 / 3*R*C
Wszystko zależy od tego, jakie fuse bity są ustawione, a ja i tak nie umiem ich interpretować. Napisałeś wcześniej, że takie chciałeś ustawić, nieprawidłowe, chociaż potem napisałeś, że wcale takich nie ustawiałeś:
avrdude -p atmega328p -c usbasp -P usb -B 8 -u -U lfuse:w:0xE1:m -U hfuse:w:0xD9:m -U efuse:w:0xFF:m
Zamiast kwarcu, można też podłączyć generator RC.

Wzór na obliczenie wartości f = 1 / 3*R*C
Wszystko zależy od tego, jakie fuse bity są ustawione, a ja i tak nie umiem ich interpretować. Napisałeś wcześniej, że takie chciałeś ustawić, nieprawidłowe, chociaż potem napisałeś, że wcale takich nie ustawiałeś:
avrdude -p atmega328p -c usbasp -P usb -B 8 -u -U lfuse:w:0xE1:m -U hfuse:w:0xD9:m -U efuse:w:0xFF:m
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Dzieki za schemat. Spróbuję z tym generatorem. Faktycznie, tam się pomyliłem, za pierwszym razem źle wkleiłem komendę do posta. Prawidłowa się nie skopiowala z konsoli i wkleila się stara, także tych błędnych fusebitow nie ustawiłem. W zasadzie, to żadnych nie ustawiłem. Ciężko mi powiedzieć, jakie są aktualnie wgrane.
Re: Nowe atmegi328p - problem z wgraniem bootloadera.
Jak na razie nic nie wskórałem z tamtymi Atmegami, ale zamówiłem nowe z bootloaderem Arduino.
Pomyślałem, że ta informacja może się komuś przydać:
Pomyślałem, że ta informacja może się komuś przydać:
Informacje pobrane przez mkavrcalc.ATmega328P pracująca w Arduino Uno R3 ma następujące fusebity:
Low: 0x00; High: 0x80; Ext: 0xF8.