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

Klon Arduino - po wgraniu program nie działa.

02 Mar 2019 13:39 678 10
  • Poziom 17  
    Witam wszystkich.

    Zakupiłem klon ARDUINO : Arduino Mega 2560 PRO Embed, AVR ATmega2560 256KB. Prosze o poradę co mi się udało zepsuć że procesor nie wykonuje moich poleceń.
    Opiszę czynności które były wykonane z tą płytką.

    1. Po zasilaniu płytki zdziwiło mnie mruganie diody "L". Z Dtrki wyczytałem że to wyjście PB7. OK.
    2. Po podłączeniu USB chciałem w jakiś sposób wgrać program do procesora. Dodam że pisze tylko w BASCOM. Diody TX/RX mrugnęły mi kilkakrotnie po próbie wgrania softu przez AVRDUDE V.1.0.5. Jako progamator doczytałem że powinno się udać za pomocą STK500v2. Niestety program się zwieszał.
    3. Myślę że po tych próbach dioda led "L" przestała już mrugać nie pamiętam.
    4. Podłączyłem programator USB-ASP przez ICSP za pomocą przejściówki: Adapter 6 pin-10 pin USBasp KANDA ISP AVR i wgrałem program. Okazało się że nie działa.
    5. Po wgraniu najprostszego programiku chciałem sprawdzić leda podłaczonego pod płytkę i nic nie działa.
    Program :

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod






    Czyli według mnie dioda na płytce "L" powinna mrugać a dioda podłączona pod B.0/B.1 powinna świecić a tak się nie stało.
    6. Dodam że z poziomu BASCOMA jak wgrywam wszytko jest OK.
    Komunikacja wydaje się poprawna. Soft porównywałem czy jest wgrany i się zgadza, fusebity odczytuje i zmienia poprawnie, eeprom odczytuje poprawie.

    Zgłupiałem.
    Do tej pory używałem procesorów ATMEGA328 i nie miałem takiego przypadku.
    Czy o czymś nie wiem?
    Proszę o pomoc.

    Wkleje moje fusebity. Starałem się tam dużo nigdy nie zmieniać i nie jestem w tym biegły. Może coś tu nie gra.

    Klon Arduino - po wgraniu program nie działa.
  • Pomocny post
    Poziom 35  
    pawelec5 napisał:
    Witam wszystkich.

    Zakupiłem klon ARDUINO : Arduino Mega 2560 PRO Embed, AVR ATmega2560 256KB. Prosze o poradę co mi się udało zepsuć że procesor nie wykonuje moich poleceń.
    Opiszę czynności które były wykonane z tą płytką.

    1. Po zasilaniu płytki zdziwiło mnie mruganie diody "L". Z Dtrki wyczytałem że to wyjście PB7. OK.
    2. Po podłączeniu USB chciałem w jakiś sposób wgrać program do procesora. Dodam że pisze tylko w BASCOM. Diody TX/RX mrugnęły mi kilkakrotnie po próbie wgrania softu przez AVRDUDE V.1.0.5. Jako progamator doczytałem że powinno się udać za pomocą STK500v2. Niestety program się zwieszał.
    3. Myślę że po tych próbach dioda led "L" przestała już mrugać nie pamiętam.
    4. Podłączyłem programator USB-ASP przez ICSP za pomocą przejściówki: Adapter 6 pin-10 pin USBasp KANDA ISP AVR i wgrałem program. Okazało się że nie działa.
    5. Po wgraniu najprostszego programiku chciałem sprawdzić leda podłaczonego pod płytkę i nic nie działa.


    ‘Dziewicze’ (pierwsze) podłaczenie płytki wskazuje że fabrycznie wpisano tam krótki testowy program wskazujący ze płytka ‘ma się ‘ dobrze!!!

    Byc może że jeszcze nic nie zepsułeś (!?)
    Pracując z płytkami Arduino (różnego wydania i versji) musisz pamiętac że zasadniczą częścią ich funkcjonalności jest wpisany tam bootloader, dla którego są ustawione odpowiednio niektóre fusebity. Jedne – dla jego prawidłowej funkcjonalności, inne dla jego ochrony przed nadpisaniem / wykasowaniem lub częściowym uszkodzeniem.
    Nie będę tu wyjasniał jego dokładniejszej funkcji i zastosowanego ‘mechanizmu’, co możesz doczytac w szeroko dostępnej literaturze i publikacjach.
    Manipulując główne oprogramowanie drogą USB / bootloader nie ma obawy o wprowadzenie błędów, natomiast gdy zaczniesz manipulowac fusebity poprzez ‘zawsze’ aktywny port ICSP (MISO,MOSI,CLK,RST), to możesz nieopatrznie pewne ustawienia zmienic i zarazem zachwiac zaprojektowaną funkcjonalnośc płytki arduino z którą pracujesz.
    Historycznie Bascom (programming i compiler) funkcjonuje na innej platformie niż Arduino, przez co nie były kompatybilne.
    W ostatnich latach wprowadzone poprawki do Bascom , umożliwiają bezpośrednie programowanie płytek Arduino z poziomu Bascom IDE programem tam skompilowanym bez żadnej potrzeby dodatkowych programatorów lub oprogramowania na przykład: USBasp/ AVRDUDE itp.
    Programowanie nowego ‘wsadu’ dokonujedz przez USB, zatem wykorzystujesz bootloader.
    Pewną ‘niedogodnościa’ (?!) wyboru tej drogi komunikacji jest brak możliwości wglądu i manipulacji fusebitami.
    Z tego też powodu podłaczanie zewnętrznego programatora do portu ICSP winno byc ograniczone dla znanych i konkretnych powodów. Z reguły nie ma potrzeby !!!!
    Pierwsze co możesz zrobic to oszacowac w jakim stanie jest oryginalny soft i konfiguracja twojej płytki.

    Jeżeli chcesz pozostac przy Bascom to: (będzie to tym razem dośc długi process !!!; - wszak analizujesz problem).

    1. Przy podłaczonej płytce do dowolnego portu USB, odczytaj w Device Manager numer portu COM(x) pod którym ja ‘widzi’ Windows (zakładam, że jest to Windows?).
    2. W Bascom IDE otwórz Options > Programmer – tu w zakładce ‘programmer’ wybierz z listy ‘Arduino’, oraz wyedytuj tam paramery; Port COM (ten odczytany) i BAUD - wybierz 115200.
    3. Powróc do Bascom IDE i kliknij na strzałkę (w dół) przy icon ‘Programming’ – bez obawy (!), na razie nic nie programujesz i nie zawsze to potrzebne...; -wybierz ‘ Manual Programming’
    4. Zapoznaj się dokładniej z otwartym oknem, co zawiera, i jakie parametry sa możliwe do wyboru. W głownym oknie i w zakładce ‘flash’ masz treśc przygotowanego/aktualnie skompilowanego programu do wpisania znajdującego się jeszcze w bufferze compilera Bascom IDE ; nie jest to zawartośc tego co jest w chip na płytce (!).
    5. W otwartym oknie wybierrz zakładkę ‘Chip’ > Identify.
    6. Tu winieneś otrzymac poprawkę w ramce :chip zamiast [???] - rozpoznany mxxxx. Jeżeli to nie nastąpi to masz problem z komunikacją ( byc może driver), bądź z konfiguracją.
    7. Po poprawnym rozpoznaniu processora - [m2560], otwórz w głównym menu zakładkę ‘Buffer’ i kliknij na ‘Clear’ - wszystko powinno byc: FF,FF, FF, ......-itd.
    8. Teraz czas dowiedziec się co jest w processorze..... (?)
    9. Wybierz ponownie w menu: zakładkę ‘chip’ > ‘Read chipcode into Buffer’; troche to potrwa....., w wyniku otrzymasz całą zawartośc pamięci flash twojej płytki włącznie z bootloaderem.
    Tu masz pełny wgląd do rozkładu całej pamięci flash z podaniem addresów dla kazdego bajtu tam wpisanego.
    Na poczatku, od addressu zerowego w dół, znajdziesz aktualny program jakikolwiek tam rezydyje, scroluj dalej, będzie duży obszar pusty (FF, FF, FF ..FF...)
    Scroluj dalej jeszcze, az wreszcie znajdziesz address początku wpisu i treści bootloadera.
    Będzie to ostatnia sekcja pamięci flash.
    Addressy i zajętośc pamięci winny byc zgodne z teoretycznymi rachunkami wg datasheet tego processora.
    Da ci to pewnośc ze bootloder nie został przypadkowo wykasowany bądź skorumpowany.

    Jeżeli zechciałbyś wpisac aktualnie skompilowany program, to powróc do p. 3 z aktualnym programem w buffer; - kliknij na zakładkę: ‘chip > write buffer into chip.
    To powinno wystarczyś ... na razie...

    e marcus
  • Pomocny post
    Poziom 35  
    Z tego, co pamietam, nie w każdej wersji Basoma działała tak napisana konfiguracja.
    Może spróbuj zamiast tego:

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod



    czegoś takiego:

    Kod: vbnet
    Zaloguj się, aby zobaczyć kod


    Dodano po 3 [minuty]:

    emarcus napisał:
    Pracując z płytkami Arduino (różnego wydania i versji) musisz pamiętać że zasadniczą częścią ich funkcjonalności jest wpisany tam bootloader

    Kolega autor już skasował bootloader. Jeśli będzie potrzeba użycia tego badziewnego bootloadera, zawsze można go wyciągnąć z folderu instalacyjnego programu Arduino IDE.

    Myślę jednak, że mając programator ISP, korzystanie z bootloadera to niepotrzebna zabawa. Przy pracy z programatorem ISP trzeba będzie jednak zmienić fusebit: "Fusebit High M".
  • Poziom 17  
    Ture11 napisał:
    Kolega autor już skasował bootloader. Jeśli będzie potrzeba użycia tego badziewnego bootloadera, zawsze można go wyciągnąć z folderu instalacyjnego programu Arduino IDE.

    Myślę jednak, że mając programator ISP, korzystanie z bootloadera to niepotrzebna zabawa. Przy pracy z programatorem ISP trzeba będzie jednak zmienić fusebit: "Fusebit High M".


    Strzał w 10. Wszystko się zgadza. Bootloader skasowany. Według instrukcji emarcus na punkcie 6 się zatrzymałem z błedem.
    Fusebit High M zmieniłem i program wystartował. Domyślam się za co on może odpowiadać ale poproszę jeszcze o parę fachowych słów wyjaśnienia za co rzeczywiście jest on odpowiedzialny. Może pomoże to kiedyś innym.

    Dziękuję za pomoc Panowie Ture11 i emarcus
    P.S. Próbowałem znaleźć bootloader aby go wgrać ponownie ale chyba sobie odpuszczę.
  • Poziom 35  
    Cytat:
    Fusebit High M zmieniłem i program wystartował. Domyślam się za co on może odpowiadać ale poproszę jeszcze o parę fachowych słów wyjaśnienia za co rzeczywiście jest on odpowiedzialny. Może pomoże to kiedyś innym.


    Wektor restartu - czyli określenia miejsca, w którym ma zacząć się program po restarcie.



    pawelec5 napisał:
    P.S. Próbowałem znaleźć bootloader aby go wgrać ponownie ale chyba sobie odpuszczę.


    Mój błąd; bootloader do wersji Arduino UNO jest tutaj: Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot, jednakże dla MEGA2560 nie znalazłem go w plikach Arduino.
  • Poziom 35  
    [quote="Ture11"]
    Cytat:

    bootloader do wersji Arduino UNO jest tutaj: Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\optiboot, jednakże dla MEGA2560 nie znalazłem go w plikach Arduino.


    Jest tu:
    Klon Arduino - po wgraniu program nie działa.
    Chociaż nie jest konieczne znanie tej ściezki, bo przywracając bootloader stosując metodę z poziomu Arduino; cała procedura jest ujęta w pliku boards.txt co ustawi poprawnie wszystkie pozostałe fusebity poza tym bitem (M), które są istotne dla poprawnej funkcjonalności i zabezpieczenia bootloadera przed jego wykasowaniem. Mozna oczywiście 'wypalic bootloader' zwyczajnie, tak jak wgrywamy każdy inny program, lecz przy tym nalezy dodatkowo poustawiac pozostałe fusebity; obszaru bootloadera i lockbity w odpowiedniej kolejności co nie jest aż tak trywialne.

    e marcus

    Dodano po 13 [minuty]:

    [quote="pawelec5"]
    Ture11 napisał:
    . Wszystko się zgadza. Bootloader skasowany. Według instrukcji emarcus na punkcie 6 się zatrzymałem z błedem.
    Fusebit High M zmieniłem i program wystartował. Domyślam się za co on może odpowiadać ale poproszę jeszcze o parę fachowych słów wyjaśnienia za co rzeczywiście jest on odpowiedzialny. Może pomoże to kiedyś innym.

    Twoja wypowiedź jest troche nie dokładna.
    Zmieniłeś fusebit 'M' na jaką wartośc (?) i który program wystartował?

    e marcus
  • Poziom 17  
    Witam.

    emarcus napisał:
    Twoja wypowiedź jest troche nie dokładna.
    Zmieniłeś fusebit 'M' na jaką wartośc (?) i który program wystartował?


    fusebit M był ustawiony jako : Reset vector is bootloader
    Zmieniłem go na : Reset vector is $0000
    Kolega Ture11 uświadomił mnie dlaczego tak powinno być.

    Po tej zmianie wgrany soft do uC uruchamia się poprawnie.

    Próbowałem wgrać bootloader za pomoca AVRdude i USBASP ale zakończyło sie to niepowodzeniem.
    Nie wiem czy do wgrania trzeba zmieniać fusebity czy coś wpisywać w COMMAND LINE OPTION.

    Fusebity odczytuje czyli komunikacja jest.

    Po próbie wgrania otrzymuje taki komunikat.

    Klon Arduino - po wgraniu program nie działa.

    Kiedyś wgrywałem bootloader do A644p i tam musiałem ustawić fusebity według instrukcji.

    10. Sprawdzamy czy w oknie hFuse mamy wartość D0 (D zero) oraz w lFuse EF. Jeśli tak to
    przechodzimy do następnego kroku. Jeśli natomiast są tam inne wartości to należy wpisać
    odpowiednio D0 i EF w okna hFuse i lFuse a następnie wcisnąć przycisk Write obok okienek, w
    ktĂłrych zmienialiśmy wartości.


    Nie jestem biegły w fusebitach tak że nie chcę na własną prośbę zablokować procka.

    Dziękuję za zainteresowanie.
    Pozdrawiam.

    Dodano po 1 [godziny] 17 [minuty]:

    Udało się wgrać bootloader.
    Na USBASP przełączyłem zworkę na slow programming i wgranie bootloadera trwało 26min ale z efektem pozytywnym.

    W BASCOM jako programator poprawnie działa ARDUINO STK500V2. Prędkość 115200.
    Niestety fusebitów nie da się tą drogą zmienić.
  • Poziom 35  
    pawelec5 napisał:
    fusebit M był ustawiony jako : Reset vector is bootloader
    Zmieniłem go na : Reset vector is $0000
    Kolega Ture11 uświadomił mnie dlaczego tak powinno być.


    To też jest ciekawa sprawa, bo dałbym głowę, że na m328p nie trzeba było tego przełączać, a procesor uruchamiał kod. Z m2560 nie miałem jednak większych doświadczeń jeszcze.

    Dodano po 1 [minuty]:

    pawelec5 napisał:
    Próbowałem wgrać bootloader za pomoca AVRdude i USBASP

    Mogłeś też wgrywać poprzez interfejs Bascoma, jak dla mnie jest najbardziej przyjazny. Błąd jednak miałbyś tak czy inaczej. Nie jestem pewien, co się stało, ale USBasp idealny nie jest, więc może przybrakło mu zasilania lub wdarły się zakłócenia na linie interfejsu.
  • Poziom 35  
    ditomek napisał:
    gdzieś w internetach znalazłem niewielki program xloader.
    pozwala załadować dowolne arduino dowolnym hexem.
    U mnie działo. Pisałem w bascomie i wrzucałem xloaderem.


    Xloader jest dla tych co na słowo 'Bascom' dostają alergii na skórze, albo przynajmniej głębokiego kaszlu (!!!!) z tytułu nieuzasadnionej nienawiści do tego środowiska.
    Niektórzy maja podobne patologiczne objawy w odniesieniu do 'Arduino' .

    Jeżeli już masz zainstalowany Bascom, to wyjątkowo łatwo wpiszesz do arduino każdy już skompilowany plik nie ważne czy to jest: *.hex, cz też *.bin; nawet nie musi to byc kompilacja z Bascom. Istotne jednak aby była zgodnośc processora. Nie możesz na przykład: wpisywac do arduino z processorem zwykle m328p, programu kompilowanego pod powiedzmy mega 2650 lub podobna rozbieżnośc architektury .

    Procedura jest trywialnie prosta !!!; - dlatego nawet nie będę jej opisywał.

    e marcus
  • Poziom 21  
    Pisałem kiedyś sporo w bascomie i chciałem to jakoś przerzucić na arduino MEGA.
    Dzisiaj piszę w bascomie i Arduino. Nie narzekam. Jakoś sobie radzę. Brak oznak alergii :-)
    Ale wtedy jeszcze eksperymentowałem i znalazłem w necie tego Xloadera.
    Autor wątku miał problem wiec starałem się choć trochę pomóc. Dlatego umieściłem post z informacja o Xloaderze.
    Nie zrozumiem do końca twojej uwagi. Napisałem coś głupiego? :-)