Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Leonardo ATmega32u4 nie mozna wgrać- bootloadera

kiss39 28 Dec 2019 23:19 3711 65
  • #1
    kiss39
    Level 38  
    Witam.

    Podłączyłem do Leonardo ATmega32u4 przez ICSP(6PIN ) Programator USBasp i w programie PROGISP (ver1.27) zle cos zaznaczyłem. Teraz nie moge załadowąć w środowisko Arduino IDE programu i wypalić bootloadera do Leonardo.

    Podłączając kabel mikroUSB (oddzielnie) jak i programator USBaps świecą się diody LED "ON" oraz "L"
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera Leonardo ATmega32u4 nie mozna wgrać- bootloadera

    Błąd przy wgrywaniu bootloadera
    Quote:
    Arduino:1.6.7 (Windows 7), Płytka:"Arduino Leonardo"

    avrdude: warning: cannot set sck period. please check for usbasp firmware update.
    avrdude: error: program enable: target doesn't answer. 1
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    Do you have a problem with Arduino? Ask question. Visit our forum Arduino.
  • Helpful post
    #2
    kaczakat
    Level 34  
    Jak coś źle zaznaczyłeś to np. zmieniłeś źródło taktowania na generator i z kwarcem już nie zadziała. Najpierw postaraj się przypomnieć, co mu ustawiłeś, z tabelek dojdź jak jest ustawiony uC i ewentualnie podłącz sobie generator (to najczęstsza przyczyna). Jeśli mocno obniżyłeś taktowanie można dodać parametr "- B 6", możesz użyć dostępnego tu na forum programu "AVR LAB++", domyślnie odczytuje uC z bardzo niską prędkością i jeśli tylko tyle to powinien odczytać i móc ustawić inny dzielnik dla zegara.
  • Helpful post
    #4
    kaczakat
    Level 34  
    Jeśli masz wolny inny prosty uC Atmega lub Attiny to możesz podłączyć go do zablokowanego procka, w programie ustawić na jakimś pinie wysoki/niski (ten pin podłączasz do XTAL1) i zrobisz sobie generator. Są też tu na forum porady w tematach "zablokowana atmega" jak zrobić sobie generator mając garść elementów pasywnych. Opis odblokowania jest np. tu: https://www.elektroda.pl/rtvforum/topic508366.html (digitalWrite 0 i 1 też działa napisane w Arduino - sprawdzałem kiedyś u siebie). Gdzie masz pin XTAL1 znajdziesz w PDF do tego uC.
    Od tego bym zaczął, ale nie ma gwarancji co tam ustawiłeś. Są też programatory podające sygnał zegarowy. Z tego co wiem, nie da się zablokować na amen procka programatorem USBASP. Wlutowanie innego to ostateczność. Można też odłożyć na półkę i poczekać do chwili, aż będziesz miał więcej umiejętności, tymczasem zamówić jakiegoś klona na Allegro (NANO/UNO/LEONARDO to 10-25zł) i bawić się dalej.
  • Helpful post
    #5
    StaryVirus_e_Wiarus
    Level 21  
    Cześć
    Komunikat "rc=-1" występuje często przy złych połączeniach programatora z mikrokontrolerem. Zacznij może od sprawdzenia połączeń.
  • #6
    kiss39
    Level 38  
    Witam.

    StaryVirus_e_Wiarus wrote:
    Komunikat "rc=-1" występuje często przy złych połączeniach programatora z mikrokontrolerem. Zacznij może od sprawdzenia połączeń.
    Programator i połączenia są dobre, bo mam Arduino Micro Pro tez na ATmedze32u4 i bootloader sie wgrywa "Wypal bootloader" w środowisku Arduino IDE 1.7.11. Wyczytałem, ze mozna wgrać bootloader przy pomocy Arduino UNO (ATmega328) lub ATmega 2560 i kodu "ArduinoISP"

    Arduino IDE >> ArdionoISP
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera

    Pewnie mozna wgrac "bootloander do Leonardo przy uzyciu Arduino Miro Pro tylko trzeba zmienić oznaczenia PIN w kodzie programu ArduinoISP

    Znalezłem artykuły:
    Arduino jako ISP czyli jak wgrać bootloader w ATmega
    Arduino UNO as ISP - burn bootloader on Arduino Pro Micro
  • Helpful post
    #7
    kaczakat
    Level 34  
    Zmiana programatora na inny tak samo ISP nic Ci nie da, jeśli ten jak napisałeś jest sprawny i przetestowany z innym uC. uC ustawiony na kwarc lub wewnętrzny oscylator po prostu by się ładni przedstawiał w każdym ISP.
    Zobacz tu: https://www.elektroda.pl/rtvforum/topic3516592.html, w poście #4 jest opisany sygnał zegarowy na pinie 9, wgrywasz taki wsad, podpinasz 9 do Xtal1 i (GND oczywiście też wspólne) i ponawiasz próbę ze swoim programatorem, potrzebny jest inny uC z 32u4 - Leonardo lub Micro. Oczywiście to tylko jak ustawiłeś zewnętrzny sygnał zegarowy, ale od czegoś trzeba zacząć... Jak coś bardziej zamieszane to rozwiązanie znajdziesz tu: https://www.elektroda.pl/rtvforum/topic1716521.html.
  • #8
    kiss39
    Level 38  
    Witam.

    Podłączyłem tak jak w opisie post #4 info. https://www.elektroda.pl/rtvforum/topic3516592.html

    kaczakat wrote:

    Może nie tak tani, ale chyba najprostszy jest wg mnie programator klon MKII zrobiony z klona Arduino MICRO z Atmega32u4. Bierzesz tego MICRO (3$) dwa rezystory 10k (opcjonalnie, jak chcesz by AS odczytywało napięcie układu programowanego, robi się dzielnik miedzy GND i VCC targetu do pinu A0, a jak nie to można spiąć A0 z VCC Micro, żeby AS się nie pluł), parę kabelków, wgrywasz hexa z załącznika i programator MK2 SPI gotowy (sprawdzony w AS 6.2, 7, Arduino z AVRDUDE 6.3, AVR LAB++). Reset idzie z pinu 8 MICRO, reszta to zwykłe SPI/ISP (MOSI, MISO, SCK z pinów 16, 14 i 15) zgodnie ze schematem Arduino MICRO. Miałem kiedyś zainstalowanego klona MK2, więc po włączeniu Arduino Micro z tym softem od razu wykrył znane urządzenie. Binarka jest przeróbką z projektu LUFA. Dodatkowo nie potrzebujesz żadnego innego programatora do zaprogramowania. W załączniku jest AVRDUDE i plik bat, a Micro przylatuje z bootloaderem. Po resecie przez 6-8 sekund zmienia port na inny COM do wgrywania softu. Trzeba sprawdzić jaki to i podmienić w pliku "start.bat" numerek, znowu zresetować, odpalić bat i gotowe.


    Leonardo ATmega32u4 nie mozna wgrać- bootloadera Leonardo ATmega32u4 nie mozna wgrać- bootloadera


    Zmieniłem w pliku start.bat port na PCOM19 oraz wrzuciłem bootloader "leo_atmega32u4.hex" i dopisałem ścieżkę.

    Leonardo ATmega32u4 nie mozna wgrać- bootloadera


    Podłączyłem Leonardo do Micro PRO
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera Leonardo ATmega32u4 nie mozna wgrać- bootloadera



    Otrzymałem
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera
  • #9
    kaczakat
    Level 34  
    Nie jestem pewien co obrazuje wrzucone przez Ciebie fotki. Pierwszy krok to zrobienie sobie programatora MKII.
    Do Arduino Micro wgrywasz wsad.
    Nie musisz tego robić z poziomu bootloadera skoro masz programator USBASP, podłączasz mu piny MOSI, MISO, SCK, RST, VCC i GND i wgrywasz hexa leo_atmega32u4.hex (wcześniej robisz po prostu odczyt przez AVR LAB++ by potwierdzić poprawność podłączenia, czy wykrywa prawidłowo uC). Potem musi Ci to wykryć jako programator gdy podłączasz pod USB, sterowniki można znaleźć w necie lub automatycznie wgra je Atmel Studio:
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera
    Po tym zabiegu bootloader znika, do ponownego wypalenia z wykorzystaniem USBASP to będzie programator AVRISP MKII klon zamiast Arduino MICRO.
    Można to zrobić nie mając programatora bootloaderem, ale zauważ, że po podłączeniu USB MICRO masz przez kilka sekund port powiedzmy COM18, potem on znika i pojawia się inny, powiedzmy COM25. Wgrać powinieneś na COM18 (numeracja oczywiście będzie indywidualna, zależy co tam już podpinałeś). Nic w tym czasie nie powinno być podłączone do MICRO, tylko kabel USB. Przygotowujesz linijkę do wgrania, podłączasz MICRO, gdy pojawi się port COM odpalasz linijkę tak by w czasie tych kilku sekund program nawiązał komunikację i wgrał wsad. Zwróć uwagę czy trzeba podłączyć, czy zrobić reset płytki, tak by pojawiły się oba porty COM.
    Jak już raz wgrasz wsad ta funkcjonalność znika, nie ma żadnego portu COM, albo nieznane urządzenie (brak driverów) albo AVRISP MKII.
    Jak już masz widoczny w systemie programator AVRISP MKII to jego wybierasz w programie AVR LAB++ i nim próbujesz odczytać uC, oczywiście to nic nowego nie wniesie dopóki nie podłączysz pinu 9 z sygnałem zegarowym do Xtal1 pacjenta. Pojawia się więc dodatkowe połączenie między płytkami, nie masz tego na fotce, więc nie wiem na jakim etapie jesteś?
    Oczywiście inną, sprawną płytkę Arduino, czy sam uC powinieneś odczytywać takim programatorem wykorzystując piny MOSI, MISO, SCK, RST, VCC i GND - warto sprawdzić czy stworzony programator działa OK.
  • #10
    kiss39
    Level 38  
    To rozumiem to tak, ze kable piny MOSI, MISO, SCK, RST, VCC i GND z MICRO Pro umieszczam we wtyku 6PIN Programatora USBasp i wgrywam przy pomocy "avrdude" plik leo_atmega32u4.hex

    A następnie programator USBasp powinien zniknąć z Menadżera urzadzeń jako "USBasp" i wgrac plik AVRISP-MKII2.hex czy zle rozumiem ?
  • Helpful post
    #11
    Slawek K.
    Level 35  
    Podłącz jak piszesz, pobierz AVR LAB++ (np. z forum), uruchom, daj zakładkę Bootloader i postępuj po kolei jak na ekranie. Jeżeli wszystko pójdzie ok, wgrasz odpowiedni bootloader.
  • #12
    kiss39
    Level 38  
    Zatrzymuje sie wrywanie na 88% pliku leo_atmega32u4.hex do Programatora USBaps (Leonardo Micro Pro >>> Programator USBaps)

    Leonardo ATmega32u4 nie mozna wgrać- bootloadera


    Zle!! tu jest wgrywanie z MICRO Pro do Programatora pliku leo_atmega32u4.hex a powinno byc odwrotnie ..:)

    Dodano po 49 [minuty]:

    Wrzuciłem do katalogu AVRLab++ >> bootloaders plik AVRISP-MKII2.hex, aby wgrać do Micro pro i nie mam w programie do wyboru.
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera Leonardo ATmega32u4 nie mozna wgrać- bootloadera
  • Helpful post
    #13
    Slawek K.
    Level 35  
    Masz programator USBasp czy nie ? Bo sie chyba pogubiłem gdyż piszesz coś o Micro Pro.

    Pozdr
  • #15
    kaczakat
    Level 34  
    Trochę mieszasz. Nie musisz wgrywać bootloadera do sprawnego Arduino, ono go ma. Nie musisz wgrywać bootloadera do uszkodzonego Arduino, możesz wgrać cokolwiek, np. hex ze skompilowanym blinkiem, tylko po to by zobaczyć, że działa wgrywanie po podaniu sygnału zegarowego z zewnątrz, a właściwie to chodzi o to by mu ustawić docelowo prawidłowe fusebity - oryginalne MICRO LF:FF HF:D8 EF:CB . Proponowałem zrobienie programatora z Arduino Micro po to by mieć sygnał zegarowy z pinu 9, ale można go zrobić na wiele innych sposobów, np. napisać program, który ustawia na wybranym pinie stan 1 i potem o razu 0.
  • #16
    kiss39
    Level 38  
    kaczakat wrote:
    Proponowałem zrobienie programatora z Arduino Micro po to by mieć sygnał zegarowy z pinu 9, ale można go zrobić na wiele innych sposobów, np. napisać program, który ustawia na wybranym pinie stan 1 i potem o razu 0.
    Cos zaczyna trybic moze nie cos, a ja i udało się wgrac do Arduino Miro Pro wsad "AVRISP-MKII2.hex"


    Leonardo ATmega32u4 nie mozna wgrać- bootloadera Leonardo ATmega32u4 nie mozna wgrać- bootloadera Leonardo ATmega32u4 nie mozna wgrać- bootloadera

    Teraz następny etap czyli to :
    kaczakat wrote:
    Jak już masz widoczny w systemie programator AVRISP MKII to jego wybierasz w programie AVR LAB++ i nim próbujesz odczytać uC, oczywiście to nic nowego nie wniesie dopóki nie podłączysz pinu 9 z sygnałem zegarowym do Xtal1 pacjenta. Pojawia się więc dodatkowe połączenie między płytkami, nie masz tego na fotce, więc nie wiem na jakim etapie jesteś?
    Oczywiście inną, sprawną płytkę Arduino, czy sam uC powinieneś odczytywać takim programatorem wykorzystując piny MOSI, MISO, SCK, RST, VCC i GND - warto sprawdzić czy stworzony programator działa OK.


    Dodano po 6 [godziny] 31 [minuty]:

    kaczakat wrote:
    Oczywiście inną, sprawną płytkę Arduino, czy sam uC powinieneś odczytywać takim programatorem wykorzystując piny MOSI, MISO, SCK, RST, VCC i GND - warto sprawdzić czy stworzony programator działa OK.


    Podłączyłem drugie (nowe)sprawne na 100% Arduino Miro Pro do programatora AVRISP MKII (klon-Micro Pro) i nie mogę odczytać, a może robie cos zle?

    Sprawdzilem dwie opcje :

    Leonardo ATmega32u4 nie mozna wgrać- bootloadera
  • #17
    kaczakat
    Level 34  
    To zależy jak podłączasz. Często ludzie robią sobie programator z Arduino i potem podłączają RST do RST, co oczywiście nie zadziała. Z programatora wyprowadzasz sygnały z pinów 8, 14, 15,16, GND i VCC, podłączasz je do pinów MOSI, MISO, SCK, RST i GND, VCC. W programach mogą być różne opcje do MKII, ale wybierasz tylko te do MKII, zapominasz o USBASP, to zupełnie co innego (druga fotka).
  • #18
    kiss39
    Level 38  
    kaczakat wrote:
    Z programatora wyprowadzasz sygnały z pinów 8, 14, 15,16, GND i VCC, podłączasz je do pinów MOSI, MISO, SCK, RST i GND, VCC.
    Tak tez właśnie podłączyłem z 8PIN do RST. A jeszczę są inne programy z możliwością wybrania AVRISP MKII to jest pytanie, bo ten AVRLab++ nie chcę odczytac z podanych pinów 8,15,14,16 i VCC,GND micro Pro ATmega32u4 ?
  • #19
    kaczakat
    Level 34  
    Ten programator MKII został napisany dla płytki Arduino głównie z potrzeby używania takiego w Atmel Studio >=V6, gdzie nie działa wprost najtańszy programator - USBASP (można go dodać jako zewnętrzne narzędzie). W Atmel Studio przy okazji odczytuje napięcie VCC z tego dzielnika rezystorowego. W Arduino IDE też mogę wybrać ten programator, wgrać nim bootloader czy szkic używając opcji z menu "Wgraj używając programatora", w tym czasie musi być wskazany MKII.
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera
    U mnie jest też wersja SLOW, gdy zegar jest ustawiony poniżej 4MHz.
    Wszystkie te "programy" to tak na prawdę nakładki na AVRDUDE, wysyłają do niego odpowiednią linijkę polecenia i on robi co trzeba. Można sobie to samemu wklepać w linię poleceń. Oczywiście Atmel Studio robi to po swojemu.
    To raczej nie jest problem programu AVR LAB ++, bardziej "kabelkologia", stykówki i kabelki rodzą dodatkowe problemy, bardziej tu bym szukał.
  • #20
    kiss39
    Level 38  
    Chyba będę musiał kupić programator AVRISP MKII, bo klon AVRISP MKII (Micro Pro) n ie chce zadziać (odczytać z pinów drugiego Micro Pro). Myślę nad opcją kupienia programatora AVRISP MKII i mikrokontrolera (sam CHIP) ATmega 328 i to sprawdzić.
  • #21
    kaczakat
    Level 34  
    Oryginał nie ma wyjścia zegarowego do napędzania uC, ma oczywiści pin SCK, ale to nie jest do taktowania uC. Sama zamiana USBASP na MKII nic tu nie wnosi, a jak masz problem z tym MICRO jako MKII to po prostu możesz wykorzystać jego wyjście zegarowe i USBASP (wspólny GND oczywiście). Zabawa ze SLOW SCK polega na tym, że komunikacja nie może odbywać się z częstotliwością taktowania zegara, gdy uC jest taktowany XMHz to prędkość programowania powinna być mniejsze niż X/4 MHz.
  • #22
    kiss39
    Level 38  
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera

    info. https://tosiek.pl/usbasp-v2-0-warning-cannot-set-sck-period/

    Szukałem na temat "SLOW SCK" i w moim programatorze USBasp są tego typu piny "JP3 – Slow SCK"- czyli do spowalnianie zegara "JP3 – Slow SCK – Jumper on only if the target clock is lower than 1.5 MHz."

    To może za trybic podłączając w taki sposób np. podłączyć programator USBaps do Leonardo ATmega32u4 , a jedn PIN SCK z ICSP " do pinu SCK SLOW (JP3) z programatorem USBasp. Jaki programem odczytać lub wgrać?
  • Helpful post
    #23
    emarcus
    Level 38  
    kiss39 wrote:


    info. https://tosiek.pl/usbasp-v2-0-warning-cannot-set-sck-period/

    Szukałem na temat "SLOW SCK" i w moim programatorze USBasp są tego typu piny "JP3 – Slow SCK"- czyli do spowalnianie zegara "JP3 – Slow SCK – Jumper on only if the target clock is lower than 1.5 MHz."

    To może za trybic podłączając w taki sposób np. podłączyć programator USBaps do Leonardo ATmega32u4 , a jedn PIN SCK z ICSP " do pinu SCK SLOW (JP3) z programatorem USBasp. Jaki programem odczytać lub wgrać?


    Troche błędnie to pojmujesz. W twoim programatorze te miejsca pod piny JP3 nie spełniają żadnej funkcji.
    To tylko ‘legacy’ (spuścizna) po oryginalnej wersji pytki tego programatora.
    Funkcja ta została zmieniona i zaimplementowana w firmware jako automatyczne spowalniania transmisji pomiędzy komputerem a programowanym processorem jeżeli to jest wymagane.
    Z tego powodu te piny nie zostały wlutowane do plytki.
    Jeżeli jednak zechcesz iśc tą drogą, musiałbyś zmienic w nim firmware (cofnąc się ok. 10 lat do tyłu!!!); - tak jak sugeruje załaczony twój link.
    Niemniej jednak na pinach tych nie występuje żaden sygnał zegarowy tak jak sugeruje dalsza częśc twojej wypowiedzi.
    Nie bardzo wiadomo co właściwie chcesz osiągnąc(!)..
    Dwa tygodnie pracy (tak długo ten temat jest tu ‘wałkowany') i efekt tego jest raczej mizerny....
    Nie przemyślany zakup nowych dodatkowych urzadzeń nie wiele tu pomoże, dopuki nie poznasz i nie określisz rzeczywistego problemu. Byc może nie potrzebujesz nic nowego bo już to masz; - a raczej powiedziałbym : ‘z pewnością jest w zasiegu twojej ręki’, tylko ty o tym nie wiesz.
    Zamiast wpadac w panikę i’łapac’ wszystkie napotkane sugestje, radziłbym poznac własny sprzęt i polegac więcej na własnej wiedzy.
    Gdybyś wykorzystał ten, tu spędzony twój czas na przestudiowanie architektury AVR (relatywnie prostej) to byłbyś już expertem w swoim temacie…
    Wracając do samego początku.
    Zacząłeś ten temat od potrzeby wgrania bootloadera do ‘Leonardo’...
    Na jakiej podstawie wysunąłeś taki wniosek?
    Jeżeli dla przykładu: stary samochód nie chce zapalic, to w pierwszym rzędzie będziesz szukał przyczyny w ustawieniu zapłonu(?), albo timingu rozrządu(?), - gdy tymczasem brak jest paliwa.

    Jeżeli nieopatrznie przestawiłeś w Leonardo fusebity kierujące jego zegar taktujący z własnego systemu ( rezonator kwarcowy i reszta układu wbudowana w processorze tworząc kompletny oscyllator) na zewnrzny zegar, to ‘zastępczy’ sygnał taktujacy musisz mu dostarczyc też z zewnątrz!
    Ten zastępczy/tymczasowy sygnał taktujący nie musi byc dokładnie taki sam jak oryginalny (16MHz), moze byc jakikolwiek - aby był...
    Wtedy masz szanse na nawiązanie komunikacji z processorem i odpytac ‘co mu dolega’... Byc może nic poza przywróceniem poprawnych ustawień fusebitów. Tą wiedzę musisz jednak posiadac.
    Zastępczy sygnał taktujący możesz z łatwością utworzyc na każdym processorze konfigurując dowolny timer do pracy w trybie CTC z wyjściem odpowiednim jego architekturze . Program wtedy jest ‘pusty’; żadnych interruptów.
    Inny przyklad, to może znajdzesz w złomie stary timer 555 (kiedyś rewelacyjne urządzenie) i na nim zrobic oscyllator . Albo wykonac astabilny multiwibrator na dwóch inwerterach, albo bramkach logicznych NAND i jeden rezystor , jeden kondensator. Znajdziesz w internecie dziesiątki rozwiązań na taki zastępczy oscyllator.
    Mając ten etap za sobą, z łatwością dokonasz wszelkich manipulacji z każdym processorem (nie tylko ‘LEO’) wykorzystując posiadany od poczatku sprawny USBasp.

    Jezeli jednak w jakikś sposób (?) ‘udało ci się zablokowc’ processor przez edycje fusebitu SPIEN to w tym miejscu tworzy się poważniejszy problem , który może byc tematem na inną okazję...

    e marcus
  • #24
    kiss39
    Level 38  
    emarcus wrote:
    Zacząłeś ten temat od potrzeby wgrania bootloadera do ‘Leonardo’...
    Na jakiej podstawie wysunąłeś taki wniosek?


    To może wrócę do początku i powiem co było powodem napisania tematu. Bawię się dobre paręnaście lat w wirtualne lotnictwo i jakiś czas temu przy wykorzystaniu Arduino Leonardo i Micro Pro (CHIP ATmega 32u4) podmieniłem oryginalną elektronikę w wysłużonym kontrolerze lotu SAITEK X-45 Joysticku i przepustnicy na wyżej opisywane Arduino ATmega 32u4. Wykorzystałem do tego gotową rosyjską aplikacje o nazwie MMJoy-2 "Tworzenie własnego kontrolera przy uzycju Arduino " - MMJoy/MMjoy2 - Set your own USB controller with a cheap Arduino

    Program (własny kontroler) MMJoy-2 to rozbudowana aplikacja wykorzystująca czujniki Halla- bezstykowe potencjometry analogowe/cyfrowe (zamiast tradycyjnych potencjometrów) układy rejesru przesuwnego CD4021/74HC165 rozbudowujące ilość przycisków np. do 64, a jednocześnie redukujące okablowanie do 5 żył - GND, VCC, DataPin, LatchPin, ClockPin.

    [MMJoy-2 ver. 20160818 ]
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera


    Tu jest moj temat i zabawa z kontrolerem Saitek X-45 i próby pisania w jezyku C z wykorzystaniem bibloteki Joystick.h z układami CD4021 i ekspander PCF8574 MMJoy-2 Konfiguracja i wybranie opcji - Arduino LEONARDO Atmega32U4 oraz Arduino - bibloteka Joystick.h, przyciski, Hat i układ 4021.
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera


    Wpadałem na kanał Kurs programowania- #1c Jak napisać swój pierwszy program?
    Tu sie zaczęły problemy myślałem ze jak nie mam ATmegi328 to uda mi sie wgrac programatorem USBasp prosty program w HEX "zaswiecenia LED" do Leonardo ATmega32u4 i cos pomieszałem po ponownym wybraniu zaznaczając w aplikacji ProgISP

    Quote:
    #define F_CPU 1000000UL
    #include <avr/io.h>
    int main()
    {
    DDRD |=1<<0;
    PORTD |=_BV(PD0);
    }


    Dodano po 12 [minuty]:


    Idzie teraz do mnie ATmega328 z potrzebnymi elementami to zaczynam programowanie kontrolerów AVR od podstaw.

    -----------------------------------------------------------------------------*


    Wracając do tematu mam układ NE555P i teraz na tym mozna zbudowac "timer 555"- oscyllator ?

    np. taki https://www.allaboutcircuits.com/tools/555-timer-astable-circuit/
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera

    Dodano po 36 [minuty]:

    Teraz jeszcze trafiłem na artykuł info. Fusebity, czyli konfiguracja mikrokontrolera
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera
  • #25
    kaczakat
    Level 34  
    emarcus wrote:
    Troche błędnie to pojmujesz. W twoim programatorze te miejsca pod piny JP3 nie spełniają żadnej funkcji.
    To tylko ‘legacy’ (spuścizna) po oryginalnej wersji pytki tego programatora.

    U niego akurat spełniają, "nowy" firmware (bo to ten gdzieś > 2011r) nie zwraca uwagi na zworki, bo automatycznie ustawia zegar na podstawie poleceń z programu AVRDUDE, ale u niego jest komunikat "avrdude: warning: cannot set sck period. please check for usbasp firmware update." Jak widać Chińczycy ciągle wgrywają starszy - trzeba sobie samemu wgrać nowszy i wtedy te zworki nie będą potrzebne. Trzeba mieć oczywiście drugi programator, może być zrobiony z Arduino.
    Z podanej w linku dyskusji wyłowiłem Twoje jedno stwierdzenie, że VCC i GND są już na płytce. Jak podłączasz programator do Arduino to możesz zasilić SAMO Arduino z VCC programatora, programator poda kilkadziesiąt mA bez problemu. Możesz też Arduino podłączyć portem USB i zasilić go niezależnie, wtedy nie podłączasz 5V z programatora, ale GND łączysz zawsze.
    Na czas programowania linie SPI nie powinny być podłączone do niczego, np. expanderów bo to może zakłócać komunikację. Trzeba uważać, bo piny są zdublowane, te wyprowadzone na UNO na złącze ICSP to również piny 11,12,13.
    SLOW SCK nie przydaje się generalnie z gotowymi płytkami Arduino, ono zwykle mają zegar już ustawiony na 8 lub 16 MHz, to się przyda z nowym, czystym Atmega328 prosto z fabryki, ustawionym domyślnie na 1MHz lub po jakimś błędnym/świadomym przestawieniu zegara na mniejszą częstotliwość. Stary firmware wymagający zworki też może tu szkodzić, zworka może mieć dwa ustawienia i polecenia typu -B 6 czy -B XYX nie zadziałają.
  • Helpful post
    #27
    emarcus
    Level 38  
    kiss39 wrote:

    Wpadałem na kanał Kurs programowania- #1c Jak napisać swój pierwszy program?
    Tu sie zaczęły problemy myślałem ze jak nie mam ATmegi328 to uda mi sie wgrac programatorem USBasp prosty program w HEX "zaswiecenia LED" do Leonardo ATmega32u4 i cos pomieszałem po ponownym wybraniu zaznaczając w aplikacji ProgISP


    Prawdopodobnie w pierwszej instancji nic nie pomieszałeś, bo taka jest generalna procedura wgrywania jakiegokolwiek programu do processora. Gdyby to był ’surowy’/świerzy processor od dostawcy to by nawet pracowało. Twój Leonardo miał zaprogramowane fusebity (BOOTRST) do pracy z bootloaderem, wpisanym w nie’standardowym’/zwyczajnym miejscu pamięci flash, lecz okupuje specjalne miejsce, którego początek (address) wskazuja bity BOOTSZ1 i BOOTSZ0. Wpisując jakikolwiek program do processora poprzez port SPI godzisz się na wykasowanie całej zawartości flash, oraz lockbitów spełniających protekcję sekcji bootloadera.Nowy wgrany program w normalnej lokacji o addresie 0000 nie wystartuje, bo address startu processora w dalszym ciągu jest określony fusebitami (pozostałośc z poprzedniej konfiguracji) dla bootloadera jako pierwszego uruchamianego programu po Power-UP/Reset. Wykasowanie całej zawartości flash łącznie z bootloderem nie przywraca fusebitów do oryginalnych fabrycznych ustawień. Brak jakiejkolwiek akcji na wpisany program testowy sprawia wrażenie zablokowania processora, gdy tymczasem, brak jest tylko przekierowania addresu startu do lokacji 0000, co zwykle robił bootloader po odczekaniu określonego w nim nie wielkiego przedziału czasu. Szczegóły znajdziesz w odpowiedniej sekcji ‘Kursu Programowania’.
    Byc może kolejne próby doprowadziły do dalszych nie kontrolowanych/nie znanych zmian w ustawieniach fusebitów do tego stopnia że płytka na stan obecny jest nie urzyteczna (oznaczona etykietą ‘do naprawy’).
    Byc może z podobnej przyczyny nie funkcjonuje z przewidywanym efektem ta druga płytka (MicroPro) przeprogramowana na MKII i potrzebuje taką samą etykietę. Tego nie wiem, bo nie śledziłem waszej wędrówki .
    Tu grupowy (‘wszystko wiedzący’) kolega wyprowadzi cię z tego lasu, do którego cie wprowadził.

    kiss39 wrote:

    Wracając do tematu mam układ NE555P i teraz na tym mozna zbudowac "timer 555"- oscyllator ?

    Tak, można, tylko musisz pamietac ze jest to urządzenie analogowe budowane przez wielu producentów z zastosowaniem przeróżnej technologii, a co zatem idzie, niektóre versje pracuję tylko z napięciem 5V (TTL), inne natomiast (CMOS) spokojnie akceptują 15V. Druga rzecz; to maxymalna usiągana częstotliwośc generowanego sygnału. Nie spodziewaj się że zaprojektujesz generator dostarczający Giga-Hertzów, ale ten urzyteczny zakres 1-5 MHz jest zazwyczaj osiągalny i to ci wystarczy. I tu też nie wszystkie są równe sobie....
    Mimo faktu że ten 555 jeszcze 'żyje', to jednak w dzisiejszym czasie lepszym rozwiązanie na tymczasowy zewnętrzny zegar taktujący będzie zastosowanie jakiego-kolwiek taniego processora, na przykład: Att13, nie wymagający dodatkowych obwodów zewnętrznych w porównaniu do 555 (poza nomalnym std. zasilaniem uC.). W zasadzie można powiedziec że i 'programu nie potrzebuje'. Cały program można ograniczyc do konfiguracji timera i skonfigurowania pinu wyjściowego skojarzonego z tym timerem.

    kiss39 wrote:

    To teraz co mam zrobic...jak podąłczyć krok po kroku, bo juz się pogubiłem..

    To zależy nad czym chcesz popracowac...
    Czy przywrócic normalną funkcjonalnośc tych posiadanych płytek (Leo i Micro), czy też kontynuowac znalezione kursy i w wiekszym stopniu polegac na własnej wiedzy,. byc bardziej niezależny od lokalnych 'guru' , którzy sami siebie postawili na piedestał.

    e marcus
  • #28
    kiss39
    Level 38  
    emarcus wrote:
    To zależy nad czym chcesz popracowac...
    Czy przywrócic normalną funkcjonalnośc tych posiadanych płytek (Leo i Micro)
    Tak przywrócić funkcjonalnosc Arduino Leonardo (Atmega 32u4)


    emarcus wrote:
    kontynuowac znalezione kursy
    Spróbowąc z ATmagą 328P ( Kurs programowania- #1- Jezyk C) i będzie to chyba najlepsza opcja nauki.
  • #29
    kiss39
    Level 38  
    Witam

    Ponawiam temat odblokowania Leonardo, rozumiem ze trzeba podać na pin17(XTAL1) sygnał 1-30MHz z generatora jednocześnie przy podłączonym Leonardo (ATmega32u4) w taki sposób jak przedstawia schemat.

    Leonardo ATmega32u4 nie mozna wgrać- bootloadera Leonardo ATmega32u4 nie mozna wgrać- bootloadera

    Zapoznałem się z kilkoma sposobami :
    1. Atmega Fusebit Doctor (HVPP+HVSP) - napraw fusebity
    2. info.post #4 Klon STK500 na ATmega8 i FT232 przystosowany do pracy z Atmel Studio 7
    3. Jak odblokować procesor AVR -
    4. Zablokowany mikrokontroler Atmel
    5. Obliczenei generatora "Timer 555, multiwibrator astabilny - obliczanie częstotliwości

    Ad. 4.
    Przy pomocy układu 555, 74LS04 lub innego mikrokontrolera.

    Quote:
    Zewnętrzny generator
    W niektórych przypadkach da się odblokować układ poprzez podanie przebiegu prostokątnego z dowolnego zewnętrznego generatora na pin XTAL1 mikrokontrolera. Na schemacie obok są przykłady 2 generatorów. Oczywiście zasilanie mikrokontrolera musi być prawidłowe i włączone.
    Rolę zewnętrznego generatora może także pełnić inny mikrokontroler, który zaprogramujesz tak, by generował na jakimś pinie sygnał prostokątny, który podłączysz do wejścia XTAL1 zablokowanego mikrokontrolera tak samo, jak na rysunku.

    Generatorem może być także popularny układ 555, generator na tranzystorach lub laboratoryjny generator funkcyjny.
    Leonardo ATmega32u4 nie mozna wgrać- bootloadera



    Posiadam układ 555 i Pro Micro(ATmega32u4)

    wzór do obliczenia częstotliwości sygnału na wyjściu 555 (1-30MHz)
    f[Hz]=1.49/(R1+R2[ῼ]) x C[F]

    Leonardo ATmega32u4 nie mozna wgrać- bootloadera Leonardo ATmega32u4 nie mozna wgrać- bootloadera


    Załącznik : EdW-7/97, generator układ NE555(19_11.pdf)
  • #30
    kaczakat
    Level 34  
    Jeśli sięgnąłeś po taki generator to zapewne nie masz wolnego uC, bo zrobienie na nim generatora to kilka linijek kodu. A radziłbym zacząć od tego, że podłączasz inny uC pod swój programator, nawet na stykówce jakaś Attiny13 i w ten sposób weryfikujesz, czy programator jest sprawny, sterowniki są OK, wersja AVRDUDE jest zgodna.
    A czasami niestety nic nie pomoże, ostatnio podłączyłem Atmega88 by wgrać kolejną wersję softu, jedyne co to miałem podłączony LED do pinu SCK i padła, padła tak, że nawet programatorem HV równoległym nie szło z nią gadać, wylutowałem hotairem, kosz, wyczyściłem płytkę, wstawiłem inny uC, jeszcze tylko zweryfikowałem czy programator w tym trybie działał OK, działał. I tyle... Nie wiem co było powodem, może podróba bo z Ali, może ten LED, może słabe zasilanie...
    To że chodzi o zegar u Ciebie to tylko jedna z teorii, takie szukanie pod latarnią, bo jeśli to ten problem, to łatwo go rozwiązać. Ale przydałby się ewentualnie jakiś analizator logiczny, który znowu potwierdzi, że jest na pinie generowany jakiś sygnał zegara, inny uC świadomie ustawiony na to źródło zegara, podłączony pod stworzony generator i działający. Zegar nie może być większy niż 16MHz, dla tego AVR to max, a raczej coś w okolicach 4MHz byłoby optymalne. Pozostawiony rezonator raczej też nie pomoże.