Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Rozwiązano] USBasp nie może wgrać programu na atmege328p

28 Sie 2019 00:21 999 21
  • Poziom 6  
    Witam. Mam problem który jest już rozsławiony w internecie, a jednak dalej są problemy. Sprawa wygląda tak. Chcę wgrać bootloader na atmege328p, wykorzystuję do tego programator USBasp. Próbowałem podłączać według najprostszych schematów oraz tych z kwarcem 16MHz i kondensatorami. W programie Arduino IDE wybieram Arduino uno, lub nano oraz programator i wciskam wypal... Na programatorze mrugnie czerwona lampka po czym wyskakuje komunikat:
    Kod: Arduino_IDE
    Zaloguj się, aby zobaczyć kod

    Podłączałem już po kilka razy, zmieniałem przewody, taśmę. Założyłem zworkę SLOW SCK. Wkurzyłem się, zamówiłem nową atmegę i dalej to samo. Udało mi się programować attiny13a, która nie potrzebowała bootloadera.
    System: win 7
    Wersja arduino ide: 1.8.9
    Zainstalowałem sterownik libusb-win32 (v1.2.6.0) za pomocą programu Zadig.
    Pobrałem AVRDUDESS 2.8 które po wciśnięciu "detect" lub "Read" wywala podobny błąd:
    Kod: AVRDUDESS
    Zaloguj się, aby zobaczyć kod

    Zastanawiam się czy dobry jest sterownik, nie wiem czy libusb-win32 obsługuje atmege328p, nie znalazłem nic na ten temat. Co mogę jeszcze zrobić?
  • Poziom 31  
    W Arduino po założeniu zworki slowSCK musisz również wybrać programator USBASP (slow), a jak już atmega działa na pełnej prędkości podłączonego rezonatora to znowu na ten bez (slow).
    Tu na forum jest program AVRLAB++ do ściągnięcia, z nim działał mi programator USBASP wymagający przestawiania zworek nawet bez przestawiania już od 1MHz.
  • Poziom 6  
    USBasp nie może wgrać programu na atmege328p USBasp nie może wgrać programu na atmege328p USBasp nie może wgrać programu na atmege328p
    Nie ma czegoś takiego w arduino jak USBasp (slow). Pobrałem AVR Lab++ i po wciśnięciu Odczytaj AVR pojawia się taki sam komunikat: rc=-1
    Powiedz jaką miałeś wersję sterownika USBasp
  • Poziom 31  
    Ja mam podołączane do Arduino różne core do Attiny i nietypowych w Arduino AVR, widocznie gdzieś z nimi doszły te ustawienia, w sumie nie mieszczą się na ekranie FHD:
    USBasp nie może wgrać programu na atmege328p
    Aktualnie USBASP jest w zakładce "libusbK USB Devices > USBasp", testowałem trzy i jeden działał tylko z Arduino, drugi tylko z AVRLAB, trzeci z oboma, więc to pewnie ten zostawiłem. Ale pewności nie mam, ciągle coś zmieniam.
    Jeśli choć raz udało Ci się jednak wgrać bootloader to bez kwarcu już będziesz miał taki komunikat, na stykówce po prostu włóż go w odpowiednie piny bez kondensatorów, kondensatory czasem przeszkadzają w połączeniu z pojemnością styków, ewentualnie użyj jakieś 12p. Na stykówce nie dołączam kondensatorów i "u mnie działa".
  • Poziom 13  
    Cześć
    Na początek wyrzuć ten rezystor w Reset, do niczego Ci niepotrzebny, szczególnie przy programowaniu.
  • Poziom 6  
    No i co dalej?
  • Poziom 16  
    kaktus12121 napisał:
    Zainstalowałem sterownik libusb-win32 (v1.2.6.0) za pomocą programu Zadig.

    Zerknij proszę łaskawie na te trzy obrazki i wyciągnij wnioski Link
    Potem spróbuj czy udało by się Tobie znaleźć odpowiedź na Twoje pytania używając Elektrodowej wyszukiwarki :D

    Miłego dnia
  • Poziom 13  
    Jak już wyrzucisz ten rezystor to sprawdź połączenia, najlepiej miernikiem, i spróbuj zaprogramować. rc =-1 oznacza m.in. że jest kłopot z połączeniem programatora i mikrokontrolera. Sterowniki masz dobrze zainstalowane bo odzywa się avrdude.
  • Poziom 16  
    StaryVirus_e_Wiarus napisał:
    Sterowniki masz dobrze zainstalowane bo odzywa się avrdude.

    Twoja porada jest szkodliwa...
    USBasp nie może wgrać programu na atmege328p USBasp nie może wgrać programu na atmege328p
    Ten sam programator, nie odłączany nawet od USB...

    Z tym Zadigiem ludzie się mylą bo dla USBasp trzeba wybrać "libusbK (v3.0.7.0)", ale dla AVR ISP mkII należy wziać "WinUSB (v6.1.7600.16385)", albo nowe z paczki "driver-atmel-bundle".
    No i jeszcze mały hint - sterowniki od p.Kardasia z MkAVRcalculatora tez nie podchodzą pod Arduino (przynajmniej te z wersji 81).
  • Poziom 13  
    Wybaczcie, nie używam Arduino.
  • Poziom 16  
    Też prawie nie piszę nic w Arduino, ale używam płytek i czasem tym drętwym IDE przywracam oryginalny bootloader płytce...stąd wiem co w trawie piszczy z tymi programatorami :D
  • Pomocny post
    Poziom 31  
    Mając jakikolwiek sterownik da się jednak odczytać prawidłowo podłączony uC - używając po kolei Arduino, MK kalkulatora czy AVR LAB++. Z którymś, w końcu powinien pojawić się choćby komunikat, że wykryło inny uC niż spodziewany, MK w wersji demo wykrzyczy, że nie obsługuje tego uC. Co do wersji sterownika w W7 x64 mam te same obserwacje, można też podmienić AVRDUDE w Arduino na ten z AVR LAB++, jednak w jego konfiguracji nie było obsługi Atmega328PB.
  • Poziom 6  
    Próbowałem zamieniać te sterowniki, sprawdziłem również na win 10 Zadigiem jak i innymi z neta. W ogóle nie ma kontaktu. Może spróbuję ogarnąć arduino uno i podmienić atmege. Mam arduino mega
  • Poziom 6  
    Oooo Masz rację. Spróbuję
  • Poziom 36  
    Moderowany przez tmf:

    Część posta nie na temat usunąłem.


    Zainteresowany ta dyskusją próbowałem zasymulowac objawy twojego układu.
    Spostrzeżenia:
    Programator ten pracuje bez zarzutu i bez żadnej różnicy z obydwoma driverami:
    libusb K ver. 3.0.7.0
    oraz
    libusb-win32 ver.1.2.6.0
    Pondto, komunikację w róznych kombinacjach wytestowałem z Avrdudess, AVRlab ++

    Ponizej załaczam odpowiednie wynikowe prt.scr.
    USBasp nie może wgrać programu na atmege328p
    USBasp nie może wgrać programu na atmege328p
    a także Bascom odczytując zawartośc flash; na screen celowe przesunięcie (scroll) w rejon początku bootloadera.
    USBasp nie może wgrać programu na atmege328p
    We wszystkich testach ten sam processor z wgranym bootloaderem 'opti'; co mozna wnioskowac/potwierdzic po adresie jego początku na Prt/Scr. w Bascom.
    To wszystko co miałbym tu do dodania.
    Reszta jest we wszystkich postach powyżej.
    Szukaj, analizuj...

    e marcus
  • Poziom 6  
    kaczakat napisał:
    Skoro masz Arduino MEGA to możesz sprawdzić poprawność pracy swojego programatora.

    Podłączyłem arduino mega do usbasp. Zadziałało, ale tylko w komputerze. Odczytywało procesor, dało się wgrywać programy, chciałem też sprawdzić czy bootloader się wgra i się wgrał. Problem w tym że to wszystko działało się tylko w programie, bo po przesłaniu jakiegokolwiek programu arduino nie działało, lampki na płycie potwierdzają wgrywanie, ale nawet prosty blink nie powoduje zmiany stanu jakiegokolwiek pinu.
    Wgrywałem bootloader z AVRLAB++ oraz Arduino ide.
    Odłączyłem programator, prodłączyłem kabel usb. Teraz jak wgrywa program to mrugną delikatnie te diody od komunikacji i nawet nie idzie nic wgrać, nawet bootloadera

    Dodano po 24 [minuty]:

    Edit:
    Programatorem wgrałem bootloader z Arduino ide. Odłączyłem i podłączyłem kabel usb. Teraz programy się dobrze wgrywają.
    Tylko dalej nie mogę wgrać samego programu na arduino mega przez programator. Wyskakuje skończone wgrywanie, ale jednak nie wgrywa

    Dodano po 10 [minuty]:

    Jak wgrywam bootloader do arduino mega przez usbasp to działa. Ale jak już próbuję wgrać program przez uasbasp to tak jakby bootloader przestawał działać i muszę od nowa wgrywać boot..
  • Pomocny post
    Poziom 31  
    Bootloader jest kasowany przy każdym użyciu programatora do wgraniu programu, wygląda więc na to, że coś tam wgrywasz. Po każdym takim użyciu programatora musisz na nowo programatorem wgrać bootloader by znowu działało wgrywanie przez UART.
    Możesz wyeksportować skompilowany szkic i wgrać go zewnętrznym programem - np. AVR LAB++.
    Włącz sobie też pełne komunikaty podczas wgrywania (w opcjach Arduino IDE), przeciągnij dolne okno na większą część ekranu i wklej co tam wypluwa podczas wgrywania.
    Wgraj sobie przykładowy szkic drukujący coś na serial co 1s, oczywiście prędkość w kodzie i na terminalu muszą się zgadzać. To samo zrób używając bootloader i programatora.
  • Poziom 10  
    Brakuje zasilania części analogowej układu!
    ATmega328p wymaga podłączenia zasilania do pinów Vcc(7) i AVcc(20). Na zdjęciach pin AVcc nie jest zasilany.
    Zwykle pin AVcc zaleca się zasilać przez filtr (cewka L=10μH i kondensator C=100nF), ale przy samym wgrywaniu bootloadera, albo gdy nie chcesz korzystać z ADC (przetwornik analogowo-cyfrowy) możesz go po prostu spiąć razem z Vcc.
    Sprawdź szczegóły w specyfikacji (datasheet).
  • Poziom 6  
    Działa!!! Juchu... Nie wierzę. Przez ten problem straciłem dobre kilka miesięcy. Podłączyłem atmege najprościej jak można, bez podłączania AVCC.
    Ze zworką slow SCK. Znalazłem na forum po raz kolejny radę aby podłączyć rezonator 16MHz. Spróbowałem, tylko że nie chciało mi się szukać kondensatorów.
    Poprzednio podłączałem w ten sposób (wiem że tam jest napisane atmega 8):
    USBasp nie może wgrać programu na atmege328p
    Teraz podłączyłem tylko rezonator do pinu 9 i 10, bez kondensatorów i bez masy. Zadziałało przez program AVR Lab, Arduino IDE oraz SinaProg.
    Teraz pytanie czy można programem Avr lab zmienić oscylator na wewnętrzny?
  • Poziom 6  
    Działa!!! Juchu... Nie wierzę. Przez ten problem straciłem dobre kilka miesięcy. Podłączyłem atmege najprościej jak można, bez podłączania AVCC.
    Ze zworką slow SCK. Znalazłem na forum po raz kolejny radę aby podłączyć rezonator 16MHz. Spróbowałem, tylko że nie chciało mi się szukać kondensatorów.
    Poprzednio podłączałem w ten sposób (wiem że tam jest napisane atmega 8):
    USBasp nie może wgrać programu na atmege328p
    Teraz podłączyłem tylko rezonator do pinu 9 i 10, bez kondensatorów i bez masy. Zadziałało przez program AVR Lab, Arduino IDE oraz SinaProg.